解锁Linux命令行潜力:文件重定向的高级技巧与实践

个人主页:chian-ocean

文章专栏-Linux

前言:

在Linux中,文件重定向(file redirection)是指将命令的输入和输出重定向到文件或其他设备,而不是默认的标准输入(stdin)和标准输出(stdout)。它是通过不同的符号来实现的。

在这里插入图片描述

重定向

标准输入重定向 (<)

标准输入重定向使用 < 符号将文件的内容传递给命令作为输入。例如,假设你有一个包含文本的文件,你可以将该文件的内容作为输入传递给命令进行处理。

示例:

  • 将文件内容作为命令的输入
wc < text.txt

这个命令会计算 log.txt 文件中的行数、字数和字符数。

在这里插入图片描述

输出重定向(>>>)

标准输出重定向 (>) 是将命令的输出从默认的屏幕(标准输出)转向一个指定的文件。这个操作是通过 > 符号来实现的,它会将命令的标准输出写入到文件中。如果文件已经存在,重定向操作会覆盖原有的内容;如果文件不存在,它会新建一个文件。

  • >(输出重定向):将命令的标准输出重定向到文件,如果文件已存在,它会覆盖文件内容。

    • 示例:

      echo hello linux > log.txt
      

​ 该命令会将 "hello linux 输出到 log.txt 文件,如果文件已存在,文件内容会被覆盖。

在这里插入图片描述

  • >>(追加输出):将命令的标准输出追加到文件的末尾,而不是覆盖。

    • 示例:

      echo "HELLO LINUX" >> log.txt 
      

      该命令将 HELLO LINUX 追加到 log.txt 文件的末尾。

在这里插入图片描述

标准错误输出重定向 (2>)

ls non_existent_file 2> error.log
  • 打开 error.log 文件。

  • 关闭标准错误输出(文件描述符 2)。

  • 使用 dup2() 将文件描述符指向 error.log

  • 将错误信息(例如“没有该文件或目录”)写入 error.log

dup函数

在Linux中,dup(duplicate)是一种系统调用,用于复制文件描述符。它允许一个进程为已经打开的文件描述符创建一个新的文件描述符,使得新旧描述符指向同一个文件或输入输出流。dup 通常用于文件重定向操作或管理多个文件描述符。

  • dup:创建一个新的文件描述符,指向与原始文件描述符相同的文件或流。
  • dup2:类似于 dup,但允许指定新文件描述符。

dup 系统调用

  • 函数原型:

    int dup(int oldfd)