有关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权威教程 ...
随机推荐
- OpenWrt的UCI系统
http://wiki.openwrt.org/doc/uci UCI是Unified Configuration Interface的缩写,翻译成中文就是统一配置接口,用途就是为OpenWrt提供一 ...
- [翻译]初识SQL Server 2005 Reporting Services Part 4
原文:[翻译]初识SQL Server 2005 Reporting Services Part 4 这一篇是关于SQL Server 2005 Reporting Services四篇文章中最后一篇 ...
- Solr多核心及分词器(IK)配置
Solr多核心及分词器(IK)配置 多核心的概念 多核心说白了就是多索引库.也可以理解为多个"数据库表" 说一下使用multicore的真实场景,比若说,产品搜索和会员信息搜索 ...
- C#编程实践–产假方案优化版
前言 既然作为一个踏踏实实学习技术的人,就要有一颗谦卑.虚心和追求卓越的心,我不能一次就写出很完美的代码,但我相信,踏踏实实一步一步的优化,代码就可以变得趋近完美,至少在某一个特定场景下相对完美,这和 ...
- Dom解析xml源代码
import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import ja ...
- Linq无聊练习系列7----Insert,delete,update,attach操作练习
/*********************Insert,delete,update,attach操作练习**********************************/ ...
- SZU:A26 Anagram
Judge Info Memory Limit: 32768KB Case Time Limit: 10000MS Time Limit: 10000MS Judger: Normal Descrip ...
- 创建FTP的Site并用C#进行文件的上传下载
创建FTP的Site并用C#进行文件的上传下载 文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服 ...
- poj 2184(dp变形,进一步加深01背包)
点击打开链接 题意: 给你n个物品,每个物品都有两个属性,s和f,要求选择一些物品,使sum(s)+sum(f)最大,并且sum(s)>=0&&sum(f)>=0, 根据0 ...
- 苹果APNs’ device token特性和过期更新
APNs全名是Apple Push Notification Service.用iPhone的应该都习惯了,每次安装完一个新应用启动后,几乎都会弹出个警告框,“XXX应用”想要给您发送推送通知.这个警 ...