准备知识
1、计算机-标准输入、输出设备
输入设备(InputDevice)是人或外部与计算机进行交互的一种装置,用于把原始数据和处理这些数的程序输入到计算机中。常见的有:键盘,鼠标,摄像头,扫描仪,光笔,手写输入板,游戏杆,语音输入装置等。
计算机的输入设备按功能可分为下列几类:
字符输入设备:键盘;
光学阅读设备:光学标记阅读机,光学字符阅读机;
图形输入设备:鼠标器、操纵杆、光笔;
图像输入设备:摄像机、扫描仪、传真机; 模拟输入设备:语言模数转换识别系统。既是输入设备又是输出设备:存储设备有内存储器和外存储器,软盘、硬盘、光盘、U盘、移动硬盘等是外存储器,内存储器又分为RAM和ROM,RAM为随机存储器,ROM是只读存储器,内存条是RAM,ROM指的是主板上的存储BIOS的芯片。
其中,键盘 是最常见的标准输入设备。
输出设备(Output Device)是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。常见的输出设备有显示器、打印机、绘图仪、影像输出系统、语音输出系统、磁记录设备等。
其中,显示器 是最常见的标准输出设备。
2、理解标准输入(流)、标准输出(流)的概念:
流 | 描述符 | 缩写 |
---|---|---|
标准输入 | 0 | stdin |
标准输出 | 1 | stdout |
标准错误 | 2 | stderr |
基于终端的程序往往从一个源读取信息,向一个目的地写入信息:
- 程序读取的源被称为
标准输入(stdin
),通常与终端键盘连接 - 程序写入的目的地被称为
标准输出(stdout
),通常与终端显示器相连
使用bash Shell时,可以用>
或>>
重定向标准输出,用<
重定向标准输入
三种类型的程序
- 图形程序
- 屏幕程序
- 终端程序
linux中标准输入,标准输出,标准错误输出及管道的使用:举例形象生动、内容写得很好。
正题:cat 命令
cat [OPTION] [--help] [-version] fileName
,用于连接(concatenate,缩写)文件并打印到标准输出设备上。
cat
几大功能:
- 一次显示整个文件:
cat fileName
- 从键盘创建一个文件。只能创建新文件,不能编辑已有文件。
cat > fileName
- 向已存在的文件中追加内容。
cat >> fileName >>EOF
- 将几个文件合并为一个新文件。
cat file1 file2 > file
[root@master mr_wc]# cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s), or standard input, to standard output.
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
--help display this help and exit
--version output version information and exit
With no FILE, or when FILE is -, read standard input.
Examples:
cat f - g Output f's contents, then standard input, then g's contents.
cat Copy standard input to standard output.
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'cat invocation'
参数说明:
连接文件(FILE),或标准输入,到标准输出。可选项:
-A
显示所有,等价于-vET
-b
与-n
相似,只不过对于空白行不编号-e
等价于-vE
-E
在每行结束处显示$
-n
从1开始对所有输出的行数编号-s
当遇到有连续两行以上的空白行,就代换为一行的空白行。即 隐藏重复的空行-t
等价于-vT
-T
将TAB字符显示为^
-u
忽略(ignore)-v
显示非打印字符。使用^
和M-
符号,除了LFD和TAB之外
非打印字符,指在计算机中有一些字符是确确实实存在,但是它们不能够显示或者打印出来。
以ASCII码表为例,ascii码值在0-31的为控制字符,无法显示和打印。比如回车符,更多参考ASCII非打印字符
实例:
关于在cat
命令中使用EOF
(end of file
),表示文本结束符。在cat
中EOF
没有特殊含义,也可以使用FOE
、OOO
、EEE
等等(不限于这3个字符 以及大写字符),作用是:避免使用多行echo
命令的方式,来实现多行输出的结果。
cat <<EOF >fileName
,以EOF
作为输入结束(即 退出编辑状态),和ctrl+d
作用一样,EOF
只是一个标识。
[root@master mr_wc]# cat <<EOF >test_cat.sh
> #!/bin/bash
> #you can write shell script follow.
> EOF
[root@master mr_wc]# cat test_cat.sh
#!/bin/bash
#you can write shell script follow.
补充:
1)有关管道符|
的作用:命令A|命令B
,即 命令A的标准输出 作为命令B的标准输入(注意,不能作为命令B的 参数(或选项),得区分参数、输入两者的含义)。
命令A
有标准输出命令B
接受标准输入
管道符|
与重定向的区别:
- 管道会触发两个子进程来执行
|
两边的程序; - 重定向是在一个进程中执行的。
2)tac
,功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上。
[root@master mr_wc]# tac test_cat.sh
#you can write shell script follow.
#!/bin/bash
3)Linux ctrl +c d z
的区别
ctrl+c
:常用于终止正在运行的程序ctrl+d
:表示一个特殊的二进制值,表示EOF
ctrl+z
:常用于挂起一个进程
参考:
linux 进程 ctrl-c,ctrl-z,ctrl-d
linux 信号 SIGINT SIGTERM SIGKILL区别