一、标准I/O
标准输入: 也可以叫STDIN,用0来标识,通常是键盘
标准输出: 也可以叫STDOUT,用1来标识,通常是显示器
标准错误输出 :STDERR,用2来标识,通常是显示器
二、I/0重定向
I/O重定向是指改变数据的输入或输出来源。
1、输入重定向:<
[root@hao ~]#
tr
'
a-z
'
'
A-Z
'
< /etc/
fstab
#
#
/ETC/
FSTAB
# CREATED BY ANACONDA ON SAT JUL
26
20
:
12
:
53
2014
#
...
2、在此处生成文档:<< 通常和EOF或END一起使用
[root@hao ~]#
cat
<<
END
>
the first line
>
second
>
end
>
END
the first line
second
end
[root@hao ~]#
cat
>> /tmp/myfile.txt <<
EOF
>
the first line
>
second
>
EOF
[root@hao
~]#
cat
/tmp/
myfile.txt
the first line
second
3、输出重定向:> 覆盖输出。
会覆盖目标文件中的内容,容易发生错误。可以使用set -C禁止覆盖已经存在的文件。同理set +C则可以关闭上述功能。默认情况下是可以覆盖,当然在set -C 关闭覆盖输出功能情况下,如果要强制覆盖输出,则可以使用>|来强制覆盖输出。
set -C
4、输出重定向:>>追加输出
[root@hao tmp]#
ls
/
var
account crash db games lib lock mail opt run tmp yp
cache cvs empty gdm local log nis preserve spool www
[root@hao tmp]#
ls
/var >/tmp/
var.out
[root@hao tmp]#
cat
/tmp/
var.out
account
cache
...
5、重定向错误输出:2>,如果不是错误输出,则2>相当于>
6、追加方式重定向错误输出:2>>
[root@hao ~]#
ls
/varr > /tmp/
var2.out
ls
: cannot access /varr: No such
file
or directory
[root@hao
~]#
ls
/varr
2
> /tmp/
var2.out
[root@hao
~]#
cat
/tmp/
var2.out
ls
: cannot access /varr: No such
file
or directory
[root@hao
~]#
ls
/var
2
> /tmp/
var2.out
account crash db games lib lock mail opt run tmp yp
cache cvs empty gdm local log nis preserve spool www
7、若为标准输出,则输出到某一个文件,若为错误输出,则重定向到另一个文件
[root@hao ~]#
ls
/var > /tmp/var2.out
2
>/tmp/
err.out
[root@hao
~]#
cat
/tmp/
var2.out
account
cache
crash
...
[root@hao
~]#
cat
/tmp/err.out
8、重定向标准输出和错误输出至同一个文件:&>
[root@hao
~]#
ls
/var# &> /tmp/
var3.out
[root@hao
~]#
cat
/tmp/
var3.out
ls
: cannot access /var#: No such
file
or directory
[root@hao
~]#
ls
/var &> /tmp/
var3.out
[root@hao
~]#
cat
/tmp/
var3.out
account
cache
...
三、管道
管道:把前一个命令的输出,作为后一个命令的输入,以此类推至多个命令。
[root@hao ~]#
echo
'
hello world
'
|
tr
'
a-z
'
'
A-Z
'
HELLO WORLD
[root@hao
~]#
cut
-d: -f1 /etc/
passwd
|
sort
abrt
adm
apache
...
[root@hao
~]#
cut
-d: -f3 /etc/
passwd
|
sort
-
n
0
1
2
3
4
5
6
7
8
...
[root@hao
~]#
cut
-d: -f1 /etc/
passwd
|
sort
|
tr
'
a-z
'
'
A-Z
'
ABRT
ADM
APACHE
AVAHI
-
AUTOIPD
BIN
...
四、tee命令,输出到文件中,且输出到屏幕上
[root@hao ~]#
echo
'
hello world
'
|
tee
/tmp/
hello.out
hello world
[root@hao
~]#
cat
/tmp/
hello.out
hello world
五、练习
1、统计/usr/bin/目录下的文件个数
[root@hao ~]#
ls
/usr/bin |
wc
-
l
1479
2、取出当前系统上所有用户的shell,要求每种shell只显示以此,并且按顺序显示
[root@hao ~]#
cut
-d: -f7 /etc/
passwd
|
sort
-
u
/bin/
bash
/bin/
sync
/bin/
tcsh
/sbin/
halt
/sbin/
nologin
/sbin/shutdown
3、显示/var/log目录下每个文件的内容类型
[root@hao ~]#
file
/var/log
/*
/var/log/anaconda.ifcfg.log: ASCII text
/var/log/anaconda.log: UTF-8 Unicode English text
/var/log/anaconda.program.log: ASCII English text, with very long lines, with overstriking
/var/log/anaconda.storage.log: UTF-8 Unicode C++ program text, with very long lines
...
4、取出/etc/inittab文件的第六行
[root@hao log]#
head
-
6
/etc/inittab |
tail
-
1
#
5、取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中
[root@hao log]#
tail
-
9
/etc/
passwd
|
head
-
1
|
cut
-d: -f1,
7
|
tee
/tmp/
users
tcpdump:
/sbin/nologin
6、显示/etc目录下所有一pa开头的文件,并统计其个数
[root@hao log]#
ls
-d /etc/pa*|
wc
-
l
5
7、不使用文本编辑器,将alias cls=clear 一行内容添加至当前用户的.bashrc文件中。
[root@hao log]#
echo
"
alias cls=clear
"
>> ~/.bashrc

