Linux Shell 命令记录概略:一

来源:互联网 发布:新浪乐居端口 编辑:程序博客网 时间:2024/05/17 23:55

1. chown:

chown命令的常用选项形式:chown -R -h owner files;其中R意味着对其所有子目录下的所有文件都进行同样的操作。h选线意味着改变符号链接文件的属主时不影响该连接所指向的目标文件

2. chgrp:

chgrp命令同chown的格式相同。


3. 正则表达式:

    i> 使用“.”符号匹配单个字符,例如:"L...D“,其中包括三个".",则该表达式会匹配任何字符串,其中包括子字符串,长度为5,L开头D结尾;

    ii> 使用”^“匹配行首,注意,该字符必须在匹配字符或字符串的前边,例如:"^8",即行首以8开头的所有行;

    iii> 使用“$”匹配行末,注意,该字符必须在匹配字符或字符串的后边,例如:"8$",即行尾为8的所有行;

    iv> 使用“*”匹配任意字符,该项验证存在问题,待续。。。;

    v> 循环匹配,即某个字符重复出现若干次,注意:循环匹配必须在修饰字符的后边;

          包括“m\{n\}",字符m重复出现n次;

          包括”m\{n,\}",字符m至少重复出现n次;

          包括"m\{a,b}",字符m重复出现a至b次;

    vi> 使用[]进行单个字符的范围匹配,

          包括"[1357]",字符为1,3,5,7中的任意一个;

          包括"[1-8]”,字符为1至8中的任意一个,即可选为1,2,3,4,5,6,7,8;

          包括“[1-8a-zA-Z]",字符为1至8中的任意一个或者a至z或者A至Z中的任意一个;

    vii> 使用”\",对特殊字符进行转义,需要转义的字符包括:*,.,\,[,],',”,$,^,(,),+,?

4. grep:grep命令结合正则表达式,几乎可以实现任何字符匹配,但是,其众多的选项也难以记忆,现结合各种情形记录使用过程碰到的问题及解决方法:

    i.> grep命令的一般格式:grep [选项]  基本正则表达式  [文件],其中正则表达式可以为字符串。

   注: grep命令在接收参数时(包括正则表达式)一般建议使用引号("")包括,原因:防止将参数误解为shell命令;对于某些带空格的参数必须用引号引用,以正确表达为字符串形式,例如:参数test temp,应该表达为"test temp",因为其参数是以空格来分隔的;对于使用变量的参数,应该使用引号;

    ii> grep常用选项:

        -c:只输出匹配行的计数,即输出有多少匹配行数,注该选项为小写c;

        -A NUM:输出匹配行后NUM行的信息;

        -B NUM:输出匹配行前NUM行的信息;

        -C NUM:输出匹配上前后NUM行的信息;

        -i: 不区分大小写,只适用于单字符;

        -h:查询多文件时不显示文件名;

        -n:显示匹配行及行号;

        -s: 不显示不存在或无匹配文本的错误信息;

        -v:显示不包含匹配文本的所有行;

     iii>. grep匹配成功后会输出所在行的信息,但是有时候并不只是要查看字符串匹配行的信息,可能还需要查看其后若干行信息。典型情况:在对shell命令进行帮助查看时,一般是(以find命令为例)man find来实现,但是find命令的帮助信息太多,而我就只想看看其中一个选项的具体描述(-ctime),此时即可通过grep进行筛选:

         例: man find | grep -A 5 "\-ctime"       即:显示find的帮助信息中-ctime选项后五行的内容;同理,man find | grep -B 5 "\-ctime"   和  man find | grep -C 5 "\-ctime",即分别为显示匹配行前五行内容和匹配行前后五行内容;

    iv> grep "^[^48]" data.f,该句命令的意思是匹配不以4或8开头的data.f文件行;其中第一个^表示行首,第二个^表示非;



5. find:常用选项:

i> -name,通过文件名查找,特殊匹配:[a-z],[0-9],[A-Z]等来匹配某个字符属于一个范围,同时可以使用在范围前添加“^"来对匹配范围取反,即不匹配该范围;

举例:find . -name test.c -print

   find . -name "[a-z][0-9]*" -print

    find . -name "[^a-z][0-9]*" -print

ii> -perm,通过权限进行查找,可以通过权限值的八进制表示法进行查找。

举例:find . -perm 744 -print     #查找当前用户可读、可写、可执行,组用户可读、其他用户可读的文件

注:如果要查找所有用户都拥有可读、可写、可执行权限的文件,则如:find . -perm -007 -print

iii> -user、-nouser,通过所属主查找,其中-user为当前所属主为匹配值,-nouser为文件没有有效的所属主,即所属主在/etc/passwd中不存在。

iv> -group、-nogroup,通过所属组查找,同理-user选项,-group为所属组为匹配值,-nogroup为文件没有有效地所属组,即所属组在/etc/groups中不存在。

v> -ctime、-mtime、-atime,通过时间查找,默认时间粒度为天,分别为:-ctime为最近的文件状态更改时间;-mtime为最近的文件内容修改时间;-atime为最近的访问时间;

注:通过时间查找时,对于时间值的设置可以使用正号表示超过该时间,而用负号表示在该时间内;

举例:find -mtime 5 -print    #文件修改超过五天

    find -atime -3 -print    #文件最近访问在三天内的文件

vi> -newer,通过文件时间比较来查找文件,常用模式:-newer newest_file_name ! -newer oldest_file_name

举例:find . -newer aaa ! -newer ccc -print  #查找比aaa文件更新而比ccc文件更老的文件,

注: 该匹配为前闭后开模式,即在查找结果中不包括newest_file_name,但是包括oldest_file_name;

vii> -type,通过文件类型查找,常见类型:b: 块文件;c: 字符设备文件; d: 目录; p: 管道文件;l: 符号链接文件;f: 普通文件;

viii> -size, 通过文件大小查找,可以以块(n)和字节(c)为单位,并且”+“表示大于,”-“表示小于,二者均无表示等于。

举例:find . -size +50n -print   # 查找大于50块的文件

   find . -size 63c -print     #查找等于63字节的文件

   find . -size -70c -print    #查找小于70字节的文件

ix> -mount,只在当前文件系统中查找。

x> -depth,先查找根目录,在查找子目录。

xi> -exec、-ok,查找到文件后执行操作,二者不同点在于-exec不需要确认,而-ok会提示确认。


6. cron命令cron是系统主要的调度进程,可以在无需人工干预的情况下运行。可以通过crontab进行提交、删除和编译相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。但是管理员可以通过cron.deny和cron.allow两个文件来禁止和允许用户拥有自己的crontab文件。

i> crontab的文件格式:分<>时<>日<>月<>星期<>要执行的命令。其中<>表示空格。在这些域中可以通过“-”来表示范围(1-5,即表示1至5);还可以通过“,”来进行选择(1,3,4,即表示1和3和4);而用“*”表示所有可选值,即该项任意;

注:a> crontab文件的每一项的五个域必须均有值且用空格分隔。

b> crontab文件的注释用“#”符号实现,位于行首注释本行。

c> crontab文件中运行的命令需要通过绝对路径进行说明。

ii> crontab命令选项:crontab [-u user] -e -l -r

a> -u user,提交任务的用户名,如果使用当前用户提交,可以省略;

b> -e,编辑crontab文件;

c> -l,列出crontab文件的内容;

d> -r,删除crontab文件;

iii> 提交crontab文件的步骤:


7. &命令:

&命令用于将当前要执行的命令置于后台执行,但是,在命令执行过程中存在用户响应操作,则系统将一直等待,因此一般置于后台操作的命令不能认为响应。而且,命令在执行过程中的输出信息默认任然是显示终端,因此对此现象不作处理的化就会影响到当前前台终端的任务执行。因此一般的&命令执行形式如下:

        command &       //该操作为基本操作,即输出信息显示到终端

        command>out.file  2>&1  &     //将所有输出信息写入out.file文件中,不会影响前台终端操作

        注:&命令所执行的后台命令会在当前用户退出(即注销)后自动结束


8. nohup命令:

    nohup命令,是将要执行的命令置于后台执行,且即使用户退出(注销)后依然运行。一般的命令格式为:

i>  nohup command        //nohup将command的执行置于后台,但是,nohup并没有处于后台,因此如果command的执行非常耗时,则nohup将一直在前台等待。

ii> nohup command>output.log  2>&1  &    //此时command的执行被nohup置于后台,并且输出重定向至output.log文件中。而因为命令最末有&命令,因此整条语句的执行亦是置于后台执行。因此,一般建议使用此种形式。

0 0