管道和重定向:> < >> <<
- 标准输入:stdin 0
- 标准输出:stdout 1
- 标准错误输出:stderr 2
I/O重定向:
改变数据输入和输出的方式;
>:输出重定向,原有内容会被覆盖掉,也叫覆盖输出重定向;
>>:追加输出,可保留原来文件中的内容,不会覆盖掉,二者均会在文件不存在的时候创建文件;
2>:重定向错误输出;
2>>:追加方式
&>:重定向标准输出或错误输出至同一个文件;
ls /varr >/tmp/var3.out 2>/tmp/err.out
<:输入重定向(cat、tr)
<<EOF:代表在此处生成文档,并以EOF结束
set -C:会禁止对已存在文件进行覆盖重定向,强制覆盖输出,则使用>|;
set +C:关闭上述功能;
管道
前一个命令的输出,作为后一个命令的输入 (可组合小命令完成复杂任务) 命令1的输出 | 命令2的输入 | 命令3的输入 | …
tee
用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单说就是将数据重定向到给定文件和屏幕上.>
-a:向文件中重定向时使用追加模式
练习:
1. 统计/urs/bin/目录下文件的个数;
ls /usr/bin |wc -l
2. 取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示;
cut -d: -f7 |sort -u
3. 思考:如何显示/var/log目录下每个文件的内容类型?
file /var/log/*
4. 取出/etc/inittab文件的第6行;
head -6 /etc/inittab|tail -1
5. 取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中;
tail -9 /etc/passwd |head -1|cut -d: -f1,7|tee /tmp/users
6. 显示/etc目录下所有以pa开头的文件,并统计其个数;
ls -d /etc/pa*”|wc -l
7. 不使用文本编辑器,将alias cls=clear一行内容添加至当前用户的.bashrc文件中;
echo “alias cls=clear”>>~/.bashrc