Linux I/O重定向与管道

发布时间 2023-11-26 21:50:55作者: 达利园111

1.IO重定向

I/O重定向是一个过程,这个过程捕捉一个文件、命令、程序或脚本,甚至代码块的输出,然后把捕捉到的输出作为输入发送给另外一个文件、命令、程序或脚本。

文件描述文件名类型硬件
0 stdin 标准输入文件 键盘
1 stdout 标准输出文件 显示器
2 stderr 标准错误输出文件 显示器

输出重定向:是指命令的结果不再输出到终端上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来
输入重定向:指的是’重新指定设备’来代替键盘作为新的输入设备
符号 意义
1>或> 把标准输出重定向到文件
2> 把标准错输出重定向到文件1

  • cat和>符号结合使用成为简易文本编辑器

cat > filename
# 1.cat命令后不加任何参数时,cat命令的输入是标准输入,即键盘输入
# 2.I/O重定向符号">"将键盘输入写入文件
# 3.将写入的文件作为输出放入filename
# 4."Ctrl+D"组合键结束编辑

“>>“和”>”(符号符号左边输出作为右边输入(标准输出))

  • ">>"符号将标准输出追加到已有文件的内容之后
  • ">"符号将文件的原有文件覆盖,然后写入标准输出的内容

">|"符号

">|"符号是强制覆盖文件的符号
">|“与shell的noclobber选项有关,如果noclobber选项开启,表示不允许覆盖任何文件,而”>|"符号则可以不管noclobber选项的作用,强制将文件覆盖
"<"符号(符号右边输出作为左边输入(标准输入))

"<"是I/O重定向的输入符号,它可将文件内容写到标准输入之中

2. 管道

命令从标准输入到读取数据,并将数据发送到标准输出的能力,是使用了名为管道的shell特性。使用管道操作符“|”可以把一个命令的标准输出传送到另一个命令的标准输入中。

  • sort: 排序,将输入排序
  • uniq:报错或忽略文件中重复的行
  • wc:打印行数、字数和字节数
  • grep:打印匹配行
  • head/tail:打印文件的开头部分/结尾部分head命令将输出文件的前10行,tail命令则输出文件名的最后10行。也可以通过-n参数来修改输出的行数
  • tee: 从stdin读取数据,并同时输出到stdout和文件