IO重定向及管道

2018-05-27  本文已影响0人  Hye_Lau

1.IO重定向

(1)可用于输入的设备:文件(键盘设备、磁盘、网卡等)
(2)可用于输出的设备:文件(显示器、磁盘、网卡等)
(3)程序的数据流有三种:

(4)fd:file descriptor,文件描述符

实例

[root@localhost ~]# ll /
总用量 106
dr-xr-xr-x.   2 root root  4096 8月  15 2017 bin
.......
drwxr-xr-x.  20 root root  4096 7月   2 2017 var

//将ll命令执行后的信息输出到~/rootfile文件
[root@localhost ~]# ll / > ~/rootfile
[root@localhost ~]# ll ~/rootfile
-rw-r--r--. 1 root root 1251 5月  28 03:19 /root/rootfile

(5)输出重定向

实例

[root@localhost ~]# su - distro
[distro@localhost ~]$ find /home -name .bashrc
find: “/home/abc1”: 权限不够
find: “/home/user2”: 权限不够
find: “/home/abc9”: 权限不够
find: “/home/abc7”: 权限不够
/home/distro/.bashrc
......

//将上述命令的执行结果,正确的输出至list_right文件,错误的输出至list_error文件;
[distro@localhost ~]$ find /home -name .bashrc > list_right 2>list_error

[distro@localhost ~]$ ll list_right 
-rw-rw-r--. 1 distro distro 40 5月  28 03:33 list_right
[distro@localhost ~]$ ll list_error 
-rw-rw-r--. 1 distro distro 1232 5月  28 03:33 list_error

(6)/dev/null垃圾黑洞设备与特殊写法

COMMAND >  /path/to/somefile 2>&1
COMMAND>> /path/to/somefile 2>&1

实例

//合并正常输出流和错误输出流
[distro@localhost ~]$ find /home -name .bashrc > list 2>&1 
[distro@localhost ~]$ ll list
-rw-rw-r--. 1 distro distro 1272 5月  28 03:47 list

//将命令执行后的错误信息输出至/dev/null丢弃
[distro@localhost ~]$ find /home -name .bashrc 2>/dev/null
/home/abc2/.bashrc
/home/distro/.bashrc

(7)输入重定向

1)cat命令

实例

//利用cat创建一个文件,使用键盘输入文件内容
[root@localhost ~]# cat > catfile
hello world
cat file test
[root@localhost ~]# cat catfile
hello world
cat file test

//用stdin替代键盘的输入
[root@localhost ~]# cat > catfile < ~/.cshrc
[root@localhost ~]# ll catfile ~/.cshrc
-rw-r--r--. 1 root root 100 5月  28 03:56 catfile
-rw-r--r--. 1 root root 100 9月  23 2004 /root/.cshrc

//cat将输入的信息输出到catfile,且当键盘输入eof时,结束输入
[root@localhost ~]# cat > catfile << "eof"
> this is a test
> hello world
> eof
[root@localhost ~]# 

(8)双向重定向

1)tee命令

命令格式与选项

tee [-a] file
-a:以累加的方式,将数据加入file当中

实例

//将last的输出存一份到last.list中
[root@localhost ~]# last | tee last.list | cut -d " " -f1
mageia
root
......
wtmp

//将ls的数据存一份到 ~/homefile,同时屏幕也有输出信息
[root@localhost ~]# ls -l /home | tee -a ~/homefile | more
总用量 148
drwx------. 3 user_g       4016  4096 5月  16 18:28 abc1
drwx------. 3     4025     4025  4096 5月  16 18:28 abc10
drwx------. 3 distro       4017  4096 5月  16 18:28 abc2
......

//tee后接的文件会被覆盖,若加上-a这个参数则能将信息累加
[root@localhost ~]# ls -l / | tee -a ~/homefile | more
总用量 106
dr-xr-xr-x.   2 root root  4096 8月  15 2017 bin
dr-xr-xr-x.   5 root root  1024 7月   2 2017 boot
......
drwxr-xr-x.  20 root root  4096 7月   2 2017 var

2.管道

命令格式

COMMAND1 | COMMAND2 | COMMAND3 | ...

注意

1)tr命令

命令格式

 tr [OPTION]... SET1 [SET2] 

常用方法:

实例

[root@localhost ~]# head -n 6 /etc/passwd | tr 'a-z' 'A-Z'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC
上一篇下一篇

猜你喜欢

热点阅读