bash的基础特性(2)

目录

一、命令别名(alias)

1.通过alias命令实现

2.撤消别名:unalias

二、glob (globbing)

1.通配符:*, ?, []

2.练习

三、bash的快捷键

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

1.输出重定向

2.标准输出和错误输出各自定向至不同位置

3.合并标准输出和错误输出

4.输入重定向:<

5.管道

练习

回顾

参考资料

 

一、命令别名(alias)

1.通过alias命令实现

      ① alias

            显示当前shell进程所有可用的命令别名

      ② alias NAME='VALUE'

            定义别名NAME,其相当于执行命令VALUE

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

            仅对当前用户:~/.bashrc

            对所有用户有效:/etc/bashrc

            问题:编辑方式给出的新配置不会立即生效,如何操作可以立即生效

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

                  .  /path/to/config_file

2.撤消别名:unalias

      unalias [-a] name [name ...]

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

二、glob (globbing)

      bash中用于实现文件名“通配”

1.通配符:*, ?, []

       ① *

            任意长度的任意字符

                  a*b:

                       aab, ab, a123b,

                       abc

      ② ?

            任意单个字符

                  a?b:

                       aab

                       ab, a12b, abc

      ③ []

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

                  [0-9]

                  [a-z]:不区分字符大小写

      ④ [^]

            匹配指定范围外的任意单个字符

                  [^0-9]

                  专用字符集合:

                       [:digit:]:任意数字,相当于0-9

                             P.S.[[:digit:]]相当于[0-9]

                       [:lower:]:任意小写字母

                       [:upper:]:任意大写字母

                       [:alpha:]:任意大小写字母

                       [:alnum:]:任意数字或字母

                       [:space:]:

                       [:punct:]:标点符号

[me@Tux me]$ ls a[[:lower:]]c

aac  abc

转义:\

2.练习

显示/tmp目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

            # ls -d /tmp/l*[0-9]*[[:lower:]]

显示/tmp目录下,以任意一位数字开头,且以数字结尾的文件或目录

            # ls -d /tmp/[0-9]*[^0-9]

显示/tmp/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录

            # ls -d /tmp/[^[:alpha:]][[:alpha:]]*

 

复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/tudou目录中

      # cp -a /etc/m*[^0-9] /tmp/tudou

      或# cp -r /etc/m*[^0-9] /tmp/tudou

复制/etc目录下,所有以.d结尾的文件或目录至/tmp/tudou目录中

            # cp -a /etc/*.d /tmp/tudou

或# cp -r /etc/*.d /tmp/tudou

复制/etc目录下,所以有.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/mageedu.com目录中

# cp -a /etc/[mnrp]*.conf  /tmp/mageedu.com

三、bash的快捷键

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

Ctrl+a:跳转至命令开始处

Ctrl+e:跳转至命令结尾处

Ctrl+c:取消命令的执行

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

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

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

      程序:指令+数据

            读入数据:Input

            输出数据:Output

      Linux一切皆文件,内核识别设备文件需要id,因此打开的文件都有一个fd:file descriptor (文件描述符)

      标准输入:keyborad, 0

            命令本身无默认参数且输入命令时未给予参数,则从标准输入(键盘)中获取数据

      标准输出:monitor, 1

            命令的执行结果

      标准错误输出:monitor, 2

            命令的执行错误状态结果

e.g. cat不指定位置则从标准输入(键盘)中获取数据

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

1.输出重定向

COMMAND > NEW_POS

COMMAND >> NEW_POS

            >覆盖重定向,目标文件中的原有内容会被清除

            >>追加重定向,新内容会追加至目标文件尾部

问题:如何禁止对覆盖重定向

            # set -C:禁止将内容覆盖输出至已有文件中

问题:系统已经禁止对覆盖重定向,如果还想覆盖呢

强制覆盖:>|

            或# set +C:  P.S.  C要大写         (仅对当前shell有效)

            2>覆盖重定向错误输出数据流

            2>>追加重定向错误输出数据流

2.标准输出和错误输出各自定向至不同位置

COMMAND >  /path/to/file.out  2>  /path/to/error.out

3.合并标准输出和错误输出

两类标准输出合并为同一个数据流进行重定向

&>覆盖重定向

&>>追加重定向

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

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

4.输入重定向:<

不能接文件作为参数的命令,可以用输入重定向获取参数

            命令:tr转换或删除字符 (tr不能接文件作参数)

                  tr [OPTION]... SET1 [SET2]

                  -d把参数中的与SET1相同的字符都删去

                  不加参数:把字符集SET1 对位替换成SET2

P.S. 使用输入重定向时一般不会跟两个参数

<<结束字符  创建文档

            # cat << EOF

            # cat > /path/to/somefile << EOF

      此处生成文档:从键盘键入一些字符保存到指定文档,遇到给定字符结束

5.管道

      COMMAND1 | COMMAND2 | COMMAND3 |...

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

      命令:tee   既输出到屏幕又保存到指定路径下

            tee [OPTION]... [FILE]...  一路输入,两路输出

练习

将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd文件中

                  $ head -5 /etc/passwd | tr 'a-z' 'A-Z'  /tmp/passwd

将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中

                  # who | tail -n 3 | tr 'a-z' 'A-Z'  >  /tmp/who.out

回顾

      alias/unalias, glob (*, ?, [], [^]), 快捷键

      bash基础特性:

            命令行展开:~, {}

            命令别名:alias/unalias

            命令历史:history

            命令和路径补全:$PATH

            glob:*, ?, [], [^]

            快捷键:Ctrl+{a,e,l,c,u,k}

            命令hash:hash

            IO重定向、管道:

                  标准输出重定向:>, >>

                  标准错误重定向:2>, 2>>

                  &>, &>>

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

            输入重定向:<

                  显式使用:tr

                  隐式使用:...

            管道:COMMAND1 | COMMAND2 | ...

参考资料:

马哥随堂笔记

注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值