shell常用命令汇总
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell常用命令汇总相关的知识,希望对你有一定的参考价值。
现在基于linux开发横行,互联网产品后台基本都是基于linux,android,mac,到处都是linux,所以,作为一个与时俱进的测试,不熟悉linux是不行的,记录一下测试中常用的一些shell命令。
1、ls:打印出当前目录的清单
ls –a:Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来
ls –l:该参数显示更详细的文件信息。
2、cd:切换当前目录
cd /:回到根目录
cd ..:返回上一级目录
cd -:返回到最近使用的目录
3、pwd:用于显示用户当前工作目录
4、mkdir 和 rmdir
midir:创建目录
rmdir:删除目录
两个命令都支持-p参数,对于mkdir命令若指定路径的父目录不存在则一并创建,对于rmdir命令则删除指定路径的所有层次目录,如果文件夹里有内容,则不能用rmdir命令
mkdir -p /home/test/test1
rmdir -p /home/test/test1
5、cp:复制命令
cp 1.txt ../test1:复制一个文件到另一目录
cp 1.txt 2.txt:复制一个文件到本目录并改名
cp -r test1 test2:复制一个文件夹a并改名为b
6、mv:移动命令
mv 1.txt ../test1:将一个文件移动到另一个目录
mv 1.txt 2.txt:将一个文件在本目录改名
mv 1.txt ../test1/2.txt:将一个文件移动到另一个目录并改名
7、rm:删除文件
–i :系统在删除文件之前会先询问确认,用户回车之后,文件才会真的被删除。linux下删除的文件很难恢复(据说可以用工具恢复,但是我没有成功恢复过),所以删除之前一定要谨慎确认
–r:该参数支持目录删除,功能和rmdir命令相似
–f:和-i参数相反,-f表示强制删除
rm -rf ./*:删除当前目录下的所有文件
8、du、df:du命令可以显示目前的目录所占用的磁盘空间,df命令可以显示目前磁盘剩余空间
如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况
du -sh dir:查看指定目录的总大小
du -sh ./*:查看当前目录下的所有文件夹和文件的大小
这两个命令都支持-k,-m和-h参数,-k和-m类似,都表示显示单位,一个是k字节一个是兆字节,-h则表示human-readable,即友好可读的显示方式
9、cat:显示或连结文件
cat file1:显示file1文件内容
cat file1 file2:依次显示file1,file2的内容
cat file1 file2 > file3:把file1, file2的内容结合起来,再“重定向(>)”到file3文件中">"是右重定向符,表示将左边命令结果当成右边命令的输入
注意:如果右侧文件是一个已存在文件,其原有内容将会被清空,而变成左侧命令输出内容。如果希望以追加方式写入,请改用">>"重定向符
如果">"左边没有指定文件,如:cat >file1,将会等用户输入,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会将用户的输入内容写入file1
10、head,tail:用于查看文件
head显示文件的头n行,tail显示文件的尾n行,缺省情况n都为10行。可以通过-n方式指定行数
head -100 file和tail -100 file分别表示显示文件头100行和尾100行内容
tail -f file:实时查看文件新增内容,[Ctrl]+[c]退出
11、wc:统计指定文件中的字节数、字数、行数
-l:统计行数
-w:统计字数
-c:统计字节数
这些选项可以组合使用。输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列
行数、字数、字节数、文件名
如果命令行中没有文件名,则输出中不出现文件名
wc file1 file2:
460 1679 16353 file1
300 1095 10665 file2
760 2774 27018 总用量
wc -l file1:
460 file1
缺省参数为-lcw,即wc file1 file2命令的执行结果与上面一样
12、grep:用于从文件搜索包含指定模式的行并打印出来,它是一种强大的文本搜索工具,支持使用正则表达式搜索文本
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作
ls -l | grep ‘^a‘:通过管道过滤ls -l输出的内容,只显示以a开头的行
grep ‘test‘ d*:显示所有以d开头的文件中包含test的行
grep ‘test‘ file1 file2 file3:显示在file1,file2,file3文件中匹配test的行
grep ‘[a-z]/{7/}‘ file:显示所有包含每个字符串至少有7个连续小写字符的字符串的行
grep ‘t/(es/)t.*/1‘ file:如果test被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(/1),找到就显示该行。如果用egrep或grep -E,就不用"/"号进行转义,直接写成‘t(es)t.*/1‘就可以了
这里用到正则表达式,就不在这里赘述了
13、管道和xargs
管道:
利用Linux所提供的管道符"|"将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推
注意:并不是所有命令都支持管道
ls | grep test:查看当前目录下名称包含test的文件或文件夹
xargs:
管道是将左边的命令输出作为右边命令的输入,但是如果要将前一个命令的输出作为参数该怎么办?需要用到xargs
find / -name "core" -print | xargs echo "" >/tmp/core.log:在整个系统中查找内存信息转储文件(core dump,一般程序异常退出的时候会生成core dump文件) ,然后把结果保存到/tmp/core.log文件中
ls | xargs rm:当一个目录下文件太多时,直接用rm * 命令会包参数过长,用如下方法可以全部删除
14、awk:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
last -n 5 | awk ‘{print $1}‘:显示最近登录的5个帐号
ps | grep exe | awk ‘{print $2}‘ | xargs kill -9:杀掉所有以exe结尾命名的进程
cat /etc/passwd | awk -F ‘:‘ ‘{print $1}‘:显示/etc/passwd的账户
以上列举的是测试过程中常用的一些shell命令,欢迎补充讨论。
以上是关于shell常用命令汇总的主要内容,如果未能解决你的问题,请参考以下文章