bash基础特性2

命令别名(alias)

(1)alias
    显示当前shell进程所有可用的命令别名:
    (2)alias NAME='VALUE'
        定义别名NAME,相当于执行命令value
    (3)unlias
        撤销别名
    注意:
        在命令行中定义的别名,仅对当前shell进程有效:如果想永久有效,要定义再配置文件中
        仅对当前用户:~/.bashrc
        对所有用户有效:/etc/.bashrc
        别名持久化:
            vim .bashrc
                alias NAME='VALUE'
            source .bashrc

glob(globbing)

bash中用于实现文件"通配"
        通配符:*,?,[]
        (1)*:
            任意长度的任意字符
                a*b:
                    aab,ab,a123b
        (2)?:
            任意单个字符
                a?b
                    aab
        
        (3)[]:
            匹配指定范围内的任意单个字符
                [a-z]:不区分字符大小写
                [0-9]:
                [A-Z]:代表大写字母
        (4)^:
            匹配指定范围之外的任意字符
                [^0-9]
        专用字符集合:
            [:alnum:]:任意数字或字母
            [:alpha:]:任意大小写字母  
            [:digit:]:任意数字,相当于0-9  
            [:lower:]:任意小写字母  
            [:punct:]:表示标点符号  
            [:space:]:匹配空格字符  
            [:upper:]:任意大写字母  
            [:xdigit:]
            [:blank:]    
            [:cntrl:]
            [:print:]
            [:graph:]

练习

1.显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字的文件或者目录;
2.显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或者目录
3.显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或者目录
4.复制/etc目录下,所有以m开头,以非数字结尾的文件或者目录至/tmp/fengzi目录中
5.复制/etc目录下,所有以.d结尾的文件或者目录到/tmp/fengzi目录中
6.复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或者目录到/tmp/fengzi目录下

答案

1.ls -ltr l*[0-9]*[[:lower:]]
2.ls -ltr [0-9]*[^0-9]
3.ls -ltr [^0-9][a-z]*
4.cp /etc/m*[^0-9] /tmp/fenzi
5.cp /etc/*.d /tmp/fengzi
6.cp /etc/{m,n,r,p}*.conf

bash的快捷键

ctrl+l:清屏,相当于clear命令
ctrl+a:跳转至命令开始处
ctrl+e:跳转至命令结尾
ctrl+c:取消命令的执行
ctrl+u:删除命令行首至光标所在处的所有内容
ctrl+k:删除光标所在处至命令行尾部的所有内容
    

bash的I/O重定向管道

程序:指令+数据
    读入数据:input
    输出数据:output
    打开的文件都有一个fd:file descriptor(文件描述符)
    标准输入:keyboard, 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
    输入重定向
        tr命令:转换成删除字符    
    HERE Documentation: <<
        #cat << EOF
        #cat > /path/to/somefile <<EOF
管道:
    COMMAND1 | COMMAND2 | COMMAND3 |...
    Note:最后一个命令会在当前shell进程的子shell进程中

猜你喜欢

转载自www.cnblogs.com/fengzi7314/p/10770494.html