学习3:呈现数据

本文详细介绍了Linux命令行中关于标准输入、输出和错误的重定向操作,包括如何使用“>>”、“2>”、“&>”符号将输出追加或重定向到文件,以及如何在脚本中进行输入输出的临时和永久重定向。同时,提到了使用/dev/null清除文件内容和 tee 命令进行双重输出的功能。
摘要由CSDN通过智能技术生成

0–标准输入;1–标准输出;2–标准错误

可以使用符号“>>”将数据追加到某个文件
通过ls -al badfile 2>test.txt的方式将错误信息重定向至 test.txt 并且不在屏幕上显示,如果想重定向标准输出信息,只需将2改为1
如果想重定向错误和正常输出,必须用两个重定向符号,例如:

ls -al test test2 test3 badtest 2> test6 1> test7

除此之外,也可将标准输出和标准错误信息通过特殊重定向符号“&>”输出至同一个输出文件

在脚本中重定向输出

临时重定向
如果有意在脚本中生成错误消息,可以单独将这一行重定向至STDERR:使用输出重定向符来将输出信息重定向到STDERR文件描述符在重定向到文件描述符时,必须在文件描述符数字之前加一个&。默认情况下Linux会将STDERR导向STDOUT

#!/bin/bash
echo "this is an error message" >&2
echo "this is a normal message"
$
$ bash test 2>test.txt
this is normal message
$ cat test.txt
this is an error message 

永久重定向

exec 2>testout

在脚本中重定向输入

#!/bin/bash
count=1
exec 0< testfile
while read line
do
	echo "Line $count : $line"
	count=$[ $count + 1 ]
done

创建自己的重定向

除了0、1、2三个默认文件描述符外,6~8也可用于输入和输出的重定向

exec 3>&1            #将文件描述符3重定向到标准输出
exec 1>testout       #将标准输出重定向到文件
... ...
exec 1>&3            #将标准输出重定向到描述符3,其实就是输出至屏幕

这是一种在脚本中临时重定向输出,然后又恢复默认输出设置的常用方法。同样,对于标准输入也可以采用以上的方法

exec 6<&0
exec 0<testfile
... ...
exec 0<&6

一种快速清除文件内容的方法

cat /dev/null > testfile

在输出重定向中将/dev/null作为输入文件,由于其中并不包含任何内容,通常用它来快速清除现有文件中的数据,而不用先删除文件再重新创建文件

创建临时文件和目录

默认情况下,mktemp会在本地目录创建一个文件

$ mktemp testing.XXXXXX

通过这种方式,可以保证文件名在目录中是唯一的
在脚本中,可以在创建临时文件的同时,将其文件名保存至变量中(并不需要临时文件具体名字是什么)

tempfile=$(mktemp test19.XXXXXX)
exec 3>$tempfile

记录消息 tee命令

tee filename

该命令将STDIN过来的数据发往两处,一处是STDOUT,另一处是tee命令所指定的文件
该命令具有-a参数,使用该参数可以将数据追加到指定文件中(而不是覆盖)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值