标准覆盖输出重定向
1>
错误覆盖输出重定向
2>
标准追加输出重定向
1>>
错误追加输出重定向
2>>
混合覆盖输出重定向
&>
混合追加输出重定向
&>>
各输出各的
1> a 2> b
准备一个环境
touch a.txt
echo 123 > a.txt
echo 456 > test.txt
标准覆盖输出重定向
[root@localhost ~]# cat a.txt b.txt > stdout.txt
cat: b.txt: No such file or directory
[root@localhost ~]# cat stdout.txt
123
覆盖
cat test.txt b.txt > stdout.txt
[root@localhost ~]# cat stdout.txt
456
标准追加输出重定向
[root@localhost ~]# cat a.txt b.txt >> stdout.txt
cat: b.txt: No such file or directory
[root@localhost ~]# cat stdout.txt
123
123
错误覆盖输出重定向
[root@localhost ~]# cat a.txt b.txt 2> stderr.txt
123
[root@localhost ~]# cat stderr.txt
cat: b.txt: No such file or directory
覆盖
[root@localhost ~]# cat test.txt aaa.txt 2> stderr.txt
456
[root@localhost ~]# cat stderr.txt
cat: aaa.txt: No such file or directory
错误追加输出重定向
[root@localhost ~]# cat a.txt b.txt 2>> stderr.txt
123
[root@localhost ~]# cat stderr.txt
cat: b.txt: No such file or directory
cat: b.txt: No such file or directory
[root@localhost ~]# cat test.txt aaa.txt 2>> stderr.txt
456
[root@localhost ~]#
[root@localhost ~]# cat stderr.txt
cat: b.txt: No such file or directory
cat: b.txt: No such file or directory
cat: aaa.txt: No such file or directory
问题如何清空文件内容呢?
>stderr.txt
混合覆盖输出重定向
[root@localhost ~]# cat a.txt b.txt &>all.txt
[root@localhost ~]# cat all.txt
123
cat: b.txt: No such file or directory
混合追加输出重定向
[root@localhost ~]# cat a.txt b.txt &>>all.txt
[root@localhost ~]# cat all.txt
123
cat: b.txt: No such file or directory
123
cat: b.txt: No such file or directory
各输出各的
[root@localhost ~]# cat a.txt b.txt 1> stdout.txt 2> stderr.txt
[root@localhost ~]# cat stdout.txt
123
[root@localhost ~]# cat stderr.txt
cat: b.txt: No such file or directory
输入重定向
1.通过输入重定向输入多个内容
cat > test.txt <<EOF
a
b
c
d
e
f
g
EOF
2.邮件中的案例
yum install -y mailx
mail root
邮件保存的目录
/var/mail/用户名称
/var/spool/mail/用户名称
mail root < test.txt
重定向在shell脚本中的应用
判断10.0.0.0/24网段的机器是否存活
shell 写法
1.文件全部以.sh结尾
vim test.sh
#!/bin/bash #指定命令解释器
ping -c2 -i0.01 10.0.0.200 &>/dev/null
判断:
vim test.sh
#!/bin/bash
if ping -c2 -i0.01 10.0.0.200 &>/dev/null
then
echo "10.0.0.200"主机存活
else
echo "10.0.0.200"主机未存活
fi
shell变量的定义
无需指定变量的数据类型
变量名=值
name=nrj
如何调用变量
$name
for循环中的并发执行
循环体内的内容用{}&括起来 未来面试中可能会问到该问题
循环:
#!/bin/bash
for i in {1..254}; do
{
if ping -c2 -i0.01 10.0.0.$i &>/dev/null
then
echo 10.0.0.$i active
else
echo 10.0.0.$i dead
fi
}&
done