【shell 基础13】输入输出与重定向

一. 标准输入和标准输出

linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,文件描述符分别是 0、1、2。

当运行命令时,命令启动的进程就会自动打开这三个保留的文件描述符。
如下图
在这里插入图片描述

在 Linux中 一切都是文件,包括输入和输出,其中:

  • 0 表示标准输入,对应的文件描述符是 /proc/self/fd/0。
  • 1 表示标准输出,对应的文件描述符是 /proc/self/fd/1。
  • 2 标准错误,对应的文件描述符是 /proc/self/fd/2。

可以使用这些文件描述符来控制命令程序或者脚本的输入和输出。

我们常用的命令2>&1的含义是标准错误重新定向到标准输出,即指将标准输出、标准错误指定为同一输出路径。

 
 

二、重定向

1. 定义

shell在执行命令时可以修改标准输入的输入源和标准输出的目标位置,这个功能称为重定向。

在重定向时,n> file这种语法表示将文件描述符n的输出重定向到file文件。如果省略n,文件描述符则默认为1,因此>会对标准输出重定向。

在这里插入图片描述
 

2. 输出的重定向

标准输出的目标位置通常指向的是终端屏幕。可以使用 > 符号修改标准输出的目标位置。
 

例子1:
比如下面的示例就会将ps命令的输出重定向到result.txt文件。

$ ps > result.txt  ←----- 由于已经重定向到 result.txt 文件,所以屏幕上不会输出任何内容
$ cat result.txt
  PID TTY          TIME CMD
10745 pts/0    00:00:00 bash
10873 pts/0    00:00:00 ps

 
例子2:
echo命令的执行结果将被重定向到hello.txt文件。

$ echo hello > hello.txt
$ cat hello.txt
hello

注:

只要命令能将执行结果输出到标准输出,就可以实现重定向。

 

3. 对标准错误输出重定向

要想对标准错误输出的错误信息进行重定向,可以使用2>符号。

例子:ls命令的标准错误输出会被重定向到error.txt文件。

$ ls /xxx 2> error.txt
$ cat error.txt
ls: 无法访问'/xxx': 没有那个文件或目录

 

4. 输入的重定向

对标准输入也可以像对标准输出一样进行重定向操作。

以tr命令为例:
tr命令是用于替换字符串的命令,其语法为tr 待替换的字符串 被替换后的字符串

tr b B

abc'
aBc'
my book

从键盘输入一些内容后,tr命令会以行为单位替换输入内容,并输出替换后的结果。要想退出tr命令,可以使用Ctrl + D结束输入状态。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值