bash的基础特性

bash的基础特性:


    命令补全:
            Shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令;

    命令查找机制:
            查找内部命令;
                根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;
                给定的打头字符串如果能唯一标识某目录程序文件,则直接补全;
                不能唯一标识某目录程序文件,再击tab键一次,会给出列表;

路径补全:
            在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件;
            tab:
            如果能唯一标识,则直接补全;
            否则,再一次tab,给出列表;

命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径:
例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b


问题1:如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b  ?
                ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}

问题2:如何创建a_c,a_d,b_c,b_d;

        ~]# mkdir {a,b}_{c,d} -v
            mkdir: created directory `a_c'
            mkdir: created directory `a_d'
            mkdir: created directory `b_c'
            mkdir: created directory `b_d'

bash的命令执行状态结果

            bash通过状态返回值来输出此结果;
            成功:0
            失败:1-255
    命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
            ~]# pwd
            /root
        ~]# echo $?
                0

        命令正常执行时,有的还会有命令返回值;
                根据命令及其功能不同,结果各不相同;

        引用命令的执行结果:
            $(COMMAND)
            或’COMMAND‘
        Bash的基于特性:引用
            强引用:‘’
            弱引用:“”
            命令引用:‘’

    实例: 
            [root@localhost tmp]# ls
            a  hello

        [root@localhost tmp]# mkdir $(date +%H-%M-%S-%T)
        [root@localhost tmp]# ls
        20-51-40-20:51:40  a  hello
            Bash基础特性:快捷键
                    Ctrl+a:跳转至命令行行首
                    Ctrl+e:跳转至命令行行尾 
                    Ctrl+u:删除行首至光标所在处之间的所有字符;
                    Ctrl+k:删除光标所在处至行尾的所有字符;
                    Ctrl+l:清屏,相当于clear

基础特性之 文件名通配

globbing:文件名通配

匹配模式:元字符
    * :匹配任意长度的任意字符
         Pa* ,  *pa* , *pa , *p*a*
    ? :匹配任意单个字符
            Pa?
    [] :匹配指定范围内的任意单个字符
                有几种特殊格式:
                [a-z],[A-Z],[0-9],[a-z0-9]
                [[:upper:]] :所有大写字母
                [[:lower:]]:所有小写字母
                [[:alpha:]]:所有字母
                [[:digit:]]:所有数字
                [[:alnum:]]:所有数字和字母
                [[:space:]]:所有空白字符
                [[:punct:]]:所有标点符号
                [^]: 匹配指定范围外的任意单个字符
                [^[:upper:]]
                [^0-9]
                [^[:alnum:]]

实例:

练习1:显示/var目录下所有以L开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录;
练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录;
练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/itxuezhe.com目录;
练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下;
练习6: 复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下;

        练习1:~]# ls -d /var/l?[[:lower:]]
        /var/lib  /var/log

        练习2:~]# ls -d /etc/[0-9]*[^0-9]
        /etc/3ab23y

        练习3:~]# ls -d /etc/[^a-z][a-z]*
        /etc/8eabc

        练习4:~]# mkdir /tmp/maedu.com
        ~]# cp -r /etc/m*[^0-9] /tmp/maedu.com/

        练习5:~]# mkdir /tmp/man
        ~]# cp -r /usr/share/man/man[0-9] /tmp/man

        练习6:~]# cp -r /etc/[mnrp]*.conf /tmp/conf.d/
        ~]# ls /tmp/conf.d/man_db.conf  named.conf   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章