您的位置:首页 > 其它

过虑器 输入输出及管道

2012-12-25 16:25 113 查看
输入与输出

[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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: