[Linux]基本I/O重定向
在我们设置定时任务的时候经常会使用标准输出和标准错误输出。这个在Linux是一个非常重要的概念,而且这个很有用。程序应该有数据库的来源端、数据的目的端,以及报告问题的地方,它们被称为标准输入、标准输出以及标准错误输出。
$ cat #未指定任何的参数是,读取默认的标准输入、写入到默认的标准输出
建华是可以玩耍的小伙伴 #用户输入(此时终端默认是标准输入)
建华是可以玩耍的小伙伴 #程序将内容输出到标准输出(此时终端默认为标准输出)
^D #输入Ctrl-D 告诉程序文件结尾
| < | 修改标准输入 | sort < ucid.txt | 默认下,标准输入为终端,此时可以更改为你想要的地方 |
| << | Command << delimiter | 从标准输入中读入,直到遇到delimiter分割符 | |
| > | 修改标准输出 | ls -l > listinfo.txt | 默认下,标准输出为终端,此时可以修改默认输出的地方。譬如可以将标准输出的内容写在文件中。 如果文件已存在,会被覆盖掉。 |
| >> | 输出附件到文件 | ls -l >> listinfo.txt | 与[>]不一样的是,[>]会清空原来的内容,而[>>]只是将标准输出追加到文件结尾处。 |
| | | 建立管道 | program1 | program2 | 1. program1的标准输出为program2的标准输入; 2. 管道的执行效率比使用临时文件的程序起码高一个数量级; |
[nemo@name tool]$ cat show.txt [weiyg@name tool]$ sort < show.txt
[weiyg@name script]$ ll
total
-rw-rw-r--. weiyg weiyg Dec : ssh.rb
-rw-r--r--. weiyg weiyg Dec : sshx.rb
-rw-rw-r--. weiyg weiyg Dec : test.rb
[weiyg@name script]$ ls -l > listinfo.txt
[weiyg@name script]$ cat listinfo.txt
total
-rw-rw-r--. weiyg weiyg Jan : listinfo.txt
-rw-rw-r--. weiyg weiyg Dec : ssh.rb
-rw-r--r--. weiyg weiyg Dec : sshx.rb
-rw-rw-r--. weiyg weiyg Dec : test.rb
[weiyg@name flash]$ bzcat *useprop.log.--.bz2 |grep '19217xxxx'
|19217xxxx|||||
|19217xxxx|||||
这是查询游戏日志的一个例子。默认下,系统会将游戏5天前的日志进行打包压缩。而此时需要查询5天前的日志的话,使用上面的方法无论在效率上还是方便上,管道都有使用临时文件无法比拟的又是。当然使用下面的方法:
[weiyg@name flash]$ bzcat *useprop.log.--.bz2 > tem.log
[weiyg@name flash]$ grep '19217xxxx' tem.log
|19217xxxx|||||
|19217xxxx|||||
* * * /home/weiyg/crontab/clear_logs.sh > /dev/null >&
| 文件 | 文件描述符 |
| 输入文件——标准输入 | 0(默认为终端(网上有说默认为键盘的)) |
| 输出文件——标准输出 | 1(默认为终端) |
| 错误输出文件——标准错误 | 2(默认为终端) |
| Commond >&m | 标准输出重定向到文件描述符m中 |
| Command <&- | 关闭标准输入 |
| Command 0>&- | 关闭标准输出 |
clear_logs.sh > /dev/null #将clear_logs.sh执行的标准输出输出到/dev/null
clear_logs.sh > /dev/null #将clear_logs.sh执行的标准错误输出到/dev/null,只是clear_logs.sh不是执行了2次,只是1次。这里的&1代表的就是/dev/null
参考资料:1. 《Shell脚本学习指南》 Arnold Robbins & Nelson H.F. Beebe著 机械工业出版社
2. 《Linux shell的标准输入、输出和错误 》 http://blog.csdn.net/cjfeii/article/details/10084343
共勉之
[Linux]基本I/O重定向的更多相关文章
- Linux脚本执行过程重定向
Linux脚本执行过程重定向 一.bash调试脚本,并将执行过程重定向到指定文件 bash –x shell.sh 2>&1 | tee shell.log
- linux 将debug信息重定向到LCD(屏幕)
/*********************************************************************** * linux 将debug信息重定向到LCD(屏幕) ...
- Linux文件查看及重定向
Linux文件查看及重定向 实验目标: 通过本实验掌握head.tail.cat.more.less等文件查看命令的使用,理解重定向的概念,掌握两种重定向方法的使用. 实验步骤: 1.通过head ...
- 46 关于Linux的I/O重定向
I/O重定向是一个过程,这个过程捕捉一个文件.或命令.或程序.或脚本.甚至代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件.或命令.或程序.或脚本. 1.I/O重定 ...
- Linux学习之输入输出重定向
转自:http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 多谢分享 在了解重定向之前,我们先来看看linux 的文件描述符. ...
- (大数据工程师学习路径)第一步 Linux 基础入门----数据流重定向
介绍 开始对重定向这个概念感到些许陌生,但通过前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中.这其实就是重定向,将原本输出到标准输出的数 ...
- (四)Linux Shell编程——输入输出重定向
Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 1. 输出重定向 命令的输出不 ...
- linux 学习管道 和重定向
开源文化的理念之一 就是不要重新发明轮子 在linux 系统中大多是都是非常简单的命令,每个命令都是实现一个或者几个简单的功能,我们可以将不同的命令组合在一起 来达到复杂的功能的目的,在linux中因 ...
- Linux中将端口(80)重定向
在Linux中直接指定命令: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 其中80为要访问的端 ...
随机推荐
- SQL如何获得本季度第一天、一年的第一天、本月的最后一天
nterval 参数,具有以下设定值: 设置 描述 Year yy, yyyy 年 quarter qq, q 季 Month mm, m 月 dayofyear dy, y 一年的日数 Day dd ...
- asp.net url址址中中文汉字参数传递乱码解决方法
中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirec ...
- 解决虚拟机vmware虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
前言 虚拟机使用的是VMware Workstation,并且首次在虚拟机体验64 位系统.在新建好虚拟机,运行时候就出现了VMware Workstation 的提醒:此主机支持 Intel VT- ...
- [转]@PathVariable和@RequestParam的区别
请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value = "/page/{id}", method = Request ...
- rxjs 简单的demo
开发环境是使用 create-react-app 创建的.再使用 $ cnpm install rxjs 来安装即可开始. $ npx create-react-app my-app $ cd my- ...
- 将多个 docx 文件使用 POI 进行合并,生成单个文档,包含图片
1 添加 maven 依赖,需要使用 poi 的依赖项 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad ...
- Linux 查看文件 cat与 more 用法
1.cat 显示文件连接文件内容的工具: cat 是一个文本文件查看和连接工具.查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名. 比如: [root@localhost ~]# c ...
- Google Protocol Buffers介绍
简要介绍和总结protobuf的一些关键点,从我之前做的ppt里摘录而成,希望能节省protobuf初学者的入门时间.这是一个简单的Demo. Protobuf 简介 Protobuf全称Google ...
- 关于解决多台linux服务器间的文件实时同步问题
最近要做一个相关的解决方案,在虚拟机测试没有问题.给大家分享出来,有更好的解决方案,欢迎讨论. 1.1 inotify相关介绍 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高 ...
- href="javascript:void(0)" 的用法
href=”javascript:void(0);”这个的含义是,让超链接去执行一个js函数,而不是去跳转到一个地址,而void(0)表示一个空的方法,也就是不执行js函数. 为什么要使用href=” ...