重定向命令

三葉Leaves Author

每个Linux系统进程都有三个标准流:

  1. 标准输入(stdin):通常是键盘输入。
  2. 标准输出(stdout):通常是终端或控制台显示的输出。
  3. 标准错误(stderr):用于错误消息的输出。

默认情况下,大多数命令从标准输入读取数据,并将结果输出到标准输出,错误消息输出到标准错误。数据流重定向允许你改变这种默认行为,将输出重定向到文件或其他命令,或者从文件中读取输入。

输出重定向

  • **>**:将标准输出重定向到文件。

    1
    ls > output.txt

    这条命令会将 ls 命令的输出写入 output.txt 文件中,如果文件已存在,其内容将被覆盖。

  • **>>**:将标准输出追加到文件末尾。

    1
    date >> output.txt

    这条命令会将当前日期追加到 output.txt 文件的末尾,而不会覆盖现有内容。

错误重定向

  • **2>**:将标准错误重定向到文件。

    1
    ls notexistfile 2> error.txt

    这条命令会将尝试列出一个不存在文件的错误消息写入 error.txt

  • **2>>**:将标准错误追加到文件末尾。

    1
    ls notexistfile 2>> error.txt

    这条命令会将错误消息追加到 error.txt 文件的末尾。

同时重定向标准输出和标准错误

  • **&>**:将标准输出和标准错误都重定向到同一个文件。

    1
    ls notexistfile &> errorandoutput.txt

    这条命令会将标准输出和错误输出都写入 errorandoutput.txt

  • **&>>**:将标准输出和标准错误都追加到同一个文件。

    1
    ls notexistfile &>> errorandoutput.txt

    这条命令会将标准输出和错误输出追加到 errorandoutput.txt

输入重定向

  • **<**:从文件读取输入。

    1
    sort < unsorted.txt

    这条命令会读取 unsorted.txt 文件的内容,然后使用 sort 命令对其进行排序。

管道

管道 | 允许你将一个命令的输出作为另一个命令的输入。

1
ls | grep "pattern"

这条命令会列出当前目录下的文件和目录,然后使用 grep 命令搜索包含 “pattern” 的行。

临时文件重定向

  • **$()**:命令替换,允许你执行一个命令并将其输出插入到另一个命令中。

    1
    cat $(grep -r "pattern" .) > results.txt

    这条命令会搜索当前目录及其子目录中包含 “pattern” 的所有文件,并将这些文件的内容写入 results.txt

重定向描述符

你还可以使用数字来指定具体的文件描述符进行重定向:

  • **1>**:标准输出。

  • **2>**:标准错误。

  • **0<**:标准输入。

    1
    ls 1> output.txt 2> error.txt

    这条命令会将 ls 的标准输出重定向到 output.txt,将标准错误重定向到 error.txt

  • 标题: 重定向命令
  • 作者: 三葉Leaves
  • 创建于 : 2024-09-25 00:00:00
  • 更新于 : 2024-11-21 16:56:20
  • 链接: https://leavesblog.netlify.app/76d3c647c3ab/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论