Linux中的重定向以及标准输入输出、混合输出和标准错误输出

👨‍🎓博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


前言

重定向统计列表

类型命令作用
标准输入重定向 echo “123” < file 将输入的数字展示到终端上。
标准输出重定向 command > file 以覆盖的方式,把 command 的正确输出结果输出到 file 文件中。
command >> file 以追加的方式,把 command 的正确输出结果输出到 file 文件中。
标准错误输出重定向command 2> file 以覆盖的方式,把 command 的错误信息输出到 file 文件中。
command 2>> file以追加的方式,把 command 的错误信息输出到 file 文件中。
正确输出和错误信息同时保存 command > file 2>&1 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。
command >> file 2>&1以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。
command >file1 2>file2 以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。
command >>file1 2>>file2以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。

标准输入重定向:

  标准输入(stdin)通常是指从终端或命令行界面接收输入数据的通道。当你在终端中输入命令并按下回车键时,你的输入就会被发送到标准输入。

标准输入通常用文件描述符(file descriptor)表示,其中stdin的文件描述符为0。在程序中,你可以使用这个文件描述符来读取从标准输入传来的数据。

以下是一些与标准输入相关的常见操作:

  1. 从标准输入读取一行文本:
echo "请输入您的名字:"
read name
echo "您好,$name!"
  1. 将命令的输出重定向到标准输入:

如果没有后面的文件,需要先创建:touch a.txt

echo "123" < a.txt

这将输入的内容123显示在终端上。

标准输出重定向:

  标准输出(stdout)是指默认情况下将进程的输出结果发送到终端的通道。当你运行一个程序或命令时,它通常会将输出内容显示在终端上,这就是标准输出的作用。

  • 标准输出(输出第二次则覆盖第一次的内容)
echo "abc" > a.txt


# 覆盖a.txt内容
echo "abc" > a.txt
echo "123" > a.txt
# 输入了两个文字,但是只存留了最后一个,因为>代表的是标准输入(输出第二次则覆盖第一次的内容)
  • 标准输出(追加输出)>>
echo "123" > a.txt
echo "123123" >> a.txt

#此时,a.txt中内容为:
123
123123
  • 使用命令查询输入到一个文件中(工作中最常用的)
ls -a > a.txt

# 输出完之后可以使用cat查看

混合输出重定向:

  可以使用管道符号(|)将两个或多个命令的输出进行混合,并将结果重定向到文件或其他命令的输入。

下面是一个将两个命令的输出混合并重定向到文件的示例:

command1 | command2 > output.txt

在这个示例中,command1的输出会被作为command2的输入,并且它们的输出结果会被重定向到output.txt文件中。

如果你要将一个命令的输出同时重定向到文件和其他命令的输入,你可以使用多个重定向符号:

command > output.txt 2>&1 | command2

在这个示例中,command的输出会被重定向到output.txt文件中,并且标准错误输出(stderr)会被重定向到标准输出(stdout),然后再将标准输出作为command2的输入。

标准错误输出重定向:

例如:

LS > a.txt
# 默认这个会直接再也没上输入【bash: LS: command not found】,而a.txt.里是空的
# 想要将错误的信息也输出到a.txt中,我们可以使用标准错误
LS 2> a.txt
# 这样cat查看你的时候,错误信息就可以看到了。

实例:

yum -y install bind bind-utils &> /dev/null && echo “ok” || echo “not ok”

(安装一个bind和bind-utils把安装时候输出的内容全部放到/dev/null,[/dev/null相当于一个回收站,输出到这里面就直接清空]然后如果安装成功就输出ok,安装失败就输出not ok)

文件描述符

文件描述符文件名类型硬件
0stdin标准输入文件键盘
1stdout标准输出文件显示器
2stderr标准错误输出文件显示器

实例:运行一个jar包,将jar包的日志输出到cs.logs中,错误日志输出到cserror.log中。

java -jar cs.jar > cs.log 2> cserror.log

EOF的使用

  1. 可以使用EOF输入多行文字显示到终端上。
[root@localhost a]# cat << EOF
> 123
> 123
> sda
> EOF

123
123
sda
  1. EOF输入追加
[root@localhost a]#  cat <<EOF>> c.txt
> 123
> 123
> EOF

  1. EOF输入覆盖
[root@localhost a]# cat <<EOF> c.txt 
> 123lda
> dfasdf
> EOF
  • 实例:

  1. 172.16.11.221 k8s-master
    172.16.11.222 k8s-node1
    172.16.11.223 k8s-node2
    输出到/home/a.txt/中(追加)
cat >> /home/a.txt << EOF 
172.16.11.221 k8s-master
172.16.11.222 k8s-node1
172.16.11.223 k8s-node2
EOF
  1. 将 a 输出到/home/a.txt/中(覆盖)
cat > /home/a.txt << EOF 
a
EOF
  1. 双重重定向指定内容到指定文件(覆盖)
tee /home/a.txt << EOF
123
1wed
sdfa
13228
EOF

双重重定向的意思是:将输出的内容,在页面上展示一下,并输出到指定的文件内容中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

A-刘晨阳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值