过虑器 输入输出及管道

输入与输出
[root@node203 ~]# ls -l /dev/std*
lrwxrwxrwx 1 root root 15 Nov 25 15:28 /dev/stderr -> /proc/self/fd/2  //标准错误码输出
lrwxrwxrwx 1 root root 15 Nov 25 15:28 /dev/stdin -> /proc/self/fd/0    //标准输入
lrwxrwxrwx 1 root root 15 Nov 25 15:28 /dev/stdout -> /proc/self/fd/1  //标准输出

重定向
输入重定向
< :表示重定向输入源
command < file     //command的输入源从file文件得到
eg:
[root@node203 ~]# cat tcshrc
# .tcshrc
# User specific aliases and functions
alias rm 'rm -i'
alias cp 'cp -i'
alias mv 'mv -i'
set prompt='[%n@%m %c]# '
[root@node203 ~]# tr 'a-z' 'A-Z' < tcshrc //将小写字母修改成大写字母
# .TCSHRC
# USER SPECIFIC ALIASES AND FUNCTIONS
ALIAS RM 'RM -I'
ALIAS CP 'CP -I'
ALIAS MV 'MV -I'
SET PROMPT='[%N@%M %C]# '
从当前文档输入
使用<<让系统将一次键盘的全部输入,先送入虚拟的'当前文档',然后一次性输入
eg:
[root@node203 ~]# cat > cat.file <<!
> this is a good time
> !
[root@node203 ~]# cat cat.file
this is a good time
输出重定向
使用>改变数据输出目标
[root@node203 ~]# ls -l >lsfile

[root@node203 ~]# ls -l >>lsfile  //追加

错误输出重定向
[root@node203 ~]# ls-l
-bash: ls-l: command not found
[root@node203 ~]# ls-l 2>>cat.file
[root@node203 ~]# cat cat.file
this is a good time
-bash: ls-l: command not found

[root@node203 ~]# ls-l 2>/dev/null  //忽略错误,将错误信息丢了

双重输出重定向
使用>和2>可以将一次操作的正确,错误输入,被单独地送到不同的地方
[linsco@node203 ~]$ find /etc -name passwd 2>stderr >passwd
[linsco@node203 ~]$ ls
passwd //正确的输出 
stderr   //错误的输出
[linsco@node203 ~]$ cat passwd
/etc/pam.d/passwd
/etc/passwd
[linsco@node203 ~]$ cat stderr
find: /etc/audit: Permission denied
find: /etc/pki/CA: Permission denied
find: /etc/racoon/certs: Permission denied
find: /etc/selinux/targeted/modules/previous: Permission denied
find: /etc/selinux/targeted/modules/active: Permission denied
find: /etc/cups/ssl: Permission denied
find: /etc/lvm/archive: Permission denied
find: /etc/lvm/backup: Permission denied
find: /etc/lvm/cache: Permission denied
find: /etc/audisp: Permission denied
find: /etc/cron.d: Permission denied
使用&>将所有输入都送到同一个地方
[linsco@node203 ~]$ find /etc -name passwd &>stdoutt
[linsco@node203 ~]$ find /etc -name passwd >stdoutt 2>&1   或者用这个也可以达到同样的效果
[linsco@node203 ~]$ ls
passwd  stderr  stdoutt
[linsco@node203 ~]$ cat stdoutt
find: /etc/audit: Permission denied
find: /etc/pki/CA: Permission denied
find: /etc/racoon/certs: Permission denied
find: /etc/selinux/targeted/modules/previous: Permission denied
find: /etc/selinux/targeted/modules/active: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: /etc/cups/ssl: Permission denied
find: /etc/lvm/archive: Permission denied
find: /etc/lvm/backup: Permission denied
find: /etc/lvm/cache: Permission denied
find: /etc/audisp: Permission denied
find: /etc/cron.d: Permission denied
rm    *.bak  //以bak结尾的所有文件将被删除
rm    *4*.bak//所有含4,并以bak结尾的文件将被删除

ls *.???  //一个问号只能代表一个字符

引用shell的特殊字符
#ls  \!*
#ls  '!'*

管道命令;
[命令1]|[命令2]|[命令3]
作用:将某个命令的输出信息当作某个命令的输入
命令1的结果传给命令2,命令2的结果传给命令3

重定向文件
重定向分为:输入重定向,输出重定向,错误重定向,追加重定向,同时实现输出和错误重定向
输出重定向:
command > file  //将命令的输出结果保存到file文件中
ls > /root/abc
输入重定向
command <file //命令将执行file文件中的内容
less </root/file
错误重定向
command 2>file
追加重定向
command>>file
实现输出和错误重定向
command &>file
管  道
使用|将前一个过滤器的输出直接送入后一个过滤器的输入
允许多重管道
ls -l | more
cat <filea > fileb  //拷贝filea的内容到fileb
eg:
[root@node203 ~]# cat<filea>fileb
[root@node203 ~]# ls
anaconda-ks.cfg  Desktop  fileb  install.log         pass  rscpass  text.txt  wget-log
cat.file         filea    help   install.log.syslog  rsc   tcshrc   var
[root@node203 ~]# cat fileb
hello
[root@node203 ~]#
cat file.*>file  //将数个小文件合并成一个文件(文件内容的合并)
eg:
[root@node203 ~]# cat filea fileb>file
[root@node203 ~]# cat file
hello
hello

 

 

 

 

你可能感兴趣的:(管道)