作为一个linux菜鸟,还是经常和各种linux命令打交道 , linux是非常强大的,但由于对这方面知识了解不够,一直在通过写python script来逃避直接写shell script,希望通过逼着自己整理这篇文章提高对linux命令的整体认识。
1 Find:
find pathname -options [-print -exec -ok ...]
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find . -name "*.txt" -print :
在当前目录及子目录中查找所有的‘ *.txt’文件,可以用
find /etc -name "host* -print :在/etc目录中查找文件名以host开头的文件
2 Grep:
这是让我最头疼的一个命令之一,以前一直没搞清楚。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
在‘/usr/src//Documentation’目录下搜索带字符串‘magic’的文件
grep magic ‘/usr/src//Documentation/*’
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,‘grep’会一直等着,直到该程序被中断。
明确要求搜索子目录:grep -r
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写
EX:
find -name '.txt' -print -exec grep test {} ;
grep test {} ; :-exec参数的一部分。每次找到和-name参数中指定的条件相匹配的文件时,用来搜索单词test的grep命令将被执行。
{} :参数告诉find命令每次执行-exec部分的命令时插入匹配文件的完整路径和文件名。
; :表示find每次找到一个匹配文件时其所执行的-exec部分的命令结束。
ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd
grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon