Linux下Shell重定向
1. 标准输入,标准输出与标准错误输出
Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。
标准输入:从键盘输入数据,即从键盘读入数据。
标准输出:把数据输出到终端上。
标准错误输出:把标准错误输出到终端上。
默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。
系统为这三个文件分配了文件标识符fd(file descripter).
在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,2.
2. 重定向
重定向分为输入重定向与输出重定向。
所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。
所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。
""<"表示输入重定向运算符,">"表示输出重定向t运算符。
"<<"这种输入告诉Shell,当前标准输入来自命令行的一对分隔号的中间内容。
">>",用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,而">>"表示把第二次的输出内容追加到文件中去,而不是覆盖。
3. 下面看一下几个例子
(1)输入重定向
[root@localhost ~]# wc</etc/inittab
53 229 1666
wc统计行数,单词数, 字符数
其中wc的输入来自 /etc/inittab
[root@localhost ~]# wc <<aa
> 1
> 11
> 111
> aa
3 3 9
wc统计分隔符aa之间的内容。
(2)输出重定向
[root@localhost ~]# ps -ef >a.txt //把进程的信息输出重定向到a.txt文件中去
[root@localhost ~]# ps -ef> >a.txt //进程信息追加到a.txt的文件中去
其实,所谓的输入输出重定向就是不从键盘输入和屏输出。
4. Linux下输出重定向的典型分析
(1) a.out > outfile 2>&1
(2) a.out 2> &1 >outfile
分析:
0代表标准输入,1代表标准输出,2代表标准错误输出。其中1(即>=1>)可以省略,默认为标准输出。
(1)首先把a.out重定向到outfile文件中去。然后把 2>&1把标准错误输出重定向到标准输出中去。此时的标准输出已经重定向了,相当于把标准输出与标准错误输出都一起重定向到outfile中去。 &1代表的是标准输出的文件描述符。1一般放在左边表示标准输出重定向到什么位置,而1放在右边是重定向到标准输出中,所以用&区分一下,表示标准输出的文件描述符。2>1表示把标准错误重定向到文件1中去,2>&1则表示标准错误重定向到标准输出中去。
(2)首先把标准错误输出重定向到标准输出中,此时标准输出还在终端。因此标准错误也在终端。然后标准输出到outfile中去了。而标准错误还是在终端。
因此,(1)表示标准输出与标准错误都到outfile中去了。
(2)表示标准输出到outfile,但标准错误输出仍然在终端。
ls 1>/dev/null 2>/dev/null
ls >/dev/null 2>&1
/dev/null是一个垃圾箱,是一个无底洞,表示的含义为不显示。
即标准输出与标准错误输出不显示。
以上两个命令表示的含义是相同的。
以上是关于Linux下的重定向问题,一定要深刻理解原理。
原文地址:http://blog.csdn.net/jfkidear/article/details/7823486
Linux下Shell重定向的更多相关文章
- 06 Linux下Shell介绍
一.概述 每个人在成功登陆Linux后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入需要的命令.若命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的 ...
- .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...
- Linux 下Shell变量,环境变量的联系与区别
Linux下Shell变量,环境变量的联系与区别 by:授客 QQ:1033553122 1. 简介 linux下的变量可分成两种:Shell变量和环境变量. Shell变量,又称本地变量,包括私有 ...
- Linux下Shell元字符的释义
Linux下shell的巧妙应用,对系统的运维很有四两拨千斤的功效! Shell元字符 注意: () 在当前shell的子shell进程运行命令 {}在当前shell进程运行命令
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- Linux 下Shell的学习
1.Shell学习 1.什么是Shell shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...
- [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法
[From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952 ...
- Linux下shell通用脚本启动jar(微服务)
Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
随机推荐
- P3203 [HNOI2010]弹飞绵羊
LCT裸题,之后填坑打一下 分块做法:每个点存几次出块以及出块的位置,问的时候直接暴力跳就vans了 首先思考最普通的模拟,发现可以O(n)路径压缩,O(1)的查询,但是需要修改就变成了O(n^2)的 ...
- 移动端底部fixed固定定位输入框ios下不兼容
简短记录下最近开发移动端项目碰到的小坑,产品需求做一个售后对话页面,底部固定输入框,和微信对话差不多,但是在ios下,fixed失效,输入框被虚拟键盘挡住,在安卓下是正常的. 尝试过网上说的很多方法, ...
- 428 Setup MySQL + - 改
初步认识MySQL 安装 练习增减改 1.什么是数据库软件: 数据库,俗称数据的仓库.方便管理数据的软件(或程序) 市面上数据库软件: Oracle:甲骨文公司产品.当前最流行应用最广泛数据库软件.和 ...
- Iterator接口(迭代器)
目录 前言 原理 方法 异常 Iterator接口(迭代器) 前言 一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象, ...
- appniu踩坑
1.pyCharm识别不到appnium-python-client 解决:新建项目注意选择环境,查看Project Interpreter中是否识别到了appnium-python-client 还 ...
- JavaScript 当月第一天和最后一天
1. 概述 1.1 说明 在项目过程中,有时候需要默认展示一个月的查询条件,即当月的第一天和最后一天. 2. 代码 2.1 代码示例 直接调用getFirstAndLastDay()即可得到当月的第一 ...
- 如何选择 Apache Tomcat 与 JDK 版本
Apache Tomcat Version
- Java_File类
File类以抽象的方式代表文件名和目录路径.该类主要用于文件和目录的创建.查找.删除等.先来看一下File的构造方法: // 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 File ...
- javascript中new Date()存在的兼容性问题
问题:通过new Date()创建的时间对象在Chrome能正常工作,但在IE浏览器却显示NaN 代码: var time = new Date(date + ' 00:00:00'); //NaN ...
- vue 结合 FileReader() 实现上传图片预览功能
项目中 身份证上传需求: <div class="ID_pic_wrap"> <ul> <li> <img src="../.. ...