1.Linux高级命令
1.1.grep命令
- grep命令用于在文件中查找关键字,并显示关键字所在的行
- 用法:grep text file,text代表要搜索的文本,file代表供搜索的文件
常用参数搭配:
- grep -i:默认情况下,grep命令是区分大小写的,加上i参数使搜索结果忽略大小写
- grep -n:显示搜索到的文本所在的行号
- grep -v:只显示搜索的文本不在的那些行
- grep -r:在所有子目录和子文件中查找,比如grep -r “Hello World” folder/表示在folder目录的所有子目录和子文件中查找Hello World这个文本
- grep -E:grep -E 正则表达式 文件目录:使用正则表达式进行匹配
1.2.sort命令
- sort命令用于对文件的行进行排序,默认对文件中字母按照字母A-Z的顺序排序
常用参数搭配:
- sort -o参数:将排序后的内容结果写入新文件,具体格式:sort -o name_sorted.txt name.txt 其中name_sorted.txt是排序后的文件,name.txt是源文件
- sort -r参数:倒序排列
- sort -R参数:R是英语Random的首字母,随机排序
- sort -n参数:默认仅用sort命令时,是不区分字符是否是数字的,会把这些数字看成字符串,按照1-9的顺序来排序,可以使用sort -n参数对数字进行排序,按从小到大排序
1.3.wc命令
- wc是word count的缩写,wc命令用于文件统计,统计文件中的行数、单词数、字符数,字节数
- 用法:wc 文件名,显示为:行数、单词数、字节数
常用参数搭配:
- wc -l:如wc -l 文件名,l是line的缩写,表示只统计行数
- wc -w:w是word的缩写,表示“单词”,用于统计单词(用空格隔开的字符串)数目
- wc -c:c是character的缩写,用于单独统计字节数
- wc -m:用于统计字符数
1.4.uniq命令
- uniq命令用于删除文件中的重复内容,只能将连续的重复行变为一行
- 用法:uniq 文件名,如果要将重复的文件名处理之后输出在一个新的文件中,使用uniq 文件名 新文件名,如uniq repeat.txt unique.txt
常用参数搭配:
- uniq -c:-c参数用于显示重复的行数,只出现一次的重复次数为1,用法:uniq -c 文件名
- uniq -d:-d参数只显示重复的行的值,用法:uniq -d 文件名
1.5.cut命令
- cut命令用于对文件的每一行进行剪切处理,会剪切掉文件的一部分内容
常用参数搭配:
- cut -c:根据字符数来剪切,如cut -c 2-4 name.txt表示将文件中的每一行剪切,保留第二个字符到第四个字符
- cut -d:d是delimiter的缩写,用于指定用什么分隔符(比如逗号、分号、双引号等等)
- cut -f:f是field的缩写,表示剪切下用分隔符分隔的哪一块或哪几块区域,比如:cut -d , -f 1 notes.csv 表示在notes.csv文件中使用”,”分隔,并截取第一段,注意:这里的下标是从1开始的,不是从0开始
①cut -f 1,3 文件名:1和3表示剪切下来取第一和第三部分
②cut -f 2- 文件名:2-表示剪切保留第二部分直到最后一部分
1.6.ps命令
- ps是Process Status的缩写,ps命令用于显示当前系统中的进程
- ps命令显示的进程列表不会随时间而更新,是静态的,只是运行ps命令当时的那个状态,或者说是一个进程的快照snapshot
直接运行ps命令显示的效果如下:
其中PID是进程号,TTY是进程运行所在的终端,TIME表示进程运行了多久,CMD表示产生这个进程的程序名
常用参数搭配:
- ps -ef:使ps命令列出所有用户在所有终端的所有进程
第一列是UID,是user identifier的缩写,表示用户标识符;第三列是PPID(parent process ID):PPID是程序的父进程号
- ps -efH:以乔木状列出所有进程,如下图所示:
- ps -u用户名:列出此用户运行的进程,ps -u xxx #用实际用户替换xxx
- ps -aux:通过CPU和内存使用来过滤进程,一般为了显示更人性化,使用命令:
ps -aux --sort -pcpu | less # 根据CPU使用率来降序排列
ps -aux --sort -pmem | less # 根据内存使用率来降序排列
ps -aux --sort -pcpu,+pmem | head # 将CPU和内存参数合并到一起,并通过管道显示前10个结果
- ps -axjf或pstree:以树形结构显示进程
1.7.top命令
- top命令可以动态的显示进程列表,相比于ps命令可以动态、实时地监控进程的运行情况
- top命令不会显示全部的进程列表,只会显示一部分占据整个屏幕大小,默认进程是按照使用处理器的比率来排序的
在top命令使用时的一些快捷键:
- q键:quit,退出top命令显示界面
- h键:显示帮助文档
- b键:加粗某些重要的信息
- f/F键:在进程列表中添加或删除某些列;改变进程列表排序所参照的列
- u键:可以选择使用显示只需要显示的用户操作的进程列表
- k键:可以供用户输入要结束的进程
- s键:可以改变刷新页面的时间,默认页面每隔3秒刷新一次
1.8.操作进程和重启关闭系统
- Ctrl + C:停止终端中正在运行的进程,Ctrl + C可以比较友好地中止终端中正在运行的程序
(注意终端中使用复制和粘贴分别是Ctrl + Shift +C和Ctrl + Shift +V)
- kill命令:kill命令用于结束一个进程,kill命令后接需要结束的进程号,也就是我们之前看到过的PID,可以通过ps命令或top命令来获知进程的PID(注意kill命令执行需要在root用户权限下)
- kill -9命令:kill -9可以立即强制结束进程
- killall命令:用于结束全部要结束的进程,killall命令后接程序名,而不是PID(进程号)
- halt命令:halt命令用户关闭系统,但是必须以root身份才能关闭系统,一般用法:sudo halt
- reboot命令:reboot命令用于重启系统,也需要以root身份才能重启系统,用法:sudo reboot。halt命令和reboot命令都调用了Linux的另一个命令——shutdown命令
- poweroff命令:poweroff命令也可以用于关机,普通用户直接执行即可,效率较高
1.9.输出重定向与管道
>:标准输出重定向到文件
- >:>表示重定向到新的文件,它可以将命令的输出结果重定向到你选择的文件中,比如cut -d , -f 1 note.csv > students.txt,命令即可将note.csv中剪切到的部分重定向到students.txt文件中
- >使用注意事项:
①如果此文件不存在,则会新建一个文件;如果此文件已经存在,就会把文件内容覆盖掉,且不会征求用户确认
- 重定向到“黑洞文件” /dev/null,它能使发送到/dev/null的任何数据作废
>>:标准输出重定向到文件末尾
- >>:>>的作用与>是类似的,不过不会像>那么危险,会将重定向的内容写入到文件末尾,起到追加的作用
- 如果文件不存在也会创建文件
2> 文件名 :标准错误输出重定向到文件
2>> 文件名 :标准错误输出重定向到文件末尾
2>&1 :标准输出和标准错误输出都重定向到文件
1.10.输入重定向与管道
<:从文件中读取
- <符号用于指定命令的输入,cat < note.csv与cat note.csv的显示效果一样,但是原理不一样,cat < note.csv只负责将文件内容打印,不负责文件打开;而cat note.csv负责文件内容的打开与打印显示在终端
<<:从键盘读取
- <<符号的作用是将键盘的输入重定向为某个命令的输入
- |:管道
- |符号称为“管道符”,其作用就是“建立命令管道”
- 管道也算是重定向流的一种
- 管道的原理:将两个命令连成管道,简单地说就是将一个命令的输出作为另一个命令的输入(将一个命令的输出重定向为另一个命令的输入)
如使用:du | sort -nr | head命令,将当前目录下的文件按照从大到小的顺序排列,并显示前10行
1.11.at命令
- at命令可以用来延时执行一个程序,可以用at命令来设定一个程序的执行时间
- 注意:at命令只能让程序执行一次
- 如果系统中没有at命令,可以执行:sudo yum install at
at命令的使用有以下场景:
①在指定时刻执行程序:先用at命令后接想要程序执行的确定时刻,再输入你想要在以上指定时刻执行的命令,结束at命令使用ctrl + D ;在明天的时间执行命令,使用:at 22:10
tomorrow
②在指定任意时期执行程序:at 22:10 12/10/19,表示在2019年12月10日的22:10分执行,12/10/19依次是“月/日/年”
③在指定间隔之后执行程序:如在10分钟之后执行命令:at now +10 minutes,其中now表示“现在”,+10minutes表示“10分钟之后”
minutes:表示“分钟”
hours:表示“小时”
days:表示“天”
weeks:表示“星期”
months:表示“月”
years:表示“年”
1.12.crontab命令
- crontab命令与at命令一样,用于定时执行程序,crontab可以重复执行命令,例如:每小时、每分钟、每天、每星期等等
- 安装crontab命令:
CentOS安装crontab
- sudo yum install vixie-cron crontabs #安装crontab,用于CentOS(Red Hat一族)
- chkconfig crond on #设为开机自启动
- service crond start #启动
Ubuntu安装crontab
- sudo apt install cron #安装crontab
- service cron restart 或者restart cron #重启crontab
常用参数搭配:
- crontab -l:显示crontab文件
- crontab -e:修改crontab文件
- crontab -r:删除crontab文件
1.13.&&和||符号
- &&号前的命令执行成功,才会执行后面的命令
- ||号前的命令执行失败,才会执行后面的命令
- 分号:不论分号前面的命令执行成功与否,都执行分号后的命令
1.14.tar命令
打包:打包是将多个文件变成为一个总的文件,这个总的文件我们通常称为archive
压缩:压缩是将一个大文件通过某些压缩算法变成为一个小文件
一般来说tar命令,gzip和bzip2命令的使用分为以下两个步骤:
- 首先,用tar将多个文件归档为一个总的文件,称为archive;
- 然后,用gzip或bzip2命令将archive压缩为更小的文件
总的压缩流程如下图所示:
tar命令常用参数搭配:
- tar -cvf:创建一个tar归档,用法:tar -cvf 归档文件名.tar 文件路径,如:tar -cvf sorting.tar sorting/ ,即可将sorting/目录下的文档归档为sorting.tar
- tar -cvf archive.tar file1.txt file2.txt file3.txt,可以直接对文件进行归档操作,不需要先把所有文件放到一个目录里
- tar -tf:-tf显示归档里的内容,并不解开归档
- tar -rvf:tar -rvf archive.tar file_extra.txt,可以将file_extra.txt这个文件添加到archive.tar归档中,-rvf用于追加文件到归档
- tar -xvf:用于解开归档,是-cvf的相反操作,用法:tar -xvf sorting.tar
- tar -zcvf:归档,然后用gzip来压缩归档,用法:tar -zcvf sorting.tar.gz sorting/
- tar -zxvf:解压文件,tar -zxvf sorting.tar.gz
- tar -jcvf:归档,然后用bzip2来压缩归档,用法:tar -jcvf sorting.tar.bz2 sorting/
- tar -jxvf:解压文件,tar -jxvf sorting.tar.bz2
1.15.gzip与bzip2命令
- gzip比较常用,bzip2不是那么常用。bzip2压缩率比gzip更大,但是更耗时
- .tar.gz是用gzip命令压缩后的文件后缀名;.tar.bz2是用bzip2命令压缩后的文件后缀名
压缩归档文件.tar用法:
- gzip命令:gzip sorting.tar
- bzip2命令:bzip2 sorting.tar
解压缩用法:
- gunzip:gunzip sorting.tar.gz,使用此命令会将.tar.gz压缩文件解压缩为sorting.tar的归档文件
- bunzip2:bunzip2 sorting.tar.bz2,使用此命令会将.tar.bz2压缩文件解压缩为sorting.tar.bz2
显示用gzip/bzip2压缩的文件的内容
zcat/zmore/zless sorting.tar.gz
bzcat/bzmore/bzless sorting.tar.bz2