Linux学习-标准I/O

正在学习Linux,记录一下学习历程。参考《Unix&Linux大学教程》(幽默感+事无巨细),进行了精简摘要和总结。奋斗

Linux设计准则:

  • 每个程序或则命令应该时一个工具,它只完成一件事情,但是一定要完成好这件事情。
  • 当需要新工具时,最好对现有的工具进行组合,而不是编写一个新工具。

Less is more


标准I/O

每个基于文本的程序都应该能够从任何源接受输入,并向任何目标写入输出。

一种读取数据的通用方法(标准输入stdin)

两种写出数据的通用方法(标准输出stdout和标准错误stderr)

在登录时,shell会自动将标准输入设置为键盘,将标准输出和标准错误设置为屏幕。

在每次输入命令时,都可以告诉shell在此命令执行期间重置标准输入,标准输出,标准错误。


文件描述符

在Linux进程中,每个输入源和每个输出目标都由一个唯一的数字标识,这个数字称为文件描述符。

在编写程序时,使用文件描述符控制I/O,每个文件使用一个文件描述符。

默认情况下,每个进程有3个预定义的文件描述符:

0代表标准输入

1代表标准输出

2代表标准错误


重定向

重定向标准输入:

程序 < 输入文件

重定向标准输出:

程序 > 输出文件(若输出文件已存在则在运行命令之前清空它,若不存在则创建)

程序 >> 输出文件(追加在输出文件末尾)

重定向标准错误:

程序 2> 输出文件

程序 2>> 输出文件

ps:常见错误,sort file > file,这条语句只会把file清空,因为在运行命令前file已存在,被清空。


组合标准输出和标准错误

文件描述符:

0 代表标准输入

1 代表标准输出

2 代表标准错误

以下省略了标准输入的1

将标准输出(先)和标准错误(后)同时重定向到一个文件:

command > outputfile 2>&1

将标准输出(先)和标准错误(后)同时追加到一个文件:

command >> outputfile 2>&1

将标准错误(先)和标准输出(后)同时重定向到一个文件:

command 2> outputfile 1>&2

将标准错误(先)和标准输出(后)同时追加到一个文件:

command 2>> outputfile 1>&2

常见错误:

command > outputfile 2> outputfile

在一个命令中重定向同一个文件两次,一个重定向会覆盖另一个重定向。


抛弃输出

重定向到一个特殊的文件/dev/null

任何发送给它的东西都会永远消失。


猜你喜欢

转载自blog.csdn.net/qq_31730735/article/details/80437477