linux笔记:管道和重定向机制

来源:互联网 发布:西交大网络 编辑:程序博客网 时间:2024/05/22 10:54
LINUX的命令行为我们提供了管道和重定向机制。多命令协作就是通过管道和重定向完成的。

**管道通常用来组合不同的命令,实现一个复杂的功能。 (|)
**重定向通常用来保存某命令的输出信息及报错信息,可以用来记录执行结果或保存错误信息到某一指定文件。(>   >>   2>   <)

1.将终端输出结果重定向到指定文件中。>(覆盖)(错误信息不会被重定向文件中)
[例子1]
wangzheng@ubuntu:~$ echo "wangzheng" >wangzheng.txt

wangzheng@ubuntu:~$ ls
Desktop    Music     Templates   aabbcc    etc.tar.gz           wangzheng.tar
Documents  Pictures  Ubuntu One  abc.txt   examples.desktop.gz  wangzheng.txt
Downloads  Public    Videos      bingfeng  home                 wangzheng.zip

wangzheng@ubuntu:~$ cat wangzheng.txt
wangzheng

[例子2]
wangzheng@ubuntu:~$ ls -l >wangzheng.txt
wangzheng@ubuntu:~$ cat wangzheng.txt
total 149880
drwxr-xr-x 5 wangzheng wangzheng      4096 Jul 10 09:41 Desktop
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  5 07:19 Documents
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  9 19:39 Downloads
00:57 wangzheng.zip
...............

2.将终端输出结果重定向到指定文件中。>>(追加)(错误信息不会被重定向文件中)
wangzheng@ubuntu:~$ echo "abcd" >> abc.txt
wangzheng@ubuntu:~$ cat abc.txt
abcd
wangzheng@ubuntu:~$ echo "efghj" >>abc.txt
wangzheng@ubuntu:~$ cat abc.txt
abcd
efghj
wangzheng@ubuntu:~$

3、将报错信息重定向到文件中 (2>),多用于日志文件
wangzheng@ubuntu:~$ ls -l 1234567/ 2>wangzheng.txt

wangzheng@ubuntu:~$ cat wangzheng.txt

ls: cannot access 1234567/: No such file or directory

4.同时保存正确结果和错误信息 (2>&1)#xa0;

5. 标准输入 (<)#xa0;
在 /etc/passwd 文件里搜索 带有“wangzheng” 的字符
wangzheng@ubuntu:~$ grep wangzheng  < /etc/passwd
wangzheng:x:1000:1000:Administrator,,,:/home/wangzheng:/bin/bash
wangzheng@ubuntu:~$

6.管道:将一个命令的输出结果当做另一个命令的输入内容 (|)
wangzheng@ubuntu:~$ ls -l | grep wangzheng
drwxr-xr-x 5 wangzheng wangzheng      4096 Jul 10 10:22 Desktop
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  5 07:19 Documents
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  9 19:39 Downloads
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  5 07:19 Music
drwxr-xr-x 4 wangzheng wangzheng      4096 Jul  9 19:21 Pictures
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  5 07:19 Public
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  5 07:19 Templates
drwxrwxr-x 2 wangzheng wangzheng      4096 Jul  5 07:03 Ubuntu One
drwxr-xr-x 2 wangzheng wangzheng      4096 Jul  5 07:19 Videos
-rw-rw-r-- 1 wangzheng wangzheng         0 Jul  5 01:26 aabbcc
-rw-rw-r-- 1 wangzheng wangzheng        11 Jul 10 10:00 abc.txt
drwxrwxr-x 2 wangzheng wangzheng      4096 Jul  6 08:38 bingfeng
-rw-rw-r-- 1 wangzheng wangzheng   1296120 Jul  5 01:19 etc.tar.gz
-rw-r--r-- 1 wangzheng wangzheng      3742 Jun 30 09:44 examples.desktop.gz
drwxrwxr-x 3 wangzheng wangzheng      4096 Jul  5 01:16 home
-rw-rw-r-- 1 wangzheng wangzheng 152125440 Jul  5 01:13 wangzheng.tar
-rw-rw-r-- 1 wangzheng wangzheng      1289 Jul 10 10:19 wangzheng.txt
-rw-rw-r-- 1 wangzheng wangzheng      3889 Jul  5 00:57 wangzheng.zip
7. 在根目录下查找wangzheng用户的所有包含wangzheng字符的文件(太多了!)

root@ubuntu:~#  find / -user wangzheng | grep angzheng
    ...................

root@ubuntu:~# ls -l / |grep home
drwxr-xr-x   3 root root  4096 Jun 30 09:44 home

(将结果追加到 wangzheng.txt 文件中,有点慢哦!)
root@ubuntu:~# find / -user wangzheng >> /home/wangzheng/wangzheng.txt  |grep wangzheng

root@ubuntu:~# find / -user wangzheng >> /home/wangzheng/wangzheng.txt |grep wangzheng
find: `/run/user/wangzheng/gvfs': Permission denied
find: `/proc/7277/task/7277/fd/5': No such file or directory
find: `/proc/7277/task/7277/fdinfo/5': No such file or directory
find: `/proc/7277/fd/5': No such file or directory
find: `/proc/7277/fdinfo/5': No such file or directory
root@ubuntu:~#
0 0