今天我们来讲下Linux中的重定向、管道和grep命令。由于重定向和管道知识点比较少,但是又比较重要所以和grep命令一起讲。在将重定向我们先讲下系统的标准输入和输出。在Linux中标准输入(STDIN 0)对应设备:键盘;标准输出(STDOUT 1)和标准错误输出(STDERR 2)对应设备:显示器。重定向就是将标准输入输出重新定位到指定位置或者设备中(比如:文件)。I/O重定向set –C 禁止对已存在的文件进行覆盖重定向强制覆盖>|set +C 关闭上述功能输出重定向:>:输出重定向,会进行覆盖操作(原数据会被覆盖)>>:追加输出重定向,不进行覆盖会进行追加输出2>:错误输出重定向2>>:错误追加输出重定向&>:重定向标准输出或者错误输出至一个文件 输入重定向:<:输入重定向文本内容的重定向示例:“passwd --stdin user10 < var.out” 相同效果”cat var.out | passwd --stdin user10”<<:Here Document cat << END(EOF) END为结束符 示例:# cat >> var.out <<EOF > This first line > The second > EOF 管道管道是将前一个命令的输出作为后一个命令的输入命令1|命令2|命令3命令1的输出作为命令2的输入,命令2的输出作为命令3的输入 示例:cat var.out | passwd --stdin user10 密钥生成示例:echo "redhat" | openssl passwd -1-salt "12345678" –stdin 正则表达式grep依据模式去匹配对应的文件并将匹配到的内容显示出来grep [options] PATTERN [FILE...]PATTERN 文本字符和元字符组合而成的匹配条件选项有-A 显示匹配的后几行-B 显示匹配的前几行-C 显示匹配的前后几行-E 使用扩展正则表达式-i 匹配时忽略大小写-o 只显示匹配的部分-r 递归查找匹配 元字符.:匹配任意单个字符[]:匹配指定范围内的任意单个字符[^]:匹配指定范围外的任意单个字符匹配次数(正则表达式工作在贪婪模式下)*:匹配前面的字符任意长度\?:匹配前面的字符0或1次\{n,m\}:匹配前面的字符至少n次,至多m次 \{n\}=\{n,n\}位置锚定^:锚定在行数,匹配后面的内容出现在行首$:锚定在行尾,匹配后面的内容出现在行尾^$ 空白行单词中间没有出现特殊字符的字符串\<(\b):单词的词首 \>(\b):单词的词尾分组\(\):将一系列的表达式作为一组 后面调用前面的表达式\1,\2 \1:表示第一个小括号以及其对应的右括号对应的所有内容 扩展表达式:下面列出与上面不同的地方。?:表示前面的字符出现一次或零次+:表示前面的字符至少出现一次{n,m}:表示前面的字符至少出现n次,至多出现m次():表示分组|:表示或者,匹配其中一个即可 结语:今天讲的东西看似不是很多,但是他十分重要,在后面的shell编程中会大量用到管道和正则表达方式,所以需要多加练习。本文出自 “11342100” 博客,请务必保留此出处http://11352100.blog.51cto.com/11342100/1916309
原文:http://11352100.blog.51cto.com/11342100/1916309