【linux_笔记】Linux_bash特性详解

学习资源来自:www.magedu.com

学习记录过程中难免出现错误,如有发现,还望大神们指出。

示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行。示例仅供参考。


bash及其特性:


    bash:兼具sh、csh、ksh的各种特性,而且更加强大,众多发行版商默认使用bsh。
    
    sh自身是一个可执行程序,在用户登录时被启动,当用户输入用户名和密码后,
    为用户打开一个sh,给用户输入命令。
    
    一个系统同时登陆了两个用户,则当前系统上一共有一个bash程序,但是有两个bash进程。
            
    linux系统特性:允许同一个用户登录多次,而这些多次登录的账户所打开sh都是各自
        独立的,彼此各不相干。
        
    进程:在每个进程看来,当前主机上只存在内核和当前进程,系统通过进程号对进程进行识别。
        进程是程序的副本,进程是程序执行的实例。
        
    shell支持用户自我定义自我环境
        
    shell可以打开子shell

    示例:

        bash
        bash
        bash
        export LANG=en
        pstree ―― 会看到一行:-login---bash-+-bash---bash---hash---pstree
        exit 退出当前shell
        pstree―― -login---bash-+-bash---hash---pstree
    
    bash:
    1、支持命令历史、命令补全
    2、支持管道、重定向
    3、支持命令别名
    4、支持命令行编辑
    5、支持命令行展开
    6、支持文件名通配
    7、支持使用变量
    9、支持编程
    
    命令行编辑

    示例:

        ccat /etc/fstab /etc/rc.d
        光标跳转:
            ctrl+a:跳至命令行首
            ctrl+e:跳至命令行尾
            ctrl+u:删除光标至命令行首的内容
            ctrl+k:删除光标至命令行尾的内容
            ctrl+l:清屏
    
    命令历史:上下箭头
    查看命令历史
        history ―― 带着行号显示命令历史里的命令
            -c:清空命令历史
            -d:删除指定历史命令
            -w:保存命令历史至历史文件中。将缓冲区里的历史命令写到文件里
        示例:
            history
            history -d 500 ―― 删除第500行命令
            history
            history 10 ―― 显示最近执行的10条命令(包括history 10)。
            ls -a ―― .bash historyhe(历史文件)
    
        环境变量
            PATH:命令搜索路径
            HISTSIZE:命令历史缓冲区大小(默认1000) ―― echo $HISTSIZE
    
        命令历史的使用
            !n:执行命令历史中的第n条命令
            !-n:执行命令历史中的倒数第n条命令
            !!:执行上一条命令
            !STRING:执行命令历史中最近一个以指定字符串开头的命令
            !$:引用上一个命令的最后一个参数,以下两个命令也可实现该功能:
                Esc + .
                Alt+. ―― 远程终端不支持,本地支持
    
    命令补全:在PATH环境变量下搜索补全。
        tab(补全)―― 输入字符指向唯一一个命令
        tab,tab(显示所有以输入字符开头的命令)
        前提:PATH环境变量设定正常。
        示例:
            ech  +  tab  ―― 补全命令
            cl    +     tab tab   ―― 显示所有以cl开头的命令
        
        路径补全:在输入的打头路径下查找,使用方法和命令补全一样。
            示例:
                cd /etc/sys      tab    tab  ―― 显示
                cd /etc/sysco    tab         ―― 补全
    
    命令别名(有生命周期):给一个命令另起一个名字
        alias CMDALIAS='COMMAND [options] [arguments]'
        在shell中定义的别名仅在当前shell生命周期中有效,
        别名的有效范围仅为当前shell进程(永久有效需要修改配置文件信息。)
        
        ualias CMDALIAS:撤销别名
        
        \CMD:使用命令别名中的命令本身(不带选项)
        
        示例:
            cls   ―― 清屏失败(linux不支持cls)
            alias cls=clear
            cls    ―― 清屏成功
            alias ―― 显示当前系统上所有的别名
            ualias cls
            cls


    命令替换: $(COMMAND), 反引号:`COMMAND`
        把命令中某个子命令替换为其执行结果的过程
        示例:
            echo "The current directory /root."
            cd /etc/sysconfig
            echo "The current directory /root." ―― 命令达不到要求,显示目录与实际目录不符
            pwd
            echo "The current directory is $(pwd)." ―― 命令替换,显示目录与实际目录相符
            cd
            echo "The current directory is $(pwd)."
            touch ./file-$(date +%F-%H-%M-%S).txt ―― 在当前目录下创建一个file(当前时间.txt)
            echo "The current directory `pwd`."
            
    bash支持的引号
        ``: 命令替换
        "": 弱引用,可以实现变量替换
        '': 强引用,不完成变量替换


    文件名通配:globbing
        *: 任意长度的任意字符
        ?:任意单个字符
        [^]: 匹配指定范围之外的任意单个字符
        []:匹配指定范围内的任意单个字符
            [abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
            主要字符集:
                [:space:]:空白字符
                [:punct:]:标点符号
                [:lower:]:小写字母
                [:upper:]: 大写字母
                [:alpha:]: 大小写字母
                [:digit:]: 数字
                [:alnum:]: 数字和大小写字母
        示例:
            mkdir test
            pwd
            ls
            touch a123 abc ab123 xyz x12 xyz123
            ls
            ls a* ―― 显示所有以a开头的文件
            touch a
            ls a*
            ls
            ls a*3 ―― 显示以a开头以3结尾的文件
            ls ?y* ―― 显示以任意一个字符开头,其后跟了个y,y后边有任意长度的任意字符的文件
            touch 1xy6
            ls [a-zA-Z]*[0-9] ―― 显示以任意字母开头,以数字结尾的文件
            ls [^0-9]* ―― 不显示以数字开头的文件
            touch 'a b' ―― 建立一个a b的文件
            ls [[:alpha:]]*[[:space:]]*[[:alpha:]]
                (显示以字母开头、字母结尾,中间包含空白符的文件名的文件)
            ls [[:alpha:]]*[[:space:]]*[^[:alpha:]]
                (显示以字母开头、结尾不是字母,中间包含空白符的文件名的文件)

你可能感兴趣的:(bash,命令行编辑,命令别名,命令历史,文件名通配)