linux 脚本 1,[Linux Shell学习系列十一]脚本输入处理-1输入和输出

D20

几乎所有的命令都会产生到屏幕的输出和从键盘获取输入,而在Linux系统中可以将输出发送到指定的文件,或从文件中读取输入。在一个命令执行之前,它的输入和输出可以使用由Shell解释的特殊标记重定向:即改变输入或输出的默认路径。

在Linux中一切皆文件,所以你的硬件在Linux系统中同样地表示为文件。

0:标准输入——键盘:从文件(默认是键盘)读取输入;

1:标准输出——屏幕:发送数据到文件(默认是屏幕);

2:标准错误——屏幕:发送所有错误信息到一个文件(默认是屏幕)。

上述三个数字是标准的POSIX字符,也称为文件描述符。每个Linux命令都会使用上述的流与用户或其他系统程序进行交互。

1. 标准输入

在Shell运行任何命令之前,它先尝试打开文件进行读取。如果打开文件失败,Shell将以一个错误退出并不运行命令;如果打开文件成功,Shell使用打开的文件的文件描述符作为命令的标准输入文件描述符。

标准输入具有以下特点:

1)它是默认的输入方法,被所有命令使用来读取输入;

2)用数字0表示;

3)也被称作stdin;

4)默认的标准输入设备是键盘。

操作符

语法:command < input_filename

$ cat < /etc/inittab #在屏幕上显示/etc/inittab内容

其标准输入的数据流如下图:

ab02f8d58b6550d2b82394d3a0a533b3.png

示例:

$ cat list.txt

ab dde

ab dde

abde

333

a

$ sort < list.txt #利用标准输入对文件内容进行排序

333

a

ab dde

ab dde

abde

2. 标准输出

标准输出有如下特点:

1)它被命令用来写入或显示命令自身的输出;

2)它用数字1表示;

3)也被称作stdout;

4)默认的标准输出设备是屏幕。

操作符>是输出重定向操作符。

语法:command > output_filename

Shell首先尝试打开用于写入的文件output_filename,如果成功,就将命令的标准输出发送到新打开的文件;如果文件打开失败,整个命令就会失败。

ls > /tmp/output.txt #将ls命令的输出到output.txt文件(文件不存在会自动创建;文件存在则会被重写)

其标准输出的数据流如下图:

c5ff9240bb65e3cc5a3635acef380d72.png

示例:

$ ./echonum.sh > num.txt #将脚本的输出保存到文件

3. 标准错误

标准错误具有如下特点:

1)它是默认的错误输出方法,被用于写入所有系统错误信息;

2)它用数字2表示;

3)也被称为stderr;

4)默认的标准输出设备是屏幕或显示器。

操作符2>是标准错误重定向操作符。

语法:command 2> errors_filename

Shell首先打开文件errors_filename用于写入,获得这个文件的文件描述符,并用它替换文件描述符2,从而将任何写到标准错误的内容被写到errors_filename。

$ cat echonum.sh

#!/bin/bash

#202005

for ( i = 0; i < 3; i++ )) #此处错误:缺少(

do

for (( j = 0; j < 5; j++ ))

do

echo -n "* "

done

echo ""

done

$ ./echonum.sh #直接执行脚本,标准错误输出在屏幕

./echonum.sh: line 4: syntax error near unexpected token `('

./echonum.sh: line 4: `for ( i = 0; i < 3; i++ ))'

$ ./echonum.sh 2> nums_error.txt #执行时将标准错误重定向到文件,不会输出到屏幕

$ cat nums_error.txt #查看文件内容

./echonum.sh: line 4: syntax error near unexpected token `('

./echonum.sh: line 4: `for ( i = 0; i < 3; i++ ))'

其标准错误的数据流如下图:

6a33bd6f8adeba7770db98e33e648733.png

本节结束

标签:文件,echonum,Shell,输出,标准,sh,Linux,输入

来源: https://www.cnblogs.com/workingdiary/p/13024828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值