第二节
Linux命令
一.基础命令
我们使用的该系统,一般都是使用命令来操作的,所以我们要先学会打开输入命令的终端
直接在桌面点击鼠标右键,选择“在终端中打开”
如果是纯文本模式的话,登陆系统后就可以了!
既然有了系统和终端,我们就需要命令去控制系统做我们想要做的事情,那么命令该如何使用呢?
简单命令:
pwd --查看当前所在目录
[root@qianyun ~]#pwd
/root --当前所在的目录
既然我们知道如何查看当前所在目录,那我们就需要知道如何切换目录对吧,不能总在一个目录里头待着。
cd --切换目录命令
[root@qianyun ~]#cd /etc --切换到根目录下的etc目录
[root@qianyunetc]# pwd
/etc
大家可能会问,/etc代表的是什么东西呢?etc就是一个目录(文件夹)。我们上面的命令就是从一开始的/root目录切换到了/etc目录。
[root@qianyun ~]#cd --直接使用命令cd,后面不加任何参数,表示直接返回到用户的家目录。
(家目录:每一个用户都有一个属于自己的目录,除root用户外,其它用户都只能进入自己的家目录,好比是我们自己的家一样,除非经过主人的同意,否则是无法进去别人家的)
[root@qianyun ~]#cd - --在上一次工作的目录和当前目录之间切换
[root@qianyun ~]#cd .. --返回上一级目录
[root@qianyun ~]#cd ~ --返回root用户家目录(仅限root用户使用)
[root@qianyun ~]#cd ~abc --返回指定用户家目录(仅限root用户使用)
说到这里,我想很多人都不明白路径的原理
路径分为两种:
打个比方,我们可以把文件系统想成我们的家里一样。根目录(/)相当于我们的房子整体,我们的所有东西都要放到房子里面,每个人都有属于我们个人的房间,相当于我们系统上的家目录,当然也不能完全相比,因为有的人家里是几个人同时住一个房间,每个房间里面都放了不同的东西,相当于我们的文件,目录也是一种文件,至于为什么是文件我们后期在讲,我们家里除了普通物品是不是还有衣柜什么的装东西的容器吧,这个就相当于我们的子目录。cd就相当于我们开门,我要进入一个目录就需要打开一扇进入房间的门,如:cd /etc就相当于我们进入了名叫/etc的这间房间,这样呢我们就可以解释清楚什么是相对路径和绝对路径了。
(/)根目录
|
etc home var
| | |
bin abc *
该系统使用的是EXT4,形式类似于树状结构,根目录是该文件系统的顶级目录,所有的东西都放在根目录里面的。
绝对路径:绝对路径格式“/etc/sysconfig/network-scripts/ifconfig-eth0”
相对路径:相对路径格式“sysconfig/network-scripts/ifconfig-eth0”
大家都思考一下上面的路径特点和区别在哪里?
命令及选项的使用格式:
上面我们已经说到了如何查看我们所在的目录和如何切换目录,下面我们要做的如何查看目录里面的内容:
ls 命令 --(list,列出)列出当前目录下的内容
# ls /etc --列出指定目录/etc的内容
:注意,命令与参数之间必须有一个以上的空格,否则系统会报错!
# ls -l /etc --命令,选项,参数之间也必须有一个以上的空格。
“ls“为命令“-l”为选项“/etc“为参数(文件或路径),命令必须是小写的英文字母。
“选项”的作用是“修正命令的输出方式”
既然我们学会了查看目录和目录里面的内容,那么我们该如何创建目录和普通文件呢?
# mkdir --创建目录命令
# mkdir abc --在当前目录创建一个abc目录
# mkdir aaa bbbccc --在当前目录创建多个目录
# mkdir /opt/eee --在opt目录下创建一个eee目录
# mkdir -pa/b/c/d/ --创建多级目录(创建后效果:/a/b/c/d)
创建多级目录如果不加p参数会报错
# touch --创建普通文件
# touch 1 --创建一个名为1的普通文件
# touch 2 3 4 5 --同时创建多个普通文件
# touch {1..10} --同时创建以1到10顺序命名的10个普通文件,中间的.只能有两个。
# touch{1..100}.php --创建100个以.php结尾
我们既然会创建文件和目录,那我们就必须要在文件内部输入内容才有用对吧!接下来我们讲解一个文本编辑器的使用方法!
vim 命令 --文本编辑器
# vim 1 --直接打开1这个文件进行文件的查看和修改
注意:我们刚使用这条命令打开一个普通文件的时候是无法进行操作的!
vim 编辑器的三种模式:
1.普通模式 --我们刚使用vim编辑器打开一个文件的时候就处于普通模式,在此模式下只能查看文件内容,无法进行修改
2.编辑模式 --要想进入编辑模式我们需要在经过以下几个按键后才能进入编辑模式:
1.i 小写的字母i >大写的I
2.a 小写的字母a >大写的A
3.o 小写的字母o >大写的O
3.命令模式(也叫末行模式) --通过输入: / ?进入该模式
如果编辑完成后需要退出编辑模式,按下键盘左上角的 ESC键即可退出,如果想要退出命令模式,连续按两下ESC或者直接按删除键将:或者 /删除即可!
当我们的文件编辑完成后,则需要我们保存文件并退出vim编辑器:
w 保存
q 退出
! 强制
如果要想保存并退出该文件的编辑,先进入命令模式:然后输入wq,回车即可,当然有些文件是需要在wq后面加一个!强制保存退出才可以的,所以在遇到提示的时候记得把!加上,: wq!表示强制保存退出
当然也有快捷键可以保存退出“ZZ”两个大写的字母Z,不过不推荐使用这种方法!
现在我们已经知道了文件和目录的创建和普通文件的修改,那么接下来我们需要了解的是文件的拷贝(复制)和移动(剪切)
cp 命令 --拷贝
# cp 1 / --将当前目录下的普通文件1拷贝到/目录下
以上的方法只适用于普通文件,如果我们要想拷贝一个目录到其它地方的话还需要添加一个选项
# cp -r abc / --拷贝当前目录下的abc目录到/目录下
mv 命令 --移动
# mv 1 / --移动当前目录下的普通文件1到/目录下
# mv abc / --移动当前目录下的abc目录到/目录下
移动目录不用加选项
cp和mv命令的另一个作用“重命名”
# cp 1 /1.txt --在移动的同时将文件1改名为1.txt
# mv 1 2 --直接将文件1改名为2
rm 命令 --删除文件命令
# rm 1.txt --删除1这个文件
如果不加任何选项的话,在按下回车键后系统会提示你是否要删除该文件,如果我们每删一个文件都确认一下是不是很麻烦呢?
-r --确认删除选项
# rm -r 1.txt --删除1这个文件,不用再次确认删除
-f --删除目录选项
# rm -f abc --删除abc目录
# rm -rf abc --在删除目录abc的时候不再确认是否删除
注意:之前很多同学由于乱用该命令,导致最后把系统的配置文件目录给删掉了,导致无法开机!
练习题:
1.在根目录下创建以自己名字拼音的“目录”
2.在新建的目录中创建一个以自己名字拼音命名,以.txt结尾的“普通文件”
3.使用vim编辑器打开新建的普通文件,并把自己的手机号写入该文件
提示:
根目录(/)
# mkdir --创建目录
# touch --创建普通文件
# vim(filename) --使用vim编辑器编辑一个文件
例:目录(/dir)普通文件(/dir/filename)
文件查看的命令
cat 命令 --查看一个普通文件的内容
# cat/etc/hosts --查看/etc目录下的hosts文件的内容
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
cat命令的参数
cat -b --从1行开始不以空行进行编号显示
cat -n --从1行开始进行编号显示
cat -s --将多个相邻的空行合并成一个显示
[root@qianyun ~]#cat -n /etc/hosts --在文件内容前面加上一个编号
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
因为有些文件内容太多,如果一次显示出来的话我们看起来就会很费劲!
head --只显示文件的前面10行
# head/etc/passwd --显示/etc/passwd文件的前面10行
# head-n testfile --(-n指定显示文件前面n行)显示testfile文件的前n行
例:
# head -5/etc/passwd --显示/etc/passwd文件的前面5行
既然有了之显示前面多少行的命令,那肯定就有显示后面内容的命令
tail命令,显示文件最后的10行
# tail/etc/passwd --显示/etc/passwd文件的最后10行
参数:
-n --显示文件的最后的n行
-f --动态监测一个文件的尾端
例:
# tail-n testfile --显示testfile文件的最后的n行
# tail-5 /etc/passwd --显示/etc/passwd文件的最后5行
# tail-f testfile --动态监测testfile文件的尾端
小实验:
1,打开两个终端,在第一个终端中输入“touch 1.txt”
2,在第二个终端中输入“tail -f 1.txt”
3,返回第一个终端,输入 echo“hello”>> 1.txt --向1.txt文件尾端追加内容
然后去查看第二个终端的变化
1.more命令:
more命令显示文件内容,每次显示一屏
more [选项]文件
每次只显示一页内容:
空格键(Space)下一页内容
Enter键显示下一行内容
H键显示帮助
B键显示上一页内容
Q键退出more命令
more命令的选项
-num 这个(num)是指定一个整数,便是一屏显示多少行内容
-d 在每屏的底部显示更加详细的提示内容,如,有按键错误也会有提示
-c -p 在显示下一屏内容前先清屏,不滚动屏幕
例:
# more -dc/etc/passwd 在显示之前先清屏,并且在屏幕下方显示完整的百分比
# more -c -10/etc/passwd 显示/etc/passwd文件的内容,每屏只显示10行,并且在显示之前先清屏
2.less命令
功能和more命令用于分屏显示文件内容,不同的是,less命令允许用户向前或向后浏览,而more命令只能向前浏览!
命令格式:
# less [选项]文件
例:
# less /etc/passwd
PageUp向上翻页
PageDown向下翻页
q键退出
由于该命令的使用频率不高,而且选项甚多,所以这里就不再详述!如果有兴趣的可以使用man less查看该命令的帮助文档!
匹配、排序及显示指定内容的命令
1.gerp命令
过滤,筛选
命令格式:
grep [选项]查找模式 [文件名1,文件名2,...]
grep [选项] [-e查找模式|-f文件] [文件名1,文件名2,...]
常用选项:
-c 只显示文件中包含匹配字符串的行的总数(统计有多少行包含了该字符串)
-i 匹配比较时不区分字母的大小写(忽略字母的大小写)
-R 以递归方式查询目录下包含的所有子目录中的文件(只要是在一个目录里面的任何文件都会去查找)
-n 在输出包含匹配模式的行前面,加上该行的行号,文件第一行的行号为1行,以此类推(显示出匹配内容在文件中的第几行)
-v 取反,只显示不包含匹配字符串的文本行
-x 只显示整个行都严格匹配的行(一行中没有其他任何的字符)
注意事项:
1.文件名列表中可以使用通配符,如*等
(通配符:统一匹配相同格式的文件!如,一个目录下同时用很100个以.txt结尾的文件,我们就可以使用*.txt表示选择全部以.txt结尾的文件,而不用在一个一个去进行选择)
2.要查找目录中子目录中的文件要使用-r选项
3.如果在要搜索的字符串中包含空格,应使用单引号‘’把字符串扩起来
例:
在/etc/passwd文件中查找拥有root字符串的所有行
# grep root/etc/passwd
在/etc/passwd文件中统计root字符串出现的次数
# grep -c 'root'/etc/passwd
在文件中查找包含root的所有行,不管第一个字母的大小写
# grep -E'[Rr]oot' /etc/passwd 或者:
# grep -i root /etc/passwd
2.sort命令
sort命令对文本文件的各行进行排序
命令格式:
sort [选项]文件列表
选项:
-m 对已经排序好的文件统一进行合并,但不做排序
-c 检查文件是否已经排序好,如果没有,则显示错误信息,不排序
-u 这个要与-c选项一起使用,严格按照顺序检查,否则只输出最后一行
-o 将排序输出的内容放到指定的文件中,如果该文件不存在,则创建一个新文件
改变排序规则的参数:
-d 按a到z,0-9的顺序排序,空白符显示在最前面
-f 忽略字母的大小写
-i 忽略非打印字符(比如换行符 Enter)
-r 按降序排列,默认是升序,就是反过来显示,如 z-a 9-0
例:
# cp /etc/passwd/mfile 拷贝/etc/passwd到/下,并重命名为mfile
# head mfile >more_h10 将文件mfile的前10行定向到文件more_h10中
# sort more_h10 对more_h10文件进行升序排序
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
时间有限,更多选项请自行使用man手册!
3.uniq命令
uniq命令,比较相邻(挨在一起)的行,从排序好的文件中去除重复的行,只留下其中一行
选项:
-c 显示输出时,在每行的行首加上该行在文件中出现的次数
-d 只显示重复的行
-f --skip-fields=n 忽略比较前n个字段
-s --skip-chars=n 忽略比较前n个字符
-u --unique 只显示文件中不重复的行
例:
# touch 123.txt 创建一个123.txt文件,并且在文件中添加内容,内容里面添加几行一样的内容:
# cat 123.txt
123 456
122 456
133 456
456 123
557 123
789 456
789 567
567 567
567 123
# uniq -u 123.txt 显示文件123.txt中不重复的行
# uniq -cf 1123.txt 跳过前面一个字段比较
# uniq -cs 2123.txt 跳过前面两个字符比较
比较文件内容的命令
1.comm命令
comm命令对两个已排序好的文件进行一行一行的比较
命令格式:
# comm [-123]file1 file2
选项:
只有一个
-123 选项1,2和3分别表示不显示comm输出中的第一列,第二列和第三列
例:
# touch 123.txt234.txt
123.txt内容:
123
234
345
456
234.txt内容:
124
232
341
456
# comm -12 123.txt234.txt 比较文件123.txt和234.txt,并只显示它们相同的行
2.diff命令
diff命令比较两个文本文件,并找出它们的不同,它比comm命令完成更复杂的检查,并且不需要两个文件先排序好。该命令会逐行对两个文件进行比较,然后列出它们的不同之处,还会告诉我们如果要使两个文件相同需要修改它们的哪些地方,如果两个文件完全一致,则不会输出任何内容
格式:
diff [选项] 123.txt 234.txt
选项:
-b 忽略空格造成的差别。如:“How are you”和“How are you ”,这种情况将会被视为相同内容
-c 输出格式是带上下文的三行格式(不同点上下方各显示三行内容)
-C n输出格式是带有上下文的n行格式,如: -C 4 输出格式是带有上下文的4行格式
-i 忽略字母的大小写区别
-r 当文件1和文件2都是目录时,递归比较找到的各个子目录
文件内容统计命令:
1.wc命令
命令格式:
wc [选项] [文件]...
统计指定文件的字节数、字数、行数,并将统计结果显示出来
统计方法是按照以空格为分隔符的字符串,不受顺序和数目的影响,总是按以下的格式显示:
行数 字数 字节数 文件名
参数:
-c 统计字节数
-l 统计行数
-w 统计字数
例:
# wc -lcw/etc/passwd 统计passwd文件的行数,字数,字节数
40 72 1984 /etc/passwd