10.shell重定向

作者: 芝麻酱的简书 | 来源:发表于2018-07-13 18:18 被阅读18次
shell中将输入、输出和错误用三种描述符表示:
  • 标准输入STDIN,用0表示,接受键盘输入
    使用cat命令接受键盘输入
  • 非标准输入-文件输入,即使用cat读取文件
  • 标准输出STDOUT,对应终端显示,1表示
  • 标准错误STDERR,2表示


🎈Demo1:重定向输出到文件中

ls -l显示文件的信息
>>追加内容
>替换内容
who命令打印当前登录的系统用户信息

ls -l hello.sh
cat hello.sh
#追加内容
who>>hello.sh
cat hello.sh

🎈Demo2:重定向错误信息输出到文件中

-al查找文件
❌错误做法:

ls -al hello.sh > aim.sh

上面执行后,如果没有aim.sh文件,则会自动创建aim.sh文件,但是最终都不会将错误信息输出到目标文件aim.sh
所以如果我们需要保存错误信息,就需要采用STDERR实现

✅正确做法:
将STDERR文件描述修改为2

ls -al a.sh 2>hello.sh

🎈Demo3:同时保存错误和数据到不同文件
#将错误数据重定向到error.sh文件中,将查找结果保存到hello.sh文件中
ls -al a.sh b.sh c.sh 2>error.sh >hello.sh

🎈Demo4:同时保存错误和数据到同一个文件

使用命令符&>

ls -a file.sh &>result.sh
#查看文件内容
cat result.sh


临时重定向输出:

&命令

#将输出信息作为错位日志
echo "haha" >& 2

执行:将STDERR信息重定向到error.sh文件中
./hello.sh 2>error.sh


永久重定向输出:

exec命令
保存数据:

#在文件内部
exec 1 > new.sh
echo "haha"

重定向输入:

命令符<
一旦设置了输入重定向指令,则read指令会自动连接输入的内容

#从hello.sh文件中读取数据
exec 0< hello.sh
count=0
while read line
do
    echo "当前行的内容数据是:$line,当前行数:$count"
    count=$[$count + 1]
done 

自定义重定向输出:

使用exec命令
🎈下面这种方式,会替换掉要定向文件里面的所有内容:

exec 3> hello.sh
#临时重定向,标记文件
echo "haha" >&3

🎈如果在要定向的文件中追加内容,而不是替换:

exec 3 >> hello.sh
#临时重定向,标记文件
echo "haha" >&3

重定向输出恢复:

#将3重定向为1
exec 3 >& 1
exec 1> hello.sh
echo "haha"
#将1恢复到3
exec 1 >& 3
echo "xixi"

创建读写文件描述符:

exec 3<>hello.sh
#从hello文件中读取内容
read line >&3
echo "$line"
#写入内容
echo "hah" >& 3
#注意:此写入会替换掉从第二行开始的所有内容
#因为上面读取完第一行后,此时文件指针指向到了第二行



关闭读写文件描述符:

exec 3 >&-


阻止命令输出:

输出到系统一个临时文件中,但是此临时文件不会保存内容

ls -al > /dev/null

使用阻止输出来清空文件:

cat /dev/null > hello.sh

相关文章

  • 10.shell重定向

    shell中将输入、输出和错误用三种描述符表示: 标准输入STDIN,用0表示,接受键盘输入使用cat命令接受键盘...

  • 第07章重定向管道

    输出重定向案例 > < 脚本中使用重定向 2.输入重定向及结合案例 管道 | 重定向和管道的符号对比。重定向输出到...

  • shell 笔记 Day1

    重定向: (覆盖重定向), >>(追加重定向) , 2>(重定向错误信息) , &>(错误正确都重定...

  • 《Linux就该这么学 》笔记(六)| 管道符、重定向和环境变量

    1. 重定向 重定向技术的 5 种模式 标准覆盖输出重定向 标准追加输出重定向 错误覆盖输出重定向 错误追加输出重...

  • 永久性重定向和302临时性重定向

    什么是重定向? 所谓重定向就是将网页自动转向重定向,即:301永久性重定向和302临时性重定向。实施301后,新网...

  • 2019-06-13 重定向301和302

    什么是重定向? 所谓重定向就是将网页自动转向重定向,即:301永久性重定向和302临时性重定向。实施301后,新网...

  • 重定向

    输出重定向 输入重定向 错误重定向 管道 shell中特殊符号

  • Linux重定向day13

    1.重定向概述2.重定向的输出输入3.进程管道技术 一、重定向概述 什么是重定向:Linux重定向是指修改原来默认...

  • Linux高级

    一.重定向命令 学习目标 能够使用重定向命令将终端显示内容重定向到文件 1. 重定向命令的介绍 重定向也称为输出重...

  • vue-router -其他

    一、 重定向 重定向也是通过 routes 配置来完成,下面例子是从 /me重定向到/home`: 重定向的目标也...

网友评论

    本文标题:10.shell重定向

    本文链接:https://www.haomeiwen.com/subject/sqkspftx.html