Linux学习笔记(六)Bash Shell

    技术2022-05-20  35

     

    1.用户通过Shell与核心(kernel)沟通。计算机自里向外依次是:硬件,核心,Shell,用户

     

    2.KDE,GNOME之类的图形操作界面也可以视作广义的Shell

     

    3.为了与自定义变量区别,环境变量通常以大写字母来表示,如PATH,MAIL

     

    4.变量就是以一组文字或符号,来替换一些设置或是一串保留的数据

     

    5.可以用echo命令显示变量,获取变量内容要前加$,如

        echo $MAIL

     

    6.变量赋值

        myname=tae

      等号左右不能有空格

     

    7.对于含空格的赋值,采用双引号,如下

        name="how are you"

      单引号类似,区别在于:双引号仍然可以保持变量的内容,但单引号内只能是一般字符

     

    8.若追加变量内容,需用到双引号和$,如下

        PATH="$PATH":/home

      即在PATH环境变量内容中追加了:/home

     

    9.设置变量的好处:

      1)类似于别名,譬如

           name=/home/tae/work/vim

         则

           cd $name

         等价于

           cd /home/tae/work/vim

      2)脚本中方便维护,类似于C中的宏#define

     

    10.本次登录所进行的变量设置,如果没有更改设置文件,那么这次设置的变量在下次登录时将被取消。所以如果想要变量每次都能在登录时自动设置好,就必须将设置写入登录时加载的设置文件,用alias设置的别名也一样

     

    11.自定义变量与环境变量的区别在于:自定义变量不能存在于别的bash程序(即子程序)中

     

    12.export [自定义变量]:将自定义变量转换为环境变量,使得其可以存在于子程序中

       因此,在两个脚本文件(.sh)间传递变量时,需要使用export命令

     

    13.上面提到的变量赋值都是通过=在命令行里赋值,另外一种方法使用read命令交互式赋值(类似于scanf)

         read [-pt] [要赋值的变量名]

       -p后跟提示符字符串,-t后跟等待接收的秒数

     

    14.declare [-aixr] [变量名]

       声明变量的类型和属性

       -a:定义为数组

       -i:定义为整型

       -x:定义为环境变量,类似于export

       -r:设置为只读,不能更改,也不能取消设置(unset)

     

    15.引用数组变量方式,如

         ${ary[0]}

     

    16.可以使用env命令或export命令查看环境变量

     

    17.各环境变量意义如下:

      HOME:家目录,即~

      SHELL:当前环境使用的shell程序,默认为/bin/bash

      PATH:执行文件的搜索路径,目录间以:分隔

     

    18.bash配置文件(设置PATH,alias)是~/.bashrc

      更改完配置文件后,可用命令

        source ~/.bashrc

      使配置立刻生效

      否则,只能logout后重新login到bash内使之生效

     

    19.数据流重导向:”将某个命令执行后应该要出现在屏幕上的数据,传输到其他地方“或”将原本需要由键盘输入的数据,通过文件来读入“

       传送命令如下:

         标准输入:使用<或<<

         标准输出:使用>或>>

         标准错误输出:使用2>或2>>

       >与>>的区别在于:>是将文件清空后再输出,而>>是累加输出

       如果不要输出信息,可将数据输出到/dev/null中,这是个相当于”黑洞“的垃圾桶

     

    20.命令执行的条件判断

       ;可以一次执行多个命令,如

         sync; sync; shutdown -h now

       &&表示若前一个命令执行成功,则执行后一个命令,如

         ls /tmp && touch /tmp/test

       ||表示若前一个命令执行失败,则执行后一个命令,如

         ls /tmp/test || touch /tmp/test

       进行分叉判断时,&&必须在||的前面,即

         command1 && command2 || command3

     

    21.

     


    最新回复(0)