linux中重定向的用法

用法:

  1> | > file:标准输出覆盖重定向(先清空文件,后加入内容)

  1>> | >> file:标准输出追加重定向(将内容追加到文件的末尾)

  2> file:标准错误输出覆盖重定向(先清空文件,后加入错误信息)

  2>> file:标准错误输出追加重定向(将错误信息追加到尾行)

  0< | <:标准输入重定向(很少用,据我所知就xargs命令和mail发邮件的时候有用)

  0<< | <<:追加输出重定向(据我所知就cat>>file<<EOF有用)

  >file 2>&1 | &>file:正确与错误信息都覆盖重定向到指定文件中

  >>file 2>&1 | &>>file:正确与错误信息都追加重定向到指定文件中

 

实例:

  >、>>:

  

  2>、2>>:

  

  <、<<:

   

  >file  2>&1、&>file:

  

  >>file 2>&1、&>>file:

  

 

转载于:https://www.cnblogs.com/Stong/p/6801882.html

### 原理 在 Linux 系统中,每个进程都有三个标准的 I/O 流:标准输入(stdin,文件描述符为 0)、标准输出(stdout,文件描述符为 1)和标准错误输出(stderr,文件描述符为 2)。重定向的原理就是改变这些标准 I/O 流的默认目标,将其输出或输入指向其他文件、设备或者命令。例如,把原本要显示在终端的标准输出内容保存到文件中,或者从文件中读取数据作为命令的输入,而不是从键盘获取输入。 ### 用法 #### 输出重定向 - **覆盖输出重定向(`>`)**:将命令的标准输出覆盖写入到指定的文件中。如果文件不存在,会创建该文件;如果文件已存在,会清空文件原有的内容,然后写入新的内容。 ```bash ls > file_list.txt ``` 此命令会将 `ls` 命令的输出结果覆盖写入到 `file_list.txt` 文件中。 - **追加输出重定向(`>>`)**:将命令的标准输出追加到指定文件的末尾。如果文件不存在,会创建该文件;如果文件已存在,新的输出内容会添加到文件原有内容的后面。 ```bash echo "New line" >> file_list.txt ``` 该命令会在 `file_list.txt` 文件的末尾追加一行内容 “New line”。 - **错误输出重定向**: - 将标准错误输出重定向到文件(`2>`): ```bash ls /nonexistent_directory 2> error.log ``` 如果 `/nonexistent_directory` 目录不存在,`ls` 命令产生的错误信息会被重定向到 `error.log` 文件中。 - 将标准输出和标准错误输出都重定向到同一个文件(`&>` 或 `> file 2>&1`): ```bash ls / /nonexistent_directory &> all_output.log ``` 或者 ```bash ls / /nonexistent_directory > all_output.log 2>&1 ``` 这两个命令都会将 `ls` 命令的标准输出和标准错误输出都保存到 `all_output.log` 文件中。 #### 输入重定向(`<`) 将文件的内容作为命令的输入。 ```bash sort < data.txt ``` 此命令会将 `data.txt` 文件的内容作为 `sort` 命令的输入,对文件中的内容进行排序并输出结果。 #### 管道(`|`) 管道用于将一个命令的标准输出作为另一个命令的标准输入,实现多个命令的链式操作。 ```bash ls | grep ".txt" ``` 该命令先执行 `ls` 命令列出当前目录下的所有文件和文件夹,然后将 `ls` 命令的输出作为 `grep` 命令的输入,筛选出文件名中包含 `.txt` 的文件。 ### 示例 - **统计包含关键词的行数并保存结果**: ```bash cat data.txt | grep "keyword" | wc -l > result.txt ``` 此命令先使用 `cat` 命令读取 `data.txt` 文件的内容,然后通过 `grep` 命令筛选出包含 “keyword” 的行,再使用 `wc -l` 命令统计这些行的数量,最后将统计结果保存到 `result.txt` 文件中 [^3]。 - **处理命令执行错误**: ```bash ls ./ /asdfasdfasdf 1>ls01.out ``` 由于 `/asdfasdfasdf` 目录不存在,`ls` 命令执行时会报错,标准输出会被重定向到 `ls01.out` 文件中,而错误信息会显示在终端 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值