Shell 基础 -- 输入、输出重定向
一、文件描述符
文件描述符是一个非负的整数,Linux 中每个运行中的程序(进程),都有一些与之关联的文件描述符,你可以使用文件描述符来访问打开的文件或设备。在标准 I/O 库中,与文件描述符对应的是流。当一个程序开始运行时,它一般会有 3 个已经打开的文件描述符,分别对应三个文件流:
| 文件描述符 | 流 |
| 0 | 标准输入流(stdin) |
| 1 | 标准输出流(stdout) |
| 2 | 标准错误流(stderr) |
显然,还有其他的文件描述符,这里暂时不做讨论。一般情况下,一个程序打开时,会去读取标准输入,将结果写入标准输出,将错误结果写入标准错误输出(默认的标准输入、标准输出和标准错误输出都是终端):

如图上图所示,cat 命令后面没有接参数,则默认读取标准输入,将结果输出到标准输出。很多情况下,我们不希望从标准输入获取程序输入,也不想将程序结果写入标准输出,将错误结果写入到标准错误输出,这时就可以使用重定向来完成相应的需求。
二、输出重定向
输出重定向使用 > 或 >> 操作符。其中 > 操作符表示覆盖输出;>> 操作符表示将输出内容附加到文件尾。
2.1 将标准输出重定向到文件
command > file
command >> file
使用 command > file 命令,可以将 command 的标准输出修改为 file,若当前目录下没有 file 文件,则会创建该文件;若已经存在 file 文件,则会覆盖 file 文件,file 文件原本的数据将会丢失。
使用 command >> file 命令,可以将 command 的标准输出修改为 file,若当目录下没有 file 文件,则创建该文件;若已经存在 file 文件,则将程序结果附加到文件尾。
同样的,以 cat 命令为例:
cat > newfile
My name is tongye
How are you
^D # Ctrl + D,结束输入
cat >> newfile
I am fine
^D
结果如下:

2.2 将标准错误输出重定向到文件
command > file
command >> file
使用 2> 或 2>> 来对标准错误输出进行重定向。
2.3 将标准输出和标准错误输出重定向到不同文件
command > file1 > file2
该命令将标准输出和标准错误输出分别重定向到不同文件。
2.4 将标准输出和标准错误输出重定向到同一文件
command &> file command > file >&1 # 将先将标准输出重定向到文件 file,然后将标准错误重定向到标准输出
这两个命令都可以将标准输出和标准错误输出重定向到同一个文件。其中, &> 是 bash 提供的一个特殊的重定向符号。
在重定向到文件描述符时,必须在文件描述符数字之前加上 & 符号。
三、输入重定向
使用 < 操作符进行输入重定向:
command < file
该命令可以将 command 的标准输入改为从文件 file 输入。
Shell 基础 -- 输入、输出重定向的更多相关文章
- shell编程-输入/输出重定向(十一)
linux中文件描述符 linux跟踪打开文件,而分配的一个数字,通过这个数字可以实现对文件的读写操作 用户可以自定义文件描述符范围是:3-max,max跟用户的ulimit –n 定义数字有关系,不 ...
- Shell test 命令,Shell 输入/输出重定向
一.Shell test 命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -g ...
- 十一、Shell 输入/输出重定向
Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令 ...
- Shell(五)Shell输入/输出重定向
Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令 ...
- shell 通配符,管道符,输入/输出重定向,命令置换
1. echo 输出 [echo 输出的内容 ]把内容输出到终端上 如果字符串使用双引号,echo命令原样输出 [ echo "hello world" ] ...
- 学习笔记之Shell脚本的输出重定向
shell http://baike.baidu.com/link?url=qN3THt5ZJhQtwRJJkakWdz5-vZp4V9H3OmNP97XNhaoL-dqU-6rrFrYfHXmYv6 ...
- shell重温---基础篇(输入/输出重定向)
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准 ...
- Shell 输入/输出重定向
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.命令通常从标准输入的地方读取输入,默认是终端.标准输出,默认情况下是终端. 重定向命令列表如下: 命令 说明 comm ...
- Shell输入/输出重定向
输出重定向 重定向一般通过在命令间插入特定的符号来实现.特别的,这些符号的语法如下所示 command1 >file1 上面这个命令执行command1然后将输出的内容存入file1. 注意任何 ...
随机推荐
- Asp.net中DataTable的排序功能
DataTable里的数据,如果是从数据库中取得的数据,我们可以用order by排序,而从excel表格取得的数据,就需要自己进行操作了. 例如,Dt_Data2是读取Excel表格取到的数据 Da ...
- DeepWalk学习
DeepWalk Background 使用机器学习的算法解决问题需要有大量的信息,但是现实世界中的网络中的信息往往比较少,这就导致传统机器学习算法不能在网络中广泛使用. (Ps: 传统机器学习分类问 ...
- 深入了解MyBatis二级缓存
深入了解MyBatis二级缓存 标签: mybatis二级缓存 2015-03-30 08:57 41446人阅读 评论(13) 收藏 举报 分类: Mybatis(51) 版权声明:版权归博主所 ...
- Kafka学习之路 (五)Kafka在zookeeper中的存储
一.Kafka在zookeeper中存储结构图 二.分析 2.1 topic注册信息 /brokers/topics/[topic] : 存储某个topic的partitions所有分配信息 [zk: ...
- SpringMVC之ajax+select下拉框交互常用方式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- top,ps查看进程使用内存情况
ps -e -o 'pid,comm,args,pcpu,vsz,stime,user,uid' |grep chrome|grep -v grepwatch 'ps -e -o 'pid,comm, ...
- 笔记一:CSS选择器
0.前言:无论学什么,前端都是绕不开的一门技术,对于不同的人需求不同,作为一个python开发者不仅需要能读懂基本的html/css以及js代码,还要会使用它的常用的标签,以及了解比较有用的标签,把逻 ...
- PAT B1017 A除以B (20 分)
本题要求计算 /,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R成立. 输入格式: 输入在一行中依次给出 A 和 B,中间以 1 ...
- java过滤器filter使用
一:filter:过滤器,拦截servlet的请求和响应. 1. package jd.com.filter; import javax.servlet.*; import java.io.IOExc ...
- Android 将若干张图片拼接在一起形成一个全新的图片
目的:使用Android技术将若干张图片拼接成为一张图片. 最开始的两张图如下所示: 拼接后的图片如下图所示: 这样就把两张图片拼接成为一张了. 拼接步骤: 1.使用Bitmap创建一个空的Bitma ...