首页 > 系统相关 >Shell脚本--重定向

Shell脚本--重定向

时间:2023-04-18 10:11:49浏览次数:50  
标签:输出 ld Shell 重定向 -- cat 标准 output

0. 从终端输入一个命令时,通常会将该命令的结果输出到终端。

例如,在终端执行 pwd 命令会在屏幕上显示当前目录:
# pwd
/root
大多数 UNIX 系统中,命令通常从一个叫标准输入的地方读取输入。同样,命令通常将其输出写入到标准输出。标准输入和标准输出默认情况下都是终端。 那如果想要更改命令的标准输入和标准输出的地方,就需要使用重定向了。  

1. 关于重定向涉及到几个命令:

输出重定向:
>          将标准输出重定向到指定位置
>>         将标准输出以追加的方式重定向到指定位置
输入重定向:
<          将标准输入重定向到指定位置,即从指定位置输入
<< tag     将标准输入重定向到指定内容,即将开始标记 tag 和结束标记 tag 之间的内容作为标准输入
下面用示例说明:

a.>

# echo ---- > output
# cat output
----
# echo ++++ > output
# cat output
++++
将命令执行的结果用 > 重定向到指定文件时,每次新的命令执行结果都会覆盖文件中的内容。

b.>>

# echo ---- > output
# cat output
----
# echo ++++ >> output
# cat output
----
++++
将命令执行的结果用 >> 重定向到指定文件时,每次新的命令执行结果都会追加到文件内容的最后。

c.<

# cat output
----
++++
# wc -l output
2 output
# wc -l < output
2
两次执行 wc 的区别在于:第一次是将output作为文件统计文件的内容行数;第二次是将output看做标准输入,从output中读入内容,然后计算输入内容的行数。

d.<< tag

# wc -l << tag
> 1
> 2
> 3
> tag
3
使用 << tag 时,tag需要成对出现,第一个 tag 表示输入开始,第二个 tag 表示输入结束(tag 可以使用任意字符串)。然后将这段内容作为标准输入。  

2. 除上述情况外,还能看到以下情形:

2>
2>& 1
1>& 2
&>
在介绍上述情况之前先了解下什么是标准输入和标准输出。 通常用文件描述符0表示标准输入(STDIN),文件描述符1表示标准输出(STDOUT),文件描述符2表示标准错误输出(STDERR)。 而我们常见的 > 其实和 1> 相同,都是代表了将标准输出重定向。 那么 2> 就代表了将标准错误输出重定向,举例说明:
# ld
ld: no input files
# ld > true 2> error
# cat true
# cat error
ld: no input files
ld 命令 是需要输入参数的,因为没有输入参数,所以报错。默认情况下是会将标准错误输出输出到终端。在示例中将标准输出和标准错误输出分别重定向至 true 文件和 error 文件。 接着看看 2>& 1:
# ld > true 2>& 1
# cat true
ld: no input files
可以看到 2>&1 代表了将标准错误输出重定向至标准输出,也就是两者输出到同一个文件 true 中。 同理,1>&2 代表了将标准输出重定向至标准错误输出。
# echo ---- &> output
# cat ouput
----
# ld &> output
# cat output
ld: no input files
&> 则代表了将标准输出和标准错误输出都重定向到指定位置。

标签:输出,ld,Shell,重定向,--,cat,标准,output
From: https://www.cnblogs.com/chien/p/17328587.html

相关文章

  • requests代理设置
    和urllib一样,多的介绍就不说了,直接上代码:importrequestsproxies={"http":"http://user:[email protected]:80","https":"http://10.10.1.10:1080",}requests.get("https://www.geekdigging.com/",proxies=proxies)......
  • DG搭建报错 ORA-16047: DGID mismatch between destination setting and target datab
    最近有需求要给数据库新搭一个DG变为一主两从,搭好之后测试发现一直没有同步,检查问题。从库一直等待接收71855号日志主库有归档日志发送失败的报错,可以看到归档到dest_2(原从库)是成功的,而到desc_3(新从库)则是失败的根据日志提示查看arc2进程的trace日志看到有ora-16058和ora-16047的报......
  • Oracle 单进程可用PGA为4G限制导致的ORA-4030报错
    一、问题背景收到开发反馈,系统报表运行过程中报错,一看发现是ORA-4030,内存的问题查看alert日志,发现期间有大量ORA-4030报错,并且主要是pga相关的打开trace文件,可以看到报错进程使用内存接近4G但是查看pga参数设置,发现设置的上限是20G,完全没到,并且期间总的PGA使用率也不高 二、报错......
  • java参数值传递
    题目: (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径 *一个findAre()方法返回圆的面积。 *  *(2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: *  *publicvoidprintAreas(Circlec,inttime) *在printAreas方法中......
  • Oracle 常规坏块处理方法
    收到业务反馈,查看erp请求时遇到报错,一看居然是坏块。。。-_-|| alert日志中也出现相关报错,但还好只有一个坏块一、有备份的处理方法这一般就非常简单,rman有坏块修复功能Recoverdatafile19block44;如有必要,可同时修复多个文件多个块Recoverdatafile19block44datafile19......
  • Failover and Failover Modes (Always On Availability Groups)
    一、HowAutomaticFailoverWorks 自动故障转移的工作方式Iftheserverinstancethatishostingthecurrentprimaryreplicaisstillrunning,itchangesthestateoftheprimarydatabasestoDISCONNECTEDanddisconnectsallclients.关闭主库,断开所有客户端连接I......
  • java 递归方法 计算1-100之间的所有自然数的和 计算1-100之间所
    packageprectice;/***递归方法的使用**递归方法的定义:一个方法体内调用他自身**①方法递归包含了一种隐式循环,它会重复执行某段代码,但这种重发执行无须循环控制。*②递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似死循环。** 例1:计......
  • java笔试题目——要求:仅打印出a=100,b=200,请写出method方法的代码
    //题目:publicclassTest{publicstaticvoidmain(String[]args){inta=10;intb=10;method(a,b);//需要在method方法被调用之后,仅打印出a=100,b=200,请写出method方法的代码。System.out.println("a="+a);S......
  • Oracle 列由VARCHAR2改为CLOB类型
    最近突然遇到好多Oracle列由VARCHAR2改为CLOB类型的需求,不知道大家是不是约好了。。。查了一些网上的文章,结合实际修改的情况记录一下各种场景及解决方法。 一、示例准备新建两张表TB_WITHOUT_DATA(VARCHAR2列不包含数据)和TB_WITH_DATA(Varchar2列包含数据)createtableTB_WITHOU......
  • 应用连MySQL 报错ERROR 1129 Host is blocked because of many connection errors
    开发反馈应用连MySQL报错 createconnectionSQLException,url:连接串,errorCode1129。搜索1129报错,报错内容为:Hostisblockedbecauseofmanyconnectionerrors一、报错原因同一个ip在短时间内产生太多中断的数据库连接(超过mysql数据库max_connection_errors设置),导......