bash shell 重定向

  1. 标准输出重定向
$ list -l /usr/bin > ls-output.txt
重写

$ list /usr >> ls-output.txt
追加
  1. 标准错误重定向
$ list abc 2> ls-output.txt
  1. 标准输出和错误重定向到同一个文件
$ list abc > ls-output.txt 2>&1
OR
$ list abc &> ls-output
  1. cat
$ cat [file ...]
连接多个文件并输出到标准输出

$ cat a.txt b.txt > c.txt
连接两个文件输出到标准输出,然后重定向标准输出到c.txt

$ cat > input.txt
cat不接参数将接受标准输入作为输入,Ctrl+D结束输入(EOF)。此方法可以快速创建短文本文件。
  1. 管道线
$ ls -la /usr | less
通过管道线,将一条命令的标准输出输送到另一条命令的标准输入(作为另一条命令的参数)

Notice: 在管道线中传输的是stdout文件,而不是文件的内容

$ which cp | ls
这里的用法是错误的,ls打印的实际是当前目录而不是/bin/cp

$ ls $(which cp)
可以用命令替换来实现这样的操作
OR
$ ls `which cp`
  1. 过滤器
$ ls /bin /usr/bin | sort | uniq | less
整理输出可执行程序列表(排序、去重)
通常情况下uniq需和sort配合使用,只能检测临近行uniq

$ uniq -d 
 -d选项:仅显示重复列表
  1. wc
$ wc [file ...]
打印行数、字数、字节数

$ ls /bin /usr/bin | sort | uniq | wc -l
统计可执行程序的个数

$ wc 
wc不带参数则接受标准输入
  1. grep
$ grep pattern [file ...]
pattern 可接受正则表达式

grep不带参数则接受标准输入

$ grep -i
忽略大小写

$ grep -v 
仅打印不匹配行
  1. head / tail
$ head/tail [-n lineNum] [file ...]
显示文件前/后10行(或指定行数)

$ tail -f 
实时监控并更新打印行
  1. tee
$ ls /bin | tee list.txt | grep zip
根据管道线的特点,即取左边命令的标准输出作为右边命令的标准输入
可以将tee引入其中作为一环来保存中间数据

你可能感兴趣的:(bash shell 重定向)