Linux14天入门丨老男孩IT教育

虚拟机的安装所需要的软件
1.VMware Workstation Pro
2.CentOS7
3.Xshell7(可有可无)
linux虚拟机的安装
1.创建新的虚拟机
2.典型(高手选自定义)
3.稍后安装操作系统
4.客户安装系统:linux
5.版本:Red Hat Enterprise Linux 7 x 64
6.虚拟机名称自定义
7.位置自定义
8.硬盘大小默认即可
将虚拟磁盘拆分成多个文件
9.编辑虚拟机设置
10.CD/DVD(SATA)
11.使用ISO映像文件下,地址为CentOS7的路径
基本设置
CPU的总数不能超过宿主机的总数
虚拟机的内存不要超过物理内存数量
硬盘分为虚拟文件和本地磁盘,建议虚拟文件,方便备份与迁移
网络设置
桥接:虚拟机网络和真机在同一网格,虚拟机与真机设置同一个ip
NAT(网络地址转化):虚拟机上网需要真机辅助才能使上网,虚拟机待定网络,上网走NAT模式,就是说虚拟机把数据包传给真机,真机经过处理后再发出去,然后再回来。
局域网模式:在真机上创建一个局域网,把所有的虚拟机放到局域网里运行即可,但是不能上外网。
快照管理
快照就是虚拟机的还原点,也就是说虚拟机运行到一个阶段后保存一个快照,如果下次虚拟机坏了可以还原到之前的这个点,快照可以新建恢复与删除,相当于存档。

克隆
克隆的好处就是只要点一下克隆就会直接复制出一个虚拟机,一个是虚拟机克隆一个是快照克隆。
点击虚拟机(M),点击管理(M),点击克隆(C),可以从当前虚拟机的状态或快照状态克隆,链接克隆是对原始虚拟机的引用,相当于一个链接方式,用处不大,好处是占用空间少,要想一个虚拟机用作两个虚拟机使用就选完整克隆。克隆可以让我们短时间内拥有大量的虚拟机。
开启虚拟机后
Install CentOS7 是指安装Centos 7系统
Test this modia & install CentOS 7 是指测试光盘并安装CentOS 7系统(不放心的话可以测试一下)
Troublesshooting 是指故障修复系统
下载语言建议选择中文
系统里有个安装位置(D)点进去之后再退出即可,退出之后就看到感叹号消失,里面可以选择自动分区与手动分区,新手建议之间选自动分区,如果不是新手选择手动分区,那么点击后完成会进入手动分区的界面,先建立一个200M的/boot,boot是用来放启动文件的,这个是标准分区,xfs。然后再建立一个4个G的swap,是虚拟内存,一般来说是内存的二倍,并不能当真是内存。再创建一个/,这个是根,剩下的容量都给这个根。然后点完成后接受更改。
软件选择(S)是图形界面,对于新手而言建议安装,初学者建议选上里面的待GUI的服务器。
KDUMP是内核崩了的时候会把崩的信息存储再这里,不太需要,关闭即可。
网络的主机名是用来设置IP地址的,主机名自定义,可以设置为:node1.jesus.com,在配置里可以取手动设置速度,也可以选择忽略让他自己取运算,然后点击IPv4去添加IP地址,纯小白直接点击自动(DHCP)。不断开链接,点打开。
安全链接也可以关掉。
然后设置ROOT密码,最低六位,自己设置。
VMware Tools种包含一系列服务和模块,可以在使用VMware Tools产品种实现多种功能,从而使用户更好地管理客户端,如果安装的linux版本是7,那么就自动安装上了。7以下的版本需要自己手动安装。
如何判断自己是否安装了VMware,可以通过在linux桌面上创建一个文件夹,测试是否可以从虚拟机上拖到windows上。同时也可以从windows上拖到linux上。或者单机虚拟机会看到重新安装VMware tools
linux可以用圖形界面也可以用文本界面
linux有兩種圖形界面,一種叫Gnome,一種叫KDE
個人版的linux一般是圖形界面,服務器一般而言是文本界面,因爲服務器連顯示器都沒有,且圖形界面比文本界面更加浪費資源。
文本界面友好度比較差,上手的話需要懂得linux命令、命令行操作、節省資源。
前期建議小白先使用圖形界面,熟悉了之後再選擇文本界面。
界面切換(圖形界面與文本界面的切換)

圖形頁面也提供了輸入命令的接口,也就是終端。
終端:用戶和計算機進行命令交互的窗口,類似於windows cmd窗口
【儅發現輸入密碼進入不了,思考一下自己的密碼是否有數字,在linux的終端下默認小鍵盤是關閉狀態,無法使用小鍵盤】
ctrl + l 清屏
確保計算機有網:ping +網站
照貓畫虎環節:
yum grouplist
yum -y groupinstall "KDE Plasma Workspaces"
KDE的桌面(原來那個桌面叫Gnome桌面)

linux目錄介紹(設計思想)
linux認爲程序應該是小而專一,程序儘量小,且只專注於一件事情上。
程序不要考慮性能,程序的可移植性更重要。
一切皆文件,盡量使用文本來存儲數據,避免使用二進制文件,因爲文本文件可讀性強,且已經有很多工具來處理,eg:awk,sed,grep等
每個程序都成爲過濾器,程序需要與其他工具一起配合使用,管道的支持是非常重要的
任何的程序都需要考慮被批處理執行。盡量避免强制用戶交互或界面
linux常用目錄介紹(類似於倉庫)
boot 存放啓動文件
dev 存放設備文件(光驅、硬盤)
etc 存放配置文件
home 普通用戶家目錄,以/home/$userbane的方式存放(eg:張三,home下的張三,李四,home下的李四)
opt 三方軟件安裝目錄(類似於windows下的c盤)
proc 内存系統文件
root 管理員家目錄
run 裏賣弄的東西是系統運行時需要的,不能隨便刪除,但是重啓的時候應該抛棄,下次系統運行時重新生成
tmp 臨時文件夾(類似於回收站,有一個特殊屬性,誰放的誰刪,大家都可以往裏放)
usr 存放庫文件、文檔、命令、用戶數據等
var 日志存放
lib 庫文件
media 移動存儲自動挂載目錄,以/media/$device_name的方式來存放
mnt 手動挂載記錄
Linux命令格式
命令[命令選項][参数]
eg:ls -a /tmp 等价于 ls --all /tmp
ls 是命令 -a是命令选项,简写用-,全写用--(多个命令的情况下可以共用一个减号) /tmp是参数
命令选项有两种写法,一种是简写,一个-加上首字母就好,全写是两个-,加上全称
命令选项和命令,命令选项和参数之间要加空格
linux命令分为:
内部命令:内部命令linux内核自带的,执行效率高
外部命令:外部命令需要安装以后才能使用,但是系统默认已经为你安装了很多外部命令供大家使用
使用type命令来区分命令是内部还是外部命令:
[jesus@node1 ~]$ type type
type 是 shell 内嵌
[jesus@node1 ~]$ type ls
ls 是 `ls --color=auto' 的别名
[jesus@node1 ~]$ type clear
clear 是 /usr/bin/clear
[jesus@node1 ~]$ type open
open 是 /usr/bin/open
如果反馈是shell内嵌,那就是内部命令,如果不是则是外部命令。(使用率低,作参考时会用到)
外部命令放在那里呢?
echo 是打印输出的意思,外部命令在/usr下
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
区别:bin的命令任何人都可以使用,sbin的命令称为特权命令,只能管理使用
linux基本命令
1.清屏命令:clear 快捷键:ctrl + l
2.帮助命令:man
3.进入文件夹命令:cd
4.列出当前目录内容命令:ls [-a -l -d]
5.显示主机名:hostname
6.显示日期时间:date [-s %F]
7.显示日历:cal
8.计算器:bc
9.重启命令:reboot
shutdown -r (管理员才能用)
init 6 (管理员才能用)
10.注销命令:logout
11.关机命令:halt
shutdown -h (管理员才能用)
init 0 (管理员才能用)
12.显示当前操作系统和机器的信息:uname
13.显示当前路径:pwd
黑色的代表文件
蓝色的代表文件夹
绿色的代表可执行文件
ls -F 文件后加/显示
ls -x 按水平对齐方式列出档案
ls -m 以","隔开档案
ls -t 按时间排序档案
ls -a 显示隐含档案
ls -l 显示详细信心,此命令等同于ll
ls -d 显示目录而不是其内容
ls -h 以K、M、B的形式进行显示
用date可以来查看时间
用cal可以查看年月(查看某一年的月时月在前,年在后) cal 10 1582
用uname显示系统
用uname显示完整的系统
用bc来打开计算机进行计算
用exit来退出
文件管理
新建:touch命令
删除:rm命令
改名:mv命令
查看:ls命令
touch命令
新建文件和修改文件或者文件的时间戳
语法命令:touch 【选项】 【文件名】
touch的两个作用:一个是创建文件,一个是修改文件的3Time
eg:创建一个名为123的文件(创建多个文件用空格隔开)
[root@node1 桌面]# touch 123 456 789
[root@node1 桌面]# ls
123 456 789
创建的文件在Linux是如何存储的呢?
两部分,文件的源数据存在i节点(indoe)里,文件的数据存在block块上,我们可用通过stat查看存储的数据。
三Time分别为atime mtime ctime
最近访问:2021-09-22 21:50:53.049080097 +0800
最近更改:2021-09-22 21:50:53.049080097 +0800
最近改动:2021-09-22 21:50:53.049080097 +0800
atime是最近访问。当我们打开这个文件后,最近访问就会更新成你打开的那个时间点。
可以用gedit来打开123这个文件,gedit是个图形编辑器,类似于windows里的文本框。
最近访问:2021-09-22 21:58:35.761088373 +0800
最近更改:2021-09-22 21:50:53.049080097 +0800
最近改动:2021-09-22 21:50:53.049080097 +0800
此时可以发现atime发生了改变,这就是atime。
mtime是最近更新。在123这个文件里加入文字,文件的内容是发生了变化,也就会导致mtime变化。
最近访问:2021-09-22 22:05:40.111550184 +0800
最近更改:2021-09-22 22:05:40.114550146 +0800
最近改动:2021-09-22 22:05:40.115550134 +0800
ctime是最近改动。文件发生变化,i节点就会发生变化,i节点发生变化ctime就会放生变化。例如我们修改文件的名字,i节点就会发生变化。
最近访问:2021-09-22 21:58:35.761088373 +0800
最近更改:2021-09-22 21:50:53.049080097 +0800
最近改动:2021-09-22 22:02:37.396881982 +0800
找到123这个文件右击改名后观察ctime的值会发生变化。
此时我们发现不仅mtime发生变化,ctime和atime都发生了变化。因为输入了内容之后文件的大小发生了变化,所以i节点也发生了变化,所以ctime也发生了变化,而修改文件需要打开文件,所以文件的atime也发生了变化。
touch的命令选项
- a会修改文件的access(访问)时间
eg: touch -a mini
- c不会创建不存在的文件
eg: touch -c mini
- d使用指定的时间,而非现在的时间,可以修改3time的年月日。但是不能修改ctime,因为你动人家的mtime和atime了。
eg: touch -d 2018-10-10 mini
- m指定更改时间(将更改时间,也就是将mtime恢复当前时间)
eg: touch -m mini
- ffile使用指定file文件的时间戳(相当于复制,只复制时间,不复制内容)
eg: touch -f mini hope
- t将时间修改为参数指定的日期(注意没有年份)
eg: touch -t 01290700 mini
刪除文件:rm命令
命令语法:rm name...
命令选项:-i 删除前逐一询问确认
[root@node1 桌面]# rm -i 456
rm:是否删除普通空文件 "456"?y
-f 即使原档案属性设为只读,亦直接删除,无需逐一确认
[root@node1 桌面]# rm -f 789
-r 将目录及以下之档案亦逐一删除
文件改名:mv命令
mv old_file new_file
[root@node1 桌面]# mv hope viper
文件查看
- 普通文件
[root@node1 桌面]# ls -l
总用量 4
-rw-r--r--. 1 root root 0 9月 22 22:26 01290700
-rw-r--r--. 1 root root 0 9月 22 22:19 2011-8-5
-rw-r--r--. 1 root root 0 9月 22 22:18 2059-8-5
-rw-r--r--. 1 root root 20 9月 22 22:30 mini
-rw-r--r--. 1 root root 0 9月 22 22:26 t
-rw-r--r--. 1 root root 0 9月 22 22:23 viper
d 目录
l 链接文件
[root@node1 /]# ls -l
总用量 32
lrwxrwxrwx. 1 root root 7 9月 21 16:39 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 9月 21 16:49 boot
drwxr-xr-x. 20 root root 3340 9月 22 22:41 dev
drwxr-xr-x. 149 root root 12288 9月 23 23:07 etc
drwxr-xr-x. 3 root root 19 9月 21 17:36 home
lrwxrwxrwx. 1 root root 7 9月 21 16:39 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 9月 21 16:39 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 9月 21 16:43 opt
dr-xr-xr-x. 273 root root 0 9月 22 21:43 proc
dr-xr-x---. 19 root root 4096 9月 22 21:50 root
drwxr-xr-x. 44 root root 1340 9月 23 23:09 run
lrwxrwxrwx. 1 root root 8 9月 21 16:39 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 9月 22 21:43 sys
drwxrwxrwt. 25 root root 4096 9月 23 23:08 tmp
drwxr-xr-x. 13 root root 155 9月 21 16:39 usr
drwxr-xr-x. 21 root root 4096 9月 21 22:07 var
b 设备文件(dev下:实实在在存在的设备,硬盘)
c 字符设备(在dev文件下,虚拟设备)
s 套接字文件
p 管道文件
linux文件颜色意义
绿色文件:可执行文件,可执行的程序
红色文件:压缩文件或者包文件
[root@node1 桌面]# ls
01290700 2011-8-5 2011-8-5.tar.gz
2059-8-5 mini t viper
蓝色文件:目录
白色文件:一般性文件,如文本文件,配置文件
浅蓝色文件:链接文件,主要是使用ln命令建立
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件
移动(mv)
文件移动
命令语法:mv 源文件或目录 目标文件或目录(如果目标是系统中的某个目录,则执行移动,如果目标是不存在的目录,则执行改名)
命令选项
-b:若需覆盖文件,则覆盖前先行备份。
[root@node1 桌面]# touch mom
[root@node1 桌面]# cd family
[root@node1 family]# touch mom
[root@node1 family]# cd ..
[root@node1 桌面]# mv -b mom family
mv:是否覆盖"family/mom"? y
[root@node1 桌面]# cd family
[root@node1 family]# ls
mom mom~
-i :若制定目录已有同名文件,则先询问是否覆盖旧文件。
[root@node1 family]# ls
dad daughter daughter~ mom mom~ son
[root@node1 family]# cd ..
[root@node1 桌面]# ls
family
[root@node1 桌面]# touch dad
[root@node1 桌面]# mv -i dad family
mv:是否覆盖"family/dad"? y
[root@node1 桌面]# cd family
[root@node1 family]# ls
dad daughter daughter~ mom mom~ son
[root@node1 family]#
-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
[root@node1 family]# touch son
[root@node1 family]# cd
[root@node1 桌面]# touch son
[root@node1 桌面]# mv -f son family
[root@node1 桌面]# cd family
[root@node1 family]# ls
dad mom mom~ son
[root@node1 family]# cd ..
[root@node1 桌面]# ls
family
-u :若目标文件已经存在,且source比较新,才会更新(不仅根据mtime,还根据ctime)
拷贝(cp)
命令语法:cp 源文件或目录 目标目录
-a 复制目录时使用
-d 复制时保留链接
-f 复制已存在的目标文件而不该出提示
-i 与 -f选项相反,在复制已存在的目标文件该处提示
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r 若给出的源文件是一个目录文件,此时将复制改目录下的所有子目录和文件
-l 不复制文件,只是生成链接文件
查看文件的内容
文件查看的命令:cat head tall
cat命令用于链接文件并打印到标准输出设备上,会把所有的文件内容输入到内存,再输出到屏幕上
命令语法:cat 命令选项 对应文件名
常用命令选项:/n:每一行加行号
/b:对于每一行的空行也加行号
head命令用于输出文件的开始部分,cat打印文件的所有内容到屏幕,而head打印文件的前一段文字到屏幕(不规定行数的情况下默认10行)
命令语法:head 命令选项 对应文件名
常用命令选项:/n:打印行数
[root@node1 etc]# head -3 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@node1 etc]# head -n1 passwd
root:x:0:0:root:/root:/bin/bas
tail命令用于打印文件的末尾部分(不规定行数的情况下默认10行)
命令语法:tail 命令选项 对应文件名
常用命令选项:/n:打印行数
/f:循环读取
/-n + x:从第五行开始打印到最后
目录的创建 mkdir
命令语法:mkdir 选项 目录名
命令选项:-v:显示信息(说白了就是告诉你一声已经创建了目录
-p:递归创建(创建目录下的目录一个一个地创建。
[root@node1 桌面]# mkdir -pv water/a/b/c
mkdir: 已创建目录 "water"
mkdir: 已创建目录 "water/a"
mkdir: 已创建目录 "water/a/b"
mkdir: 已创建目录 "water/a/b/c"
文件的删除 rmdir 删除空目录
命令语法:rmdir 选项 目录名
命令选项:-p 递归删除空目录
-v:显示信息
[root@node1 桌面]# rmdir -pv water/a/b/c
rmdir: 正在删除目录 "water/a/b/c"
rmdir: 正在删除目录 "water/a/b"
rmdir: 正在删除目录 "water/a"
rmdir: 正在删除目录 "water
VIM介绍
gedit是图形界面下的文本编辑器(eg:gedit a.txt)
vim编辑器:它可以执行输出、删除、查找、替换、块操作等众多文本操作。(类似于winodws上右击新建创建写字板)
vim编辑器
命令模式:用户可以输入命令来进行文件存盘、移动光标、删除字符、撤销命令和重复命令等操作,还可以设置vim的编辑环境
插入模式:用来编辑文档,可以删除字符,插入字符。
末行模式:可以进行文件的保存、退出vim、进行查找和替换等操作
替换模式:替换字符

vim使用的格式就是命令+文档
默认的情况下打开文档后光标会停在行首
上下左右分别是k z h l,也可以用小键盘的上下左右
光标回到行首:gg
光标移到末位:G
光标移动到本行末位:end
光标移动到本行开头:home
保存退出:ZZ
粘贴复制:复制一行 yy复制n行,nyy
粘贴 p
删除
删除字符x向后删除X向前删除
删除一行 dd ndd
删除一个单词 dw
撤销
撤销操作 u 向上一步,重复上一次操作
查找
查找(使用斜杠加要查找的内容)/string define \ 转义字符 查找 “/bin/bash”/VbinVbash
用户和组
在linux下有三种用户:root、系统用户、普通用户
(系统用户UID小于1000,普通用户UID大于999。普通用户权限较小,可以登录)
组:其实就是一个用户容器,用来装用户的,无特殊意义
默认情况下,新建用户的同时,系统会创建一个同名组装载该用户
在linux中的每个用户必须属于一个组,不能独立于组外
在linux中每个文件所有者、所在组、其他组的概念
管理员组 普通组
用户是用来登录和管理系统的



