Linux专栏_章节六_shell中的IO重定向

重定向

通常来说, shell的接收键盘的输入, 然后处理, 并且将处理结果显示在屏幕上. 因此, 键盘输入被称为是 “标准输入”; 屏幕输出被称为是 “标准输出”. 然而我们可以改变shell获得输入的方式, 使其不仅是从键盘获取输入. 同时, 我们也可以改变shell输出的对象, 使其不只是输出在屏幕上.
本章, 我们将用到的命令如下

cat: 合并文件
sort: 对文本行排序
uniq: 报告或者删除文件中重复的行
wc: 打印文件中的换行符, 字和字节的个数
grep: 打印匹配行
head: 输出文件的第一部分内容
tail: 输出文件的最后一部分内容
tee: 读取标准输入的数据, 并将其内容输出到标准输出和文件中

标准输入, 标准输出 和 标准错误

当我们在shell中, 通过键盘输入命令, 就会得到输出
输出分为两种, 一种是命令的 运行结果, 一种是命令的 状态和错误信息
实际上, 我们的输入和shell的输出都会存储在文件中

  • 键盘的输入存储在 标准输入文件中
  • shell的输出分别存储在 标准输出文件(运行结果) 和 标准错误文件(状态和错误信息)
  • 注意, 这三种文件不会被保存在磁盘文件中
    • 标准输入文件和键盘链接
    • 标准输出文件和标准错误文件和屏幕链接

不过, 我们可以改变输入内容的来源 和 输出内容的目的地, 这也就是重定向
标准输出重定向
利用标准输出重定向操作符">“和”>>"
1.>的使用: 将标准输出重定向到另一个文件中
格式

	命令 > 自己设定的输出文件[用来替换标准输出文件]
	ls -l /usr/bin > ls-output.txt
  • 如果你所给定的文件存在, 那么>将会输出 从头开始 覆盖该文件
  • 如果你多给的文件不存在, 那么>将会创建该文件

的妙用 用于创建空白文件: > name.txt (不提供命令, 这时候你将得到一个空白的名字为name.txt的文件)

2.>>的使用: 将标准输出重定向到另一个文件中
格式

	命令 >> 自己设定的输出文件[用来替换标准输出文件]
	ls -l /usr/bin > ls-output.txt
  • 如果你所给定的文件存在, 那么>将会输出 从尾开始 覆盖该文件
  • 如果你多给的文件不存在, 那么>将会创建该文件
    标准错误重定向
  • 标准错误重定向, 不能直接使用重定向符号来实现, 要加上一个2, 组成2>
    • 2的来源

      • 标准输入文件, 标准输出文件, 标准错误文件在文件流中是有序号的, 分别是0,1,2
    • 格式

      命令 2> 文件名称
      ls -l /bin/usr 2> ls-error.txt
      

标准输出和错误重定向到同一个文件中

  • 使用 &> 符号

  • 格式

    命令 &> 文件名称
    ls -l /bin/usr &> ls-output.txt
    

处理不需要的输出
重定向到/dev/null中
标准输入重定向

  • 使用cat命令和<符号–合并文件

  • 格式

      cat [file...]
      // 读取file文件中的. 然后输出到标准输出中
      
      cat [file1, file2...] > file_all
      // 读取所有的file里面的内容, 输出到file_all中
      
      cat
      // 等待键盘的输入, 输出标准输出中(Ctrl + D--退出)
      
      cat > file
      // 等待键盘的输入, 输出到file中
      
      cat < file
      // 读取file中的内容做为输入, 输出到标准输出中
    

你可能感兴趣的:(linux,运维,服务器)