bash的基础特性

Posted 农夫运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash的基础特性相关的知识,希望对你有一定的参考价值。

bash的基础特性(2):
    
    1、命令别名(alias)
        通过alias命令实现:
            (1) alias
                显示当前shell进程所有可用的命令别名;
            (2) alias NAME='VALUE'
                定义别名NAME,其相当于执行命令VALUE;

            注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;
                仅对当前用户:~/.bashrc
                对所有用户有效:/etc/bashrc

                Note: 编辑配置给出的新配置不会立即生效;

                bash进程重新读取配置文件:
                    source /path/to/config_file
                    .  /path/to/config_file

        撤消别名:unalias
            unalias [-a] name [name ...]

        Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND";

    2、glob (globbing)
        bash中用于实现文件名“通配”

            通配符:*, ?, []

            (1) *
                任意长度的任意字符
                    a*b:
                        aab, ab, a123b,
                        abc
            (2) ?
                任意单个字符
                    a?b:
                        aab
                        ab, a12b, abc

            (3) []
                匹配指定范围内的任意单个字符
                    [0-9]
                    [a-z]:不区分字符大小写

            (4) [^]
                匹配指定范围外的任意单个字符
                    [^0-9]

            专用字符集合:
                [:digit:]:任意数字,相当于0-9
                [:lower:]:任意小写字母
                [:upper:]: 任意大写字母
                [:alpha:]: 任意大小写字母
                [:alnum:]:任意数字或字母
                [:space:]:
                [:punct:]:标点符号

        练习:
            1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
                # ls -d /var/l*[0-9]*[[:lower:]]

            2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
                # ls -d /etc/[0-9]*[^0-9]

            3、显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;
                # ls /etc/[^[:alpha:]][[:alpha:]]*

            4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/mageedu目录中;
                # cp -a /etc/m*[^0-9] /tmp/mageedu

            5、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/magedu.com目录中;
                # cp -a /etc/*.d /tmp/magedu.com

            6、复制/etc目录下,所以有.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/mageedu.com目录中;
                # cp -a /etc/[mnrp]*.conf  /tmp/mageedu.com

    3、bash的快捷键

        Ctrl+l: 清屏,相当于clear命令;

        Ctrl+a:跳转至命令开始处;
        Ctrl+e:跳转至命令结尾处;

        Ctrl+c:取消命令的执行;

        Ctrl+u: 删除命令行首至光村所在处的所有内容;
        Ctrl+k: 删除光标所在处至命令行尾部的所有内容;

    4、bash的的I/O重定向及管道

        程序:指令+数据
            读入数据:Input
            输出数据:Output

        打开的文件都有一个fd: file descriptor (文件描述符)

        标准输入:keyborad, 0
        标准输出:monitor, 1
        标准错误输出:monitor, 2

        I/O重定向:改变标准位置

        输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS
            >:覆盖重定向,目标文件中的原有内容会被清除;
            >>: 追加重定向,新内容会追加至目标文件尾部;

            # set -C: 禁止将内容覆盖输出至已有文件中;
                强制覆盖:>|
            # set +C:

            2>: 覆盖重定向错误输出数据流;
            2>>: 追加重定向错误输出数据流;

            标准输出和错误输出各自定向至不同位置:
                COMMAND > /path/to/file.out 2> /path/to/error.out

            合并标准输出和错误输出为同一个数据流进行重定向:
                &>:覆盖重定向
                &>>:追加重定向

                COMMAND > /path/to/file.out 2> &1
                COMMAND >> /path/to/file.out 2>> &1

        输入重定向:<

            tr命令:转换或删除字符
                tr [OPTION]... SET1 [SET2]

        HERE Documentation:<<
            # cat << EOF
            # cat > /path/to/somefile << EOF

    管道:
        COMMAND1 | COMMAND2 | COMMAND3 |...

        Note:最后一个命令会在当前shell进程的子shell进程中执行;

        tee命令:
            tee [OPTION]... [FILE]...

    练习:
        1、将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;

        2、将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中;
            # who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out

文本处理工具:wc, cut, sort, uniq

    wc命令:
        wc [OPTION]... [FILE]...
            -l: lines
            -w: words
            -c: characters

    cut命令:
        cut [OPTION]... [FILE]...
            -d DELIMITER: 指明分隔符
            -f FILEDS:
                #: 第#个字段
                #,#[,#]:离散的多个字段,例如1,3,6
                #-#:连续的多个字段, 例如1-6

                混合使用:1-3,7
            --output-delimiter=STRING

    sort命令:
        sort [OPTION]... [FILE]...
            -f: 忽略字符大小写
            -r: 逆序
            -t DELIMITER: 字段分隔符
            -k #:以指定字段为标准排序
            -n: 以数值大小进行排序
            -u: uniq,排序后去重

    uniq命令:
        uniq [OPTION]... [FILE]...
            -c: 显示每行重复出现的次数;
            -d: 仅显示重复过的行;
            -u: 仅显示不曾重复的行;

        Note: 连续且完全相同方为重复

    练习:以冒号分隔,取出/etc/passwd文件的第6至第10行,并将这些信息按第3个字段的数值大小进行排序;最后仅显示的各自的第1个字段;

回顾:
    文件管理命令、bash的基础特性、文件本管理命令

    文件管理命令:cp, mv, rm

    bash基础特性:alias/unalias, glob (*, ?, [], [^]), 快捷键

    IO重定向、管道:
        标准输出重定向:>, >>
        标准错误重定向:2>, 2>>

            &>, &>>
            COMMAND > /path/to/somefile.out 2> &1

        输入重定向:<
            显式使用:tr
            隐式使用:...

        管道:COMMAND1 | COMMAND2 | ...

    文本处理命令:wc, cut, sort, uniq



bash的基础特性(2)

bash的基础特性(2)


关注“农夫运维” 一起成长!

“我们进步,因为我们分享!”

“分享是一种精神,感恩是一种品德。” 


bash的基础特性(2)
bash的基础特性(2)


以上是关于bash的基础特性的主要内容,如果未能解决你的问题,请参考以下文章

Lunix基础入门--bash的基础特性

bash基础特性

bash的基础特性

Linux自学笔记:bash基础特性及基础命令

2017-11-5Linux基础知识(10)bash基础特性

Bash基础特性