工作中用到的Linux命令-不断更新中

find . -exec touch {} \;

作用:对当前目录及子目录下的所以文件进行touch操作,达到把文件的修改时间改为系统当前时间的功能。

解析:最后一个字符是个分号,在它之前使用反斜杠(\)进行转义,这样shell就不对分号进行特殊处理,

而是传给find命令。当然,不用反斜杠,用单引号把分号括起来也是可以的。

find找到的文件,传给touch命令,使用字符“{}”。

应用:当把系统的时间改到过去,make编译软件时也许会碰到诡异问题。这时候上面命令就能派上用场了。


grep -r "jun" .

作用:在当前目录及子目录下的文件中,寻找字符串“jun”。

解析:-r表示递归(recursive),这样就能查找子目录了。-R和-r的效果一样。

应用:想知道一个字符串在什么文件出现,这个命令就很有价值。


find . -name "jun*"

作用:在当前目录及子目录下,寻找文件名以jun开头的文件。

解析:略。

应用:略。


nm libxxx.a | grep jun
nm libxxx.so | grep jun
nm a.out | grep jun

作用:nm的作用是list symbols from object files。上面的命令就是libxxx.a(libxxx.so或a.out)中找符号jun。

如果在输出结果前有“U",表示没有定义,但有声明。更加详细的可参考man nm

解析:略。注:如果strip调试信息,那么nm对一个object文件进行操作,会出现no symbols结果。

应用:某程序链接某个库,但提示找不到符号,nm也许会帮上忙。


du -sh

作用:显示当前目录及其子目录所占的磁盘空间。

解析:s参数表示summary,h参数表示以方便人(human)阅读的单位显示空间大小。

备注:在Linux的图形界面下,右键单击某个目录获得的大小是指Contents的大小,也就是目录中各文件

的内容的总和。这个大小肯定不会比du显示的空间大。例如:工作用服务器上的一个目录,du -sh显示13G,而右键

单击获得的Contents大小是9.8G,差距还是比较大的。


ls a*          (1行)
ls "a*"       (2行)
ls 'a*'         (3行)

解析:在当前目录下,显示以a开头的所有文件名,2行和3行的命令是不行的,而用1行的命令可行。

补:1行命令带参数-d,不显示子目录下面的文件名(目录名还是显示)。如果没有-d参数,当前目录

下有个以a开头的子目录话,就会显示这个子目录下的所有文件名(这一般不是你想要的)。

因为,shell会对特殊字符*进行扩展。而放到强引用(单引号)或弱引用(双引号)中,不会对*进行

扩展。所以,2行和3行的的意思是ls文件名为a*的文件。

注:如果当前目录下,有个以a开头的目录(这个目录下有以a开头的文件),当前目录下没有以a开头的文件。

在执行1行语句时,会显示a开头目录下的文件,看不到a开头的目录名字。给ls -d参数就能解决(-d表示

list directory entries instead of contents)。


find . -name "a*"     (4行)
find . -name a*        (5行)

解析:在当前目录及其子目录下,寻找以a开头的所有文件,使用4行的命令可行,5行的命令不行。这是因为

find命令中-name参数是接一个shell patten。对于5行的命令,shell会把a*扩展得到多个文件,这不

合find的语法。



阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭