输入与输出
[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