一、Linux的命令行
1.Linux介绍:刚出世的时候,没有什么节目,所有的操作都是靠命令行来执行,后来Linux发展迅速,也出现了图形界面,但是由于命令行的执行速度比图形界面块,所以也得到了广泛的应用,可以说不会命令行就不会Linux。
2.Linux的命令格式
command [-options] [param1] [,param2]...
command:Linux命令的名称,一般就是相应功能的单词或单词的缩写
-options\]:选项,它和命令之间有一个空格,可以用于对命令进行控制,\[\]表示可以省略 \[param1\] \[,param2\]...:传递给命令的参数,可以有零个或多个 **3.查看帮助文件:command --help** 例如:  **4.man(manual,手册,有问题找男人)命令** Linux的man命令提供了一个手册,包含了绝大部分的命令、函数的使用说明,分了几个章节(section): 1. Standard commands:标准命令 2. System calls:系统调用 3. Library function:库函数 4. Special devices:设备文件说明 5. File formats:文件格式 6. Games and toys:游戏和娱乐 7. Miscellaneous:杂项 8. Administrative Commands:管理员命令,例如ifconfig man的使用:man \[section\] 命令名 运行man命令后可以执行的操作: b:回滚一屏 f:前滚一屏 q:退出man命令 h:列出所有功能键 /字符串:查找字符串 同时可以使用上下键来移动内容   **5.命令的自动补全** 在敲命令的时候,可以只敲前面几个字母,然后按"Tab"键进行命令的自动补全 例如:敲一个m,然后按"Tab"键:  **6.历史命令** 当系统执行了一些命令之后,可以按上下键翻看以前执行过的命令。 在家目录中(\~),存在一个隐藏文件(.bash_history),里面记录了之前执行过的bash命令:  **7.文件管理相关命令** **(1)查看文件信息:ls,list的简称,类似于Windows的dir命令** 语法: ls \[选项\] \[文件名
说明:[]内容可以省略,如果省略文件名,表示查看当前目录下的所有文件
选项:
-a:显示当前目录下的所有文件和子目录,包含隐藏文件(Linux中的隐藏文件都是以"."开头的,例如".bash_history")
-l:以列表的形式显示文件的详细信息
-h:搭配"-l"使用,以更人性化的方式显示文件大小
示例:
其中"ls -l"可以简写成"ll":
"ls -l"显示文件大小的时候,是以字节为单位,不方便查看,可以结合"-h"选项以更人性化的方式显示文件大小:

(2)输出重定向:>
默认情况下命令的执行结果是输出到控制台的,输出重定向允许将命令的执行结果输出到一个文件中。注意:输出重定向到相同文件时,后面的内容会覆盖之前的内容,如果不想覆盖,只是想追加,可以使用追加重定向:>>
示例:
追加:
(3)分屏显示:more
如果信息太多,一屏显示不完,可以通过more命令分屏显示
说明:
空格:显示下一页
q:退出
还可以使用上下键来移动内容,就像使用vi编辑器一样。
(4)less:分屏显示文件内容
less用于分屏查看文件内容,功能和more命令类似,但是比more命令更强大,支持各种显示终端。less命令在显示文件内容时,并不是一次将整个文件加载后显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1)语法:
less 要查看的文件
2)操作说明:


(5)head:显示文件头部内容
head用于显示文件开头部分的内容,默认情况下显示文件的前10行内容。
1)语法:
head 文件(查看文件头10行内容)
head -n 5 文件(查看文件头5行内容,数字5可以任意)
2)选项
(6)tail:输出文件尾部的内容
tail用于输出文件尾部的内容,默认情况下显示文件后10行内容。
1)语法:
tail 文件(查看文件尾10行内容)
tail -n 5 文件(查看文件尾5行内容,5可以是任意数字)
tail -f 文件(实时追踪该文档的所有更新)
2)选项

(7)管道:|
类似于管子,一头塞进去,另一头取出来。
一个命令的输出可以通过管道作为另一个命令的输入


(8)清屏:clear
(9)切换工作目录:cd,change directory的简称
cd命令后面既可以跟绝对路径也可以跟相对路径,例如:
cd ~:进入家目录
cd .:进入当前目录
cd ..:进入上一级目录
cd -:进入上一个可以进入的目录
注意:Linux中的文件和目录严格区分大小写的,即使两个文件名相同,但是大小不一致,也是两个不同的文件(Windows是不区分大小写)
示例:
(10)显示当前路径:pwd

(11)创建目录:mkdir,make directory的简称
mkdir可以创建一个新的目录,通过-p选项可以递归的创建目录及其子目录,注意:目录的创建者必须具有对当前目录的写权限(w)
示例:
(12)删除目录:rmdir,remove directory的简称
注意:使用rmdir删除目录的时候,要求目录必须是空的目录,否则不能删除
(13)删除文件:rm,remove的简称
使用rm删除文件或目录的时候,需要注意,rm删除的文件不能够恢复,可以使用"-i"选项逐个确认之后再删除。
选项:
-i:interface的简称,以交互式的方式删除(询问),默认的情况。
-f:force的简称,强制删除,不提示。
-r:递归删除目录及其子目录。
示例:


练习:在家目录中创建一个demo目录,然后将其删除,然后创建test1/test2/test3目录,在test3目录中创建1.txt文件,然后删除整个test1目录。

(14)链接文件
Linux中的链接文件就类似于Windows中的快捷方式
分为软链接和硬链接:
软链接文件:不占用磁盘空间,源文件删除则链接文件就无用了
硬链接文件:占用磁盘空间,只能链接普通文件,不能链接目录
语法:ln,link的简称
软链接:ln -s 源文件 链接文件
硬链接:ln 源文件 链接文件
示例:



(15)查看或合并文件内容:cat

还可以使用cat来重定向:

合并:

合并之后输出到一个文件:

(16)正则表达式
1)什么是正则表达式:正则表达式使用某种模式(pattern)去匹配(match)一类受支持的公式
2)通常使用正则表达式进行查找替换等操作。
3)适当的使用正则表达式可以提高工作效率。
4)支持正则表达式的文本处理工具有:
a.grep:按模式匹配文本
b.sed:一个流编辑器
c.vi:一个屏幕编辑器
5)正则表达式的构成
a.正则表达式由一些普通字符和元字符(Meta Characters)组成
a)普通字符:包含大小写的字母和数字(非元字符)
b)元字符:具有特殊含义的字符
常用的元字符的表格:
非基本正则:
(17)文本搜索:grep
grep命令是Linux系统中一种强大的文本搜索工具,grep允许对文本进行模式查找,如果找到了匹配模式(正则表达式),grep打印包含模式的所有行。
语法:
grep [选项] '搜索的字符串' 文件名
说明:其中'搜索的字符串'可以包含正则表达式
选项:
-v:不包含匹配行,即取反
-n:显示匹配行的行号
-i:忽略大小写
-r:递归搜索,对指定目录及其子目录中的文件进行遍历搜索
示例1:


注意:grep命令只支持基本的正则表达式。
示例2:查找当前目录及其子目录中所有文件中包含IP地址的行,其中"-E"选项表示使用扩展的正则

(18)查找文件:find
该命令功能强大,通常用于在特定的目录下搜索文件,语法:
find 搜索路径 [选项] 搜索内容
1)按照文件名搜索
常用选项:
-name:按照文件名搜索
-iname:按照文件名搜索,不区分文件名大小写
-inum:按照 inode 号搜索
2)按照文件大小搜索
常用选项:
-size [+|-]大小:按照指定大小搜索文件
"+"的意思是搜索比指定大小还要大的文件
"-"的意思是搜索比指定大小还要小的文件
find 命令的单位:
'b':默认以块为单位,一块=512字节
'c' :字节
'w' :双字节(中文)
'k':KB单位
'M':MB单位
'G':GB单位

3)按照修改时间搜索
常用选项:
-atime [+|-]时间:按照文件访问时间搜索
-mtime [+|-]时间:按照文件数据修改时间搜索
-ctime [+|-]时间:按照文件状态修改时间搜索

4)按照权限搜索
常用选项:
-perm 权限模式:查找文件权限刚好等于"权限模式"的文件
-perm -权限模式:查找文件权限全部包含"权限模式"的文件
-perm +权限模式:查找文件权限包含"权限模式"的任意一个权限的文件

5)按照所有者和所属组搜索
常用选项:
-uid 用户ID:按照用户ID 查找所有者是指定 ID 的文件
-gid 组ID:按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名:按照用户名查找所有者是指定用户的文件
-group 组名:按照组名查找所属组是指定用户组的文件
-nouser:查找没有所有者的文件

6)按照文件类型搜索
常用选项:
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件

7)逻辑运算符
常用选项:
-a:and 逻辑与
-o:or 逻辑或
-not:not 逻辑非

8)其他选项
① -exec 选项
find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \;
这个选项的作用其实是把 find 命令的结果交给由"-exec"调用的"命令2" 来处理。"{}"就代表 find 命令的查找结果。



② -ok 选项
"-ok"选项和"-exec"选项的作用基本一致,区别在于:"-exec"的命令2 会直接处理,而不询问;"-ok"的命令2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。

(19)拷贝文件:cp,copy的简称
将指定的文件或目录复制到另一个文件或目录中
语法:
cp [选项] 源文件 目标文件
选项:
-a:保持源文件原有的属性
-f:删除已经存在的目标文件不提示(覆盖)
-i:交互式复制,有提示
-r:递归复制文件夹及其子文件夹
-v:显示拷贝的进度
示例:

(20)移动文件:mv,move的简称
mv命令可用于移动文件或目录,还可以重命名
语法:
mv [选项] 源文件 目的地
选项:
-f:禁用交互式提示(不提示)
-i:使用交互式提示(有提示)
-v:显示进度
示例:

(21)创建新文件:touch
语法:
touch 文件1 [文件2]...

(22)归档管理:tar
Linux系统数据经常需要备份,tar命令是最常用的备份工具,可以把一系列的文档归档到一个大的文件中(打包),也可以解开一个归档文件以恢复数据(解包)。
语法:
打包:
tar [选项] 打包后的文件名 源文件
解包:
tar [选项] 打包后的文件名 解包的目录
选项:
-c:create的简称,生成归档文件,打包
-v:显示归档的进度
-f:file的简称,指定归档文件的名称(是.tar文件),注意,这个选项只能作为最后一个选项,用于表示后面的文件的类型是.tar归档文件类型
-t:列出归档文件包含的文件
-x:relax的简称,解开归档文件,解包
示例:




(23)文件压缩和解压缩:gzip
1)tar和gzip结合可以打包并压缩以及解压缩文件
2)tar只负责打包,不负责压缩,gzip负责压缩打包后的文件,打包并压缩后的文件名如:xxx.tar.gz
语法:
gzip [选项] 被压缩的文件 生成的压缩文件
选项:
-d:解压
-r:递归压缩所有子目录
示例:

一般情况下,我们会将tar和gzip命令搭配使用来打包压缩和解压缩,语法如下:
压缩:tar -cvzf 压缩文件名.tar.gz 文件1 [文件2]...
注意:这里的f选项只能是最后一个选项,选项z表示压缩,即使用gzip压缩


解压:tar -zxvf 压缩文件名.tar.gz [-C 解压的目录]
其中-C表示解压到哪一个目录,如果省略就解压到当前目录




(24)文件压缩和解压缩:zip和unzip,对应于Windows中的.zip和.rar类型的压缩文件,注意,CentOS7默认没有安装zip和unzip,需要使用yum安装:


语法:
压缩:
zip [-r] 目标文件.zip 源文件
选项-r表示递归压缩目录及其子目录中的内容
示例:
解压:
unzip -d 解压后的目录 压缩文件
选项-d用于指定解压的目录

(25)查看命令的位置:which

(26)处理,编辑文本文件,流处理器:sed
sed命令可以依照脚本的指令来处理,编辑文本,可以对文本文件进行增删改查的操作,支持按行,按字段,按正则表达式的方式来匹配文档内容,使用方便,适合脚本编程。
语法:
sed [选项] '命令和字符串' 文件
选项:
-c:默认选项,对文本进行编辑
-f:指定sed命令后保存的文件名
-n:取消默认输出,只打印处理过的行
-i:直接修改要处理的文件
命令:
-a:append,向匹配行追加
-d:delete,对匹配行删除
-c:更改匹配的内容
-s:将匹配行的内容替换
-i:insert,在匹配行前插入内容
-p:print,打印匹配行的内容,一般和-n选项搭配使用
示例:



示例2:
删除最后一行:sed -i '$d' demo.txt
删除第一行:send -i '1d' demo.txt
删除1~2行之外的行:

示例3:替换文本:

示例4:全局替换

(27)xargs
xargs是Linux中一个非常强大的命令,用于从标准输入构建并执行命令行。它通常和其他命令(如find、grep等)结合使用,以处理大量数据或文件。xargs的核心功能是将输入数据转换为命令行参数。
1)语法:
xargs [选项] [命令]
输入:xargs从标准输入(stdin)读取数据
输出:将输入数据作为参数传递给指定的命令并执行
2)常用选项

示例1:基本用法
将输入作为参数传递给echo(回显)命令:

示例2:结合find使用
查找当前目录下的所有.txt文件并删除

示例3:限制每次执行的参数个数(-n)
每次只传递2个参数给echo

示例4:使用占位符(-I)
将输入项替换为占位符{}
示例5:交互式模式(-p)
在执行命令前提示用户确认
示例6:打印执行的命令(-t)
在执行命令前打印命令:
示例7:忽略空输入(-r)
如果输入为空,则不执行命令

示例8:指定输入分隔符(-d)
使用逗号作为分隔符:
示例9:从文件读取输入(-a)
从文件note.txt中读取输入:
示例10:批量重命名文件
将当前目录下的.txt文件重命名为.bk:
示例11:并行压缩文件
使用xargs和gzip并行压缩文件(提高执行效率):
示例12:并行压缩并显示执行的命令
