鸟哥的私房菜--第十一章:认识与学习bash

来源:互联网 发布:ubuntu怎么编辑文件 编辑:程序博客网 时间:2024/05/29 13:07

一.Bash Shell 的操作环境

    1.路径和命令查找顺序

      如果我们输入一个命令,并且再linux下有多个与其同名的命令,那么会执行哪一个命令?下面就是一些命令执行顺序的规则。

      1).以相对/绝对路径执行命令,例如:“/bin/ls”或“./ls”

      2).由alias找到该命令来执行

      3).由bash内置的(bulitin)命令来执行;

      4).通过$PATH这个变量的顺序来找到第一个命令执行。

     如果想要了解某个命令的执行顺序,可以通过type -a ls 进行查询


   2.我们可以过修改 /etc/issue 和/etc/motd 来设置登录bash时的显示信息。


   3.bash中可以使用通配符来协助我们方便的处理数据。下面归纳一下常用的通配符

        *   :   代表0个到无数多个任意字符   示例:ll -d /etc/con*    查找/etc/下以con开头的文件名

       ? : 代表一定有一个任意字符       示例:ll -d /etc/????    查找/etc/下文件名为5个字符的文件

       []  : 代表一定有一个在中括号内的字符(非任意字符);

       [-]: 若有减号在中括号内时代表再编码顺序内的所有字符,例如 [0-9] 代表0到9之间的所有数字。

       [^]:表示原向选择,[^a-z]代表一定有一个字符,只要不是小写字母。


二.数据流重定向

     1.数据流的重定向就是将某个命令执行以后应该要出现在屏幕上的数据传输到别的地方,例如文件或则设备等。

一般的输入输出分类如下:

     标准输入(stdin): 代码为0,使用<或<<;

     标准输出(stdout):代码为1,使用>或>>;

     标准错误输出(stderr):代码为2,使用2>或2>>;

     对于>和>>:前一个是覆盖的,而后一个是可以累加的。

    我们可以使用/dev/null 将一些信息“吃掉”,时期不显示在屏幕。可以使用cat将键盘输入的数据写入到文件中去。

     2.命令执行的判断依据

      使用;,&&,||来一次输入多重命令。

      ;:多条命令中间用“;”分离则依次执行这些命令。

      对于&&,||一般和命令回传码($?)结合使用

      cmd1&&cmd2: 若cmd1执行完毕且正确执行($?=0),则开始执行cmd2

                                 若cmd1执行完毕且为错误,则不执行cmd2。

      cmd1||cmd2:若cmd1执行完毕且正确执行,则cmd2不执行。

                             若cmd1执行完毕且为错误,则cmd2执行。

    当多个||,&&连用时,执行顺序从左到右,每一个执行时依据的是上一个命令的回传码; 

   如果我们要使用||,&&进行判断,则必须要使用cmd1 &&  cmd2 ||cmd3的形式,其中cmd1是条件,cmd2,cmd3两者中一定有一个会执行;这个顺序是不能改得。例如:以 ls测试/tmp/abc是否存在,若存在則显示"exit",否则显示"not exit"

   ls /tmp/abc && echo “exit” || echo"not exit";


三.管道命令

    所谓的管道命令就是对前面命令产生的标准输出再进行处理,管道命令用‘|’表示。使用管道命令有两点需要注意的地方:

    1.管道命令仅会处理标准输出,对于标准错误输出会忽略。

    2.作为管道命令必须要能够接受标准输入。

   常用的管道命令有:

    选取命令:cut,grep;排序命令:sort,wc,uniq;双重定向 tee;字符装换命令:tr,col等。

1 0