正在学习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
任何发送给它的东西都会永远消失。