Linux常用设备与文件描述符

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
本站总访问量 本站总访客数 本文总阅读量
载入天数...载入时分秒...