有关linux标准输出、标准输入、标准错误的重定向问题
1、简单的命令行重定向问题。
例:ls -al test test1 test2 1>out.txt 2>err.tx
这里ls这句命令行命令之后将标准输入重定向到out.txt中,标准错误重定向到err.txt中。
2、文件中临时重定向题
例:$ cat test1
#!/bin/bash
#!关于测试临时重定向问题
echo "This is an error!" >&2 #将这句话临时重定向为标准错误
echo "This is normal output! "
正常运行这个脚本:./test1
结果为:This is an error!
This is normal output!
这看不出什么区别,那么来看下面这样运行:./test1 1>out.txt 2>err.txt
结果终端界面上不会出现脚本的运行结果,这里把标准输入重定向到out.txt中,标准错误重定向到err.txt中,而脚本中将“This is an error!"
这句话临时重 定向为标准错误,而脚本中正常的输出为”This is normal output!“ 。所以分别cat out.txt和cat err.txt两个文件即可发现脚本中的两句话。
3、永久重定向
如果脚本中有大量的数据需要重定向,那么按上面的方法,一句一句来会很麻烦,那来看下面的例子
例:$ cat test2
#!/bin/bash
#!关于批量永久重定向
exec 2>err.txt #将本脚本中的标准输出永久重定向到out.txt中
echo " This is just a testing!"
echo "HaHa!"
exec 1>out.txt #以下内容中标准输出重定向到out.txt
echo "Now the testing is over!"
echo " This is a testing error!" >&2
然后运行脚本 ./test2
结果为:This is just a testing!
HaHa!
其余两句我们分别可以在out.txt和err.txt中见到,脚本中将“This is a testing error!"临时重定向为了标准错误,因此脚本将其重定向到了err.txt。
这就是批量永久重定向。
4、在脚本中重定向输入
例: $ cat test3
#!/bin/bash
#!测试脚本中输入重定向
exec 0<input.txt #将input.txt中的内容作为输入重定向到脚本中
count=1
while read line
do
echo "#$count :$line "
count=$(($count+!))
done
这个可以用于批量读入文件等地方,很多都可以用。
有关linux标准输出、标准输入、标准错误的重定向问题的更多相关文章
- Shell标准输出、标准错误
shell中可能经常能看到:>/dev/null 2>&1 eg:sudo kill -9 ps -elf |grep -v grep|grep $1|awk '{print $4 ...
- linux将标准输出和标准错误输出都重定向到一个文件?
需求描述: 今天在写crontab,里面有标准输出和错误输出,之前使用的是 > /dev/null 2>&1 那这个意思也就等同于将标准输出和错误输出都输出到/dev/null中, ...
- java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和System.err.println的区别 Java重定向System.out和System.err
本文关键词: java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.pri ...
- 文件IO详解(四)---标准输入、标准输出和标准错误
每个进程都会默认打开3个文件描述符,即0.1.2.其中0代表标准输入流.1代表标准输出流.2代表标准错误流.通常标准输入流对应着键盘的设备文件.标准输出流和错误流对应着显示器的设备文件.在编程中通常使 ...
- shell将标准错误输出重定向到 其他地方
经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用: /tmp/test.sh > /tmp/test.log >& 前半部分/tmp/test.sh > ...
- 【转】从Shell脚本内部将所有标准输出及标准错误显示在屏幕并同时写入文件的方法
如果全部都要重定向的话每一条命令后面>>并不方便,可以这么做.在开头就声明 exec 1>>$log_file表示将脚本中所有的正确输出全部追加到$log_file,错误信息会 ...
- Shell标准输出、标准错误 >/dev/null 2>&1
Shell中可能经常能看到:>/dev/null 2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print ...
- 7、pytest -- 捕获标准输出和标准错误输出
目录 1. 标准输出/标准错误输出/标准输入的默认捕获行为 2. 修改和去使能捕获行为 2.1. 文件描述符级别的捕获行为(默认) 2.2. sys级别的捕获行为 2.3. 去使能捕获行为 3. 使用 ...
- Pytest权威教程09-捕获标准输出及标准错误输出
目录 捕获标准输出及标准错误输出 默认 stdout/stderr/stdin 捕获行为 设置捕获方法或禁用捕获 调试中使用print语句 在测试用例中使用的捕获的输出 返回: Pytest权威教程 ...
随机推荐
- 安装Windows操作系统的驱动程序(驱动精灵版) - 进阶者系列 - 学习者系列文章
安装完操作系统之后,就需要安装对应的驱动程序了.下面就简要介绍下驱动程序的安装.以驱动精灵驱动安装软件为例. 1. 下载驱动精灵. 从http://www.drivergenius.com/网站下载 ...
- android 使用 service 实现音乐
今天的球员趁service.播放音乐service结束,进度条activity结束,因此,基础工作activity和service互动,本文将使用IBinder互动.主要activity能够调用ser ...
- [ext/iconv/iconv.lo] Error 1
办法1: wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz tar -zxvf libiconv-1.13.1.tar.g ...
- 使用WCF订阅替换轮训
之前因为某些特定岗位的人不知道是不方便还是什么的原因,所以随便做了个独立于所有系统之外的邮件审批服务,功能是那些人在邮件里给待审批单据发个“同意”就自动审批通过,大致分为3部分:第一部分每隔固定时间去 ...
- logistic回归 c++ 实现
logistic回归是统计学习中经典的分类方法,他属于对数线性模型.本博文主要给出logistic的c++实现,具体理论请读者自行google. 本文用到的数据集来自于一个医学网站,具体出处不记得了( ...
- 重定向和VT100编程
重定向和VT100编程 一.文件重定向 我们知道在linux shell 编程的时候,可以使用文件重定向功能,如下所示: [root@localhost pipe]# echo "h ...
- 同源策略与JSONP
[CORS:跨域资源共享] 同源策略与JSONP Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分.“同源策略”限制了J ...
- 【转】几点 iOS 开发技巧
[译] 几点 iOS 开发技巧 原文:iOS Programming Architecture and Design Guidelines 原文来自破船的分享 原文作者是开发界中知晓度相当高的 Mug ...
- C#程序调用cmd.exe执行命令
代码部分 using System.Diagnostics; public class CmdHelper { private static string CmdPath = @"C:\Wi ...
- discuz 取消门户首页url中的portal.php
这几天准备用discuz搭建一个素食网站,一切就绪之后,访问discuz的门户时总是带着portal.php,可能是职业毛病,在url中总是带着,感觉太碍眼了,并且discuz就是搜索引擎收录一直抵制 ...