首页 > 系统相关 >Linux基础11 重定向(输入重定向,输出重定向); 管道技术, tee, xargs

Linux基础11 重定向(输入重定向,输出重定向); 管道技术, tee, xargs

时间:2022-11-15 10:23:17浏览次数:50  
标签:11 输出 xargs 重定向 dev etc txt root

1.重定向
将原本要输出到屏幕上的内容,重新指向一个文件或者设备中,屏幕上不会输出原本的内容。

为什么要使用重定向:
1.当屏幕输出的信息很重要,而且希望保存重要的信息时。
2.后台执行中的程序,不希望他干扰屏幕正常的输出结果时。
3.系统的例行命令, 例如定时任务的执行结果,希望他可以存下来时。
4.一些执行命令,我们已经知道他可能出现错误信息, 想将他直接丢弃时。
5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。

运行程序,或者输入一个命令:默认打开4个文件描述符

标准输入 输出分类:
0:标准输入
1:标准输出
2:错误输出
3+:文件名

/dev/stderr(错误输出) -> /proc/self/fd/2 2 -> /dev/pts/0
/dev/stdin(标准输入) -> /proc/self/fd/0 0 -> /dev/pts/0
/dev/stdout(标准输出) -> /proc/self/fd/1 1 -> /dev/pts/0


2.输出重定向分类
重定向的特性:覆盖文件
1>(>):标准输出重定向,将命令执行的正确结果输出到指定的文件或者设备中
2>:错误输出重定向

追加重定向:不会覆盖文件
1>>(>>):标准输出追加重定向,将命令执行的正确结果追加输出到文件末尾
2>>:错输出追加重定向,将命令执行的错误结果追加输出到文件末尾

<<:标准输入重定向:将键盘敲的内容,输入到命令或者文件中


3.输出重定向的使用:

#将正确内容重定向到文件中,错误会输出到屏幕(会覆盖源文件)
ifconfig eth0 > abc

#将正确的内容追加到文件中,错误会输出到屏幕(不会覆盖源文件)
echo "This is network conf" >> abc

#将错误的内容输出到文件中,正确的会输出到屏幕(会覆盖源文件)
find /etc -name "*.conf" 2>b
find /etc -name "*.conf" 1>a 2>b

#合并输出,错误的正确的内容都会输出到一个文件(会覆盖源文件)
find /etc -name "*.conf" >c 2>&1 # &1表示输出到1的地址中
find /etc -name "*.conf" >c 2>c
find /etc -name "*.conf" &>c # &表示混合,把1和2都写入

#将错误输出重定向到 ‘黑洞’,正确内容输出到屏幕/dev/pts/x
ls /root/ /err 2>/dev/null

#将错误输出重定向到 ‘黑洞’,正确内容输出到1.txt文件中
ls /root/ /err >1.txt 2>/dev/null


4.输入的重定向使用

 

< :0<
<< :0<<

案例1:
cat >> zls.txt <<eof
zls
qiudao
eof

案例2:
[root@zls ~]# mail zls < /etc/passwd

案例3:
[root@oldboyedu ~]# grep 'root'
rppr
qwe
rootasdasdadzxczxc
rootasdasdadzxczxc
^C

案例4:
[root@oldboyedu ~]# dd if=/dev/zero of=/file1.txt bs=1M count=20
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.0260574 s, 805 MB/s

[root@oldboyedu ~]# dd </dev/zero >/file2.txt bs=1M count=20 # /dev/zero不断产生0, 通过dd命令, 写入file2.txt中
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.011896 s, 1.8 GB/s


案例5:
恢复mysql数据
[root@zls ~]# mysql -uroot -p123 < bbs.sql


案例6:利用重定向建立多行文件
[root@oldboyedu ~]# cat >file1

案例7:
#!/bin/sh
menu(){
cat <<EOF
+------------+
| 1 | apple |
+---+--------+
| 2 | pear |
+---+--------+
| 3 | banana |
+---+--------+
| 4 | cherry |
+---+--------+
EOF
read -p "please input a num: " fruit
}

usage(){
echo "USAGE:请输入水果编号"
exit 1
}

color(){
case "$fruit" in
1)
echo -e "\E[1;31mapple \E[0m"
;;
2)
echo -e "\E[1;20mpear \E[0m"
;;
3)
echo -e "\E[1;33mbanana \E[0m"
;;
4)
echo -e "\E[1;35mcherry \E[0m"
;;
*)
usage
esac
}
menu
color

案例8:多条命令重定向
[root@oldboyedu ~]# (ls;date) > a.txt # 不加括号只会把后面的命令重定向, ;表示2命令都要执行

案例9:后台进程重定向
(while :; do date; sleep 2; done) &>/dev/null & # &比较特殊,后台运行的&一定要放在最后,否则重定向不起效果


5.管道技术 |

连接多个命令,将管道符左侧的标准输出,交给管道符右侧的命令标准输入

案例1:
将/etc/passwd 中的UID取出并按大小排序
[root@oldboyedu ~]# awk -F : '{print $3}' /etc/passwd|sort -n

案例2:
统计当前/etc/passwd 中用户使用的 shell 类型
[root@oldboyedu ~]# awk -F : '{print $NF}' /etc/passwd|sort |uniq|wc -l # sort排序,uniq去重,wc统计
5

案例3:统计最占cpu的5个进程

案例4:统计网站访问量top20
[root@driver-zeng nginx]# awk '{print $1}' driverzeng.com_access.log|sort |uniq -c|sort -nr|head -20

案例5:取出cpu已使用的百分比,只显示数字
[root@oldboyedu ~]# df -h |awk -F '[ %]+' 'NR==2 {print $5}'
4

 

tee:
显示程序的输出并将其复制到一个文件中。

date |tee b.txt # 输出date的同时, 记录到b.txt中

 

xargs:

有些命令没有标准输入,通过|xargs 将前面命令的标准输出,交给后面命令来处理

find /etc/ -name '*.conf'|xargs ls -l # 把find获取到的通过xargs给后面的命令ls作为参数使用

 

标签:11,输出,xargs,重定向,dev,etc,txt,root
From: https://www.cnblogs.com/ludingchao/p/16891519.html

相关文章

  • 2022-11-15 如何给rich-text里的标签添加类名
    e.title=e.title.replace(/\<p/gi,'<pstyle="display:inline-block!important"');我这个是遍历一个数组中的所有title,并且给每个title的值都替换掉指定的标签,需要......
  • CentOS8.4(Anolis 8.6) Apache 2.4 Web 服务器配置记录(2022.11)
    1.首先安装nginx,因为目前nginx在Web服务市场的占比(26.51%)已经超过Apache(21.40%)。  2.安装nginx步骤(在阿里云虚拟主机CentOS8.4 123.56.43.47中安装)#yum......
  • F2F-L8U3-Describing our job skills 20221113
    Areyoureadyforyourdreamjob?Findthewordsorphraseswiththemeaningsbelow.ffAvailableJOBS......
  • GL-Keeping Fit 20221114
    Lookattheadsforexerciseequipment.whichdoyouthinkisthebestbuy?Why?YogaMatforpush-upBecauseit'stoocoldtodopushupsdirectlyonthegro......
  • 11月15日
    いつだって人は鈍感だもの,毕竟无论何时人都是迟钝的,わかりゃしないんだ肚の中,理解不了别人心怀中的想法,それでも愛し愛され,却也得知在爱与被爱中活下去,生きて行くのが定......
  • F2F-Dealing with travel delays 20221113
    What'stheworstexperienceyou'vehadwhiletravelling?Describewhathappened.Discusswithapartnerplanetimedelaytraindelay因为疫情的问题我不能回家......
  • GL-Speaking American 20221112
    Quinn-ChinaXingwei-ChinaAlice-ChinaEistert-ChinaFen-ChinaAaron-ChinaWhatdoamericansoundlike?Thespeedofcontinuousreadingwillbefastertha......
  • GL-Facing a challenge 20221115
    Time2022.11.14Monday23:30-00:15TopicFacingachallengeWhatisthehardestthingyou'veeverhadtodo?howdidyoumanagetoovvercometheobstaclesin......
  • 11月14日| 如何说好普通话
    -016如何说好普通话讲程_哔哩哔哩_bilibili  ......
  • 11-2 rbac
    授权插件:node,ABAC,RBAC,webhookrbac:role-basedac:基于角色授权,k8s1.6起默认使用基于角色的访问控制ABAC:基于属性的访问控制角色:Role、ClusterRole权限:读get、写w......