首页 > 系统相关 >shell命令--重定向

shell命令--重定向

时间:2023-04-15 11:44:21浏览次数:33  
标签:输出 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 表示输入结束。然后将这段内容作为标准输入。

 

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/citta/p/17320785.html

相关文章

  • D. Connected Components
    D.ConnectedComponentshttps://www.codeforces.com/contest/292/problem/D 思路由于需要删除任意连续段的连接线,引入前缀和连续段的左右两边都需要,所以引入两个前缀和。 https://blog.csdn.net/qq_28954601/article/details/79281640Codehttps://blog.csdn.net/q......
  • R6-2 复数的加减运算(运算符重载)
    声明一个复数类CComplex(类私有数据成员为double型的real和image)定义构造函数,用于指定复数的实部与虚部。重载<<运算符,以格式real+imagei的格式输出当前对象(当虚部为非负数时,实部虚部中间用+号连接,当虚部为负数时,实部虚部用-号连接:如3+4i,3-4i,3+0i)。重载+运算符,实现两个复数对......
  • 建民打卡日记4.15
    五本新书,借给a,b,c三人,每人借一本,共有多少种借书方案?二、设计思路1.从五个数中选取三个排列组合,确立循环范围2.建立循环穷举所有情况3.符合条件的情况输出三、程序流程图  四、代码实现#include<iostream>usingnamespacestd;intmain(){ inta,b,c,i=0;......
  • 私钥和公钥到底是谁来加密、谁来解密?
    1. 应用场景场景1(第一种用法):用于加解密,此时使用公钥加密,私钥解密。场景2(第二种用法):用于数字签名,此时使用私钥签名,公钥验签。有点混乱,不要去硬记,你只要这样想即可:-既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;-既然是......
  • 如何在Linux中安全的删除文件和目录
    导读在大多数情况下,我们习惯于使用Delete键、垃圾箱或rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法。在大多数情况下,我们习惯于使用Delete键、垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘......
  • 远程连接MySQL数据库
    远程连接MySQL数据库一、连接远程数据库:1、显示密码如:MySQL连接远程数据库(192.168.5.116),端口“3306”,用户名为“root”,密码“123456”mysql-h192.168.5.116-P3306-uroot-p1234562、隐藏密码如:MySQL连接本地数据库,用户名为“root”,C:/>mysql-hlocalhost-uroot-p......
  • Python 利用正则表达式和filter函数 筛选序列(列表等)
    在 Python 中,序列类型包括字符串、列表、元组、集合和字典http://c.biancheng.net/view/4312.htmlPython内建的filter()函数用于过滤序列https://www.liaoxuefeng.com/wiki/1016959663602400/1017404530360000序列内逐个元素筛选filter并用list保存结果筛选的判断条件是re.match......
  • nvim-dap C++ cpptools
    https://github.com/microsoft/vscode-cpptoolsgccgdblocaldap=require("dap")dap.adapters.cppdbg={id='cppdbg',type='executable',command='c:\\gnu\\tool\\cpptools\\extension\\debugAdapters\......
  • 删除无效的括号(广度优先搜索、字符串)、计算右侧小于当前元素的个数(树状数组、线段
    删除无效的括号(广度优先搜索、字符串)给你一个由若干括号和字母组成的字符串s,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按任意顺序返回。示例1:输入:s="()())()"输出:["(())()","()()()"]示例2:输入:s="(a)())()"输出:["(a())()","(......
  • 进制转换
    #include<bits/stdc++.h>usingnamespacestd;intconvert2ten(inta,intnum)//将a进制转换为十进制{intb=0;intt;inti=0;while(num!=0){t=num%10;num=num/10;b+=t*pow(a,i);i++;}returnb;}intconvert2ot......