您的位置:首页 > 运维架构 > Shell

Linux学习之五(bash特性详解)

2017-05-09 15:45 357 查看
一、bash及其特性

    1、shell:外壳

    广义shell包含:1、GUI:Gnome、KDE、Xfce

                   2、CLI:sh,csh,ksh,bash

    进程:在每个进程看来,当前主机上只存在内核和当前进程,进程是程序的副本,进程是程序执行实例。

    2、bash:

        1、支持命令历史、命令补全

        2、支持管道、重定向

        3、支持命令别名

        4、支持命令行编辑

        5、支持命令行展开

        6、支持文件名通配

        7、支持变量

        8、支持编程

    3、命令历史:

        history:

            查看命令历史:history

            -c:清空命令历史

            -d OFFSET
:删除指定位置的命令

                例1:history -d 500  #删除第500个历史命令

                例2:history -d 500 3 #删除第500个命令起3个历史命令

            -w:保存命令历史至历史文件(家目录下.bash_history)中

    4、命令历史使用技巧:

        !n:执行命令历史中的第N条命令

            例:root@localhost /]# !44

        !-n:执行命令历史中倒数第N条命令

            例:[root@localhost /]# !-44

        !!:重新执行上一次命令

        !string:执行命令历史中最近一个已指定字符(string)串开头的命令

        !$:引用前一个命令的最后一个参数

        ESC,.:引用前一个命令的最后一个参数

        Alt+.:引用前一个命令的最后一个参数

        

    5、命令别名:

        alias CMDALIAS=‘COMMAND [options] [arguments]’

            例:[root@localhost /]# alias cls=clear

        在shell中定义的别名仅在当前shell生命周期中有效:别名有效范围为当前shell进程

        unalias:撤销别名

            例:[root@localhost /]# unalias cls

        \COMMAND:使用命令本身

    

    6、命令替换:

        $(COMMAND)

        `COMMAND`:(反引号)

        把命令中某个子命令替换为其执行结果的过程

        例1:[root@localhost ~]# echo "The current directory is $(pwd)."

4000
            The current directory is /root.

        例2:[root@localhost ~]# touch ./file-$(date +%F-%H-%M-%S).txt

            [root@localhost ~]# ls

            anaconda-ks.cfg  file-2017-03-30-15-10-30.txt  install.log         sort.test

            Desktop          hello                         install.log.syslog

    7、bash支持的引号:

        ``:命令替换

        "":弱引用,可以实现变量替换

        ‘’:强引用,不完成变量替换

        

    8、文件名通配:globbing

        *:匹配任意长度的任意字符

            例:[root@localhost test]# ls a*

                a  a123  ab123  abc

        ?:匹配任意单个字符

            例:[root@localhost test]# ls ?y*

                xyz  xyz123

        []:匹配指定范围内的任意单个字符

            #man 7 glob  #查看通配符

            [a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]

            [:space:]:空白字符

            [:punct:]:标点符号

            [:lower:]:小写字母

            [:upper:]:大写字母

            [:alpha:]:大小写字母

            [:digit:]:数字

            [:alnum:]:数字和大小写字母

            例:[root@localhost test]# ls [a-zA-Z]*[0-9]

                a123  ab123  x12  xyz123

        [^]:匹配指定范围外的任意单个字符

            例:[root@localhost test]# ls [^0-9]*

                a  a123  ab123  abc  Helloy  x12  xyz  xyz123

        

    9、环境变量:

        PATH:命令搜索路径

        HISTSIZE:命令历史缓冲区大小(默认1000条):

            例:[root@localhost ~]# echo $HISTSIZE

                1000

    

二、命令行编辑:

    光标跳转:

    Ctrl+a:跳到命令行首部

    Ctrl+e:跳到命令行尾

    Ctrl+u:删除光标至命令行首的内容

    Ctrl+k:删除光标至命令行尾的内容

    Ctrl+l:清屏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux