当前位置: 首页 > article >正文

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 中的程序和脚本报错时,生成的错误消息都会被送往这个位置。


http://www.kler.cn/a/105622.html

相关文章:

  • 安卓开发断崖揽道VIEW
  • 【adb】adb相关命令行及adb传输文件权限问题 remote couldn‘t create file: Read-only file system
  • 高通平台GPIO引脚复用指导
  • Spark_SQL函数定义(定义UDF函数、使用窗口函数)
  • *Django中的Ajax 纯js的书写样式1
  • 【QT】点击按钮弹出对话框的注意实现
  • 人工智能基础_机器学习003_有监督机器学习_sklearn中线性方程和正规方程的计算_使用sklearn解算八元一次方程---人工智能工作笔记0042
  • Linux学习第23天:Linux中断驱动开发(二): 突如其来
  • TSINGSEE青犀老旧小区升级改造AI+视频监控方案
  • 深入理解JVM虚拟机第十三篇:详解JVM中的程序计数器
  • rust入门
  • 2.9每日一题(定积分的奇偶性以及比较大小)
  • Docker 容器服务的注册、发现及Docker安全
  • python之xml文件的读取介绍
  • ohos的代码同步以及添加自己的代码
  • Python的web自动化学习(二)Selenium安装和环境配置
  • [Python进阶] 消息框、弹窗:ctypes
  • Bayes决策:身高与体重特征进行性别分类
  • 使用 PointNet 进行3D点集(即点云)的分类
  • ToLua使用原生C#List和Dictionary