Linux学习笔记11—BASH基础特性glob及IO重定向

Linux学习笔记11—BASH基础特性glob及IO重定向
回顾:
bash基础特性:命令补全,路径补全,命令引用
文件或目录的复制、移动、删除
变量:变量类型,存储格式,数据表示范围,参与的运算

bash的基础特性:
globbing:文件名通配机制
匹配模式:元字符
*:匹配任意长度的任意字符
?:匹配任意单个字符
[ ]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9], [abcxyz]
pa[0-9][0-9]
[[:upper:]]:只匹配大写字母开头
[[:lower:]]:只匹配小写字母开头
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号字符
[^]:匹配指定范围之外的任意单个字符
练习1:显示/var/log目录所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录
~]# ls -d /var/l?[[lower:]]

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

练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或目录
~]# ls -d /etc/[^a-z][a-z]*

练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/magedu.com目录
~]# mkdir /tmp/magedu.com
~]# ls -d /etc/m*[^0-9]
~]# cp -r /etc/m*[^0-9] /tmp/magedu.com

练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下
~]# mkdir /tmp/man
~]# ls -d /usr/share/man/man[0-9]
~]# cp -r /usr/share/man/man[0-9] /tmp/man

练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下
~]# mkdir /tmp/conf.d
~]# ls -d /etc/[mnrp].conf
~]# cp -r /etc/[mnrp]
.conf /tmp/conf.d

IO重定向及管道
程序:指令+数据
程序也有IO的概念
可以输入的设备、文件
键盘设备,文件系统上的常规文件,网卡等
可以输出的设备、文件
显示器、文件系统上的常规文件,网卡等

程序的数据流有三种:
输入的数据流:<-- 标准输入(stdin), 通常使用键盘
输出的数据流:–>标准输出(stdout),通常输出至显示器
错误输出流:–>错误输出(stderr),通常输出至显示器
fd:file descriptor,文件描述符
标准输入通常用:0表示
标准输出通常用:1表示
错误输出通常用:2表示

IO重定向概念:可以重定向至任何文件或终端
1、输出重定向:>
特性:覆盖输出重定向
~]# ls /var > /tmp/issue.com
2、追加输出重定向:>>,在原有文件的尾部追加输出
# set -C:禁止覆盖输出重定向至已存在的文件
此时可使用强制覆盖输出:>
# set +C:关闭上述特性
错误输出流重定向:2> , 2>>

合并正常属于流和错误输出流:
第一种方式:&> ,&>>
第二种方式:COMMAND > PATH/TO/somefile 2>&1
COMMAND >> PATH/TO/somefile 2>&1

3、输入重定向:<
tr命令:
把输入的数据当中的字符,凡是在SET1定义范围内出现的,统统对位转换为SET2出现的字符
例如:tr abc ABC
~]# tr [a-z] [A-Z]
how are you?
HOW ARE YOU?

用法1:
tr SET1 SET2 < /PATH/FROM/somefile
用法2:
tr -d SET1 < /PATH/FROM/somefile
注意:不会修改源文件当中信息,只是输出到屏幕上

此处创建文档:<<
把此处输入的相关内容保存到指定文档当中
~]# cat << EOF

How are you?
How do you do?
EOF

~]# cat > /tmp <<EOF

4、管道:连接程序,实现将前一个命令的输出直接定向给后一个程序当做输入数据流
COMMAND1 | COMMAND2 | COMMAND3
~]# who | head -2 | tr ‘a-z’ ‘A-Z’
tee命令:把数据流分叉,其中一份保存至新文件,另一份发送tr命令
COMMAND | tee PATH/TO/somefile
~]# cat /etc/issue | tee /tmp/issue.tee | tr ‘a-z’ ‘A-Z’

练习1:把/etc/passwd文件的前6行的信息转换为大写字符后输出
~]# head -n 6 /etc/passwd | tr ‘a-z’ ‘A-Z’

特殊设备/dev/null:数据黑洞
判断命令执行是成功或失败而不关心命令运行的结果,则可以重定向至/dev/null
~]# ls /varr &> /dev/null
~]# echo $?
2 代表运行状态错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值