一. 简单描述
linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,通过这个数字可以实现文件的读写操作。linux启动后,会默认打开3个文件描述符,分别是:标准输入:0 标准输出:1 标准错误输出:2
【小解其意】:
输入指令:输入可以从键盘或文件中得到
指令执行:如果成功会把正确的输出到屏幕(默认)或文件中,如果错误会把错误的输出到屏幕(默认)或文件中
如果不想默认输出到屏幕上那就需要重定向啦!
二. 输出重定向
格式:command-line1 [1-n] > file或文件操作符或设备
【小解其意】:将一条命令执行结果(标准输出,或者错误输出,默认打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)1,2分别是标准输出,错误输出。
02 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls wirelessqa.log wirelessqa2.log |
03 |
ls : wirelessqa.log: No such file or directory |
04 |
ls : wirelessqa2.log: No such file or directory |
08 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls wirelessqa.log wirelessqa2.log 2>stderr.log |
09 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stderr.log |
10 |
ls : wirelessqa.log: No such file or directory |
11 |
ls : wirelessqa2.log: No such file or directory |
14 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>stdout.log |
15 |
ls : wirelessqa.log: No such file or directory |
16 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log |
20 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log >stdout1.log |
21 |
ls : wirelessqa.log: No such file or directory |
22 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log |
25 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>stdout.log 2>stderr.log |
26 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log |
28 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stderr.log |
29 |
ls : wirelessqa.log: No such file or directory |
32 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log >stdout.log 2>&1 |
33 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log |
34 |
ls : wirelessqa.log: No such file or directory |
37 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log &>all.log |
38 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat all.log |
39 |
ls : wirelessqa.log: No such file or directory |
41 |
作者:毕小朋 博客: http: //www .wirelessqa.com |
43 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>>stdout.log 2>>stderr.log |
44 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stderr.log |
45 |
ls : wirelessqa.log: No such file or directory |
46 |
ls : wirelessqa.log: No such file or directory |
47 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat stdout.log |
52 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 2>&- |
54 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 2> /dev/null |
61 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 1>&- 2>&- |
66 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ls logcat.log wirelessqa.log 2> /dev/null 1> /dev/null |
【提醒注意】:
1、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。
2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。
3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。
4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。
5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行
三. 输入重定向
格式:command-line [n] <file或文件描述符&设备
命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。
02 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat cat1.log |
06 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat >cat3.log <<end |
13 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat >cat2.log <cat1.log |
14 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat cat2.log |