【glob及IO重定向(01)】笔记

bash的基础特性

globbing:文件名通配(整体文件名匹配,非局部文件名匹配)
匹配模式:元字符

  • * :匹配任意长度的任意字符
    str*,*str*,*str,*s*t*r*
  • ?:匹配任何单个字符
    str?,?str,?str?,?s?t?r?
  • []:匹配指定范围内的任意单个字符
  • [[:upper:]]或[A-Z]:所有大写字母
  • [[:lower:]]:所有小写字母
  • [[:alpha:]]或[a-z]:所有字母
  • [[:digit:]]或[0-9]:所有数字
  • [[:alnum:]]:所有字母和数字
  • [[:space:]]:所有空白字符
  • [[:punct:]]:所有标点符号
  • [^]:匹配指定范围外的任意单个字符,相当于反向匹配
    *“\”为转义符

IO重定向及管道
程序是指令加数据,必须有IO

  • 输入设备包括:键盘设备、文件系统上的常规文件、网卡等
  • 输出设备包括:显示器、文件系统上的常规文件,网卡等

程序的数据流分三种:

  • 输入的数据流:标准输入(stdin),键盘
  • 输出的数据流:标准输出(stdon),显示器
  • 错误输出流: 错误输出(stderr),显示器

fd:file descriptor,文件描述符

  • 标准输入:0
  • 标准输出:1
  • 错误输出:2

IO重定向

  • 输出重定向,>
    特性:覆盖输出,无提示,不可恢复,危险操作!
    set
    设置或撤销,仅针对当前特性
    -c 禁止覆盖输出重定向已经存在的文件;
    ~]# set -c 表示打开set特性,此时若要强行覆盖可以使用[path] >| [path]实现
    ~]# set +c 表示关闭set特性

  • 输出重定向,>>
    特性:追加输出,把输出添加到目标
    错误输出流重定向: 2> (同样会覆盖文件),2>>
    合并正常输出流和错误输出流
    &>,&>>
    ~]# COMMAND > [path] 2>&1
    ~]# COMMAND >> [path] 2>&1

  • 特殊设备:/dev/null
    任何数据的输入/dev/null都会丢弃,也叫数据黑洞
    单不需要输入的结果时就可以把数据流定向到/dev/null
    如:~]# head -1 /etc/passwd &> /dev/null

  • 输入重定向,<

tr命令:
把输入的数据当中的字符,凡是在SET1定义范围出现的,全部对位转换为SET2出现的字符。
其过程不会修改源文件,只是把结果输出到显示器
tr [option]...SET1[SET2]
~]# tr SET1 SET2 < [PATH]
-d
如:~]# tr [a-z][A-Z]
表示接下来的输入会把小写字母转换为大写字母输出在显示器
~]# tr [a-z][A-Z] < [PATH]
表示把[PATH]内容中的小写字母替换为大写字母并输出
~]# tr -d SET1 < [PATH]
表示把[PATH]中符合SET1条件的内容删除并输出

  • << :Here Document
    cat << [结束符]
    表示接下来输入的内容在输入结束符后会全部输出至显示器
    *结束符不应与输入内容匹配
    cat > [PATH&NAME] << [结束符]
    表示接下来输入的内容将在[PATH&NAME]中创建一个名为NAME的文档,并保存

管道
连接程序,实现将前一个命令的输出直接定向给后一个程序当输入数据流
COMMAND1 | COMMAND2 | COMMAND3……
如:
~]# cat /etc/issue | tr [a-z][A-Z]

tee命令
把输入数据流输出至显示器并保存至指定文件,经常跟管道一起使用,实现数据流分方向发送
COMMAND | tee /PATH/TO/SOMEFILE
如:
~]# cat /etc/issue | tee /tmp/issue.tee

本课教程视频地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容