UNIX学习笔记

重定向与管道

Posted by SHIELD-SKY on August 4, 2016

重定向

  • 输入重定向
command < input-file	
  • 输出重定向
command > output-file
  • 合并输入输出重定向
command < input-file > output-file
command > output-file < input-file
  • 带文件描述符的输入、输出重定向

UNIX内核为每一个打开文件关联一个小的整数,该整数成为该文件的文件描述符。标准输入、标准输出和标准错误的文件描述符分别是0、1和2.

利用文件描述符,在Bourne shell、Korn shell、Bash shell和POSIX shell中分别可用操作符0<>1来重定向标准输入和标准输出。因此命令cat 1> outfile 等价于 cat > outfile,它从标准输入读取输入并将结果送到文件outfile,错误信息显示在屏幕上

文件描述符0可用在操作符<前面,从而显示地说明输入从定向的文件中。

  • 标准错误重定向
command 2> error-file

作用:将‘command’产生的错误信息发送到已重定向到‘error-file’的标准错误文件中

  • 在一个命令中重定向标准输出与标准错误
cat lab1 lab2 lab3 1> cat.out.errors 2>&1

该命令讲命令cat的stdout和stderr重定向到文件cat.output.errors中,因此在同一个文件(cat.output.errors)中包含了cat的输出及所有命令可能产生的错误信息

在该命令中,字符串2>&1告诉命令shell讲描述符2作为描述符1的一个副本,这样一来错误消息和命令的输出就都被发送到相同的地方。

  • 在一个命令中重定向标准输入、标准输出和标准错误
command 0<input-file 1> output-file 2>error-file
  • 不覆盖文件内容的重定向(添加)

只需用操作符»替代>。带»的默认文件描述符是1,而文件描述符2可用于在文件添加错误信息。

UNIX管道

UNIX系统允许某条命令的标准输出连接到另一命令的标准输入上。

command1 | command2 | ... |commandN

注:

C shell的输入、输出和添加操作符可以向其他shell中一样工作。然而C shell中,文件描述符不能和这些操作符一起使用。

本人用zsh,非常强大,平常用的应该都够了,大家可参考池建强的随想录