1. /dev/null
在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。这些操作通常由重定向完成。
2. /dev/zero
在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。BSD就是通过mmap把/dev/zero映射到虚地址空间实现共享内存的。可以使用mmap将/dev/zero映射到一个虚拟的内存空间,这个操作的效果等同于使用一段匿名的内存。
3. 文件描述符0
- 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
4. 文件描述符1
- 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
5. 文件描述符2
- 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
6. &
后台运行,常见格式如下: command &
7. &&
&&运算符用于两个命令之间的连接,格式如下:
1 | command1 && command2 |
注意:
命令之间使用 && 连接,实现逻辑与的功能。
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
8. 重定向
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
常见的高级用法如下:
将标准错误文件和标准输出文件合并,并输入到空洞中,起到禁止输出的效果
1
command > /dev/null 2>&1
将标准输入和标准输入都重定向
1
command < file1 > file2
/dev/zero常用来创建空洞文件
1
dd if=/dev/zero bs=4M count=10 of=afile