shell_53.理解Linux输入和输出

理解输入和输出
1.两种显示脚本输出的方法。
(1)在显示器屏幕上显示输出。
(2)将输出重定向到文件中。

2.标准文件描述符
Linux 系统会将每个对象当作文件来处理,这包括输入和输出。Linux 用文件描述符来标识每个文件对象。
文件描述符是一个非负整数,唯一会标识的是会话中打开的文件。每个进程一次到最多可以打开 9 个文件描述符。
出于特殊目的,bash shell 保留了前 3 个文件描述符(0、1 和 2),
文件描述符缩写描述

0         STDIN     标准输入
1         STDOUT     标准输出
2         STDERR     标准错误

(1)STDIN
STDIN 文件描述符代表 shell 的标准输入。对终端界面来说,标准输入就是键盘。shell 会从STDIN 文件描述符对应的键盘获得输入并进行处理。
当在命令行中只输入 cat 命令时,它会从 STDIN 接收输入。输入一行,cat 命令就显示一行。

$ cat
this is a test
this is a test
this is a second test.
this is a second test.

也可以通过输入重定向符强制 cat 命令接收来自 STDIN 之外的文件输入:

$ cat < testfile
This is the first line.
This is the second line.
This is the third line.
$

(2)STDOUT
STDOUT 文件描述符代表 shell 的标准输出。在终端界面上,标准输出就是终端显示器。
shell的所有输出(包括 shell 中运行的程序和脚本)会被送往标准输出,也就是显示器。
大多数 bash 命令会将输出送往 STDOUT 文件描述符。

$ ls -l > test2 
$ cat test2 
total 20 
-rw-rw-r-- 1 rich rich 53 2020-06-20 11:30 test 
-rw-rw-r-- 1 rich rich 0 2020-06-20 11:32 test2 
-rw-rw-r-- 1 rich rich 73 2020-06-20 11:23 testfile 
$

通过输出重定向符(>),原本应该出现在屏幕上的所有输出被 shell 重定向到了指定的文件。
也可以使用>>将数据追加到某个文件:

$ who >> test2 
$ cat test2 
total 20 
-rw-rw-r-- 1 rich rich 53 2020-06-20 11:30 test 
-rw-rw-r-- 1 rich rich 0 2020-06-20 11:32 test2 
-rw-rw-r-- 1 rich rich 73 2020-06-20 11:23 testfile 
rich pts/0 2020-06-20 15:34 (192.168.1.2) 
$

STDOUT不会输出错误信息

$ ls -al badfile > test3 
ls: cannot access badfile: No such file or directory 
$ cat test3 
$


(3)STDERR
shell 通过特殊的 STDERR 文件描述符处理错误消息。STDERR 文件描述符代表 shell 的标准错误输出。
shell 或运行在 shell 中的程序和脚本报错时,生成的错误消息都会被送往这个位置。

你可能感兴趣的:(linux,运维,服务器)