当前位置:网站首页>管道重定向
管道重定向
2022-08-04 05:31:00 【anqiujiaduizhang】
1、重定向
标准输出 | 标准正确输出 | 标准错误输出 |
进程在运行的过程中根据需要会打开多个文件,每打开一个文件会有一个数字标识。这个标识叫文件描述符。
进程使用文件描述符来管理打开的文件(FD file descriptors)
文件描述符:每打开一个程序都会有文件描述
0 | 标准输入 |
1 | 标准正确 |
2 | 标准错误 |
3+ | 进程在执行过程中打开的其他文件 |
& | 表示正确错误混合输出 |
2、输出重定向(覆盖,追加)
覆盖 | > | |
追加 | >> | |
正确输出 | 1> 1>> | > >> |
错误输出 | 2> | 2>> |
2.1输出重定向覆盖
# date > date.txt
2.2输出重定向追加
#date +%X >> date.txt
2.3错误输出重定向
#ls /root /hhhhhjjjjjj (1)>list.txt
2.4错误输出重定向到不同的位置
#ls /root /hhhhhjjjjjj >list.txt 2>nolist.txt
2.5正确和错误都输入相同位置
#ls /root /hhhhhjjjjjj &>list.txt
2.6重定向到空设备/dev/null
#ls /root /hhhhhjjjjjj 2>/dev/null
#ls /root /hhhhhjjjjjj >/dev/null
#ls /root /hhhhhjjjjjj &>/dev/null
- 注: echo 会将输入的内容送往标准输出 echo 内容 >> 文件名或脚本里面 (等于w)
2.7脚本中使用重定向
# vim a.txt
#
ping -c1 10.18.40.100
if [ $? -eq 0 ];then
echo "10.18.40.100 is up."
else
echo "10.18.40.100 is down!"
fi
#./a.txt (权限不够)
#chown +x a.txt
#./a.txt
[[email protected] ~]# ./a.txt
PING 10.18.40.100 (10.18.40.100) 56(84) bytes of data.
--- 10.18.40.100 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
10.18.40.100 is down!
使用重定向
ping -c1 10.18.40.100 >/dev/null
if [ $? -eq 0 ];then
echo "10.18.40.100 is up." >>up.txt
else
echo "10.18.40.100 is down!" >>down.txt
fi
#./a.txt
# cat down.txt
3、输出重定向
标准输入 : < 等价 0<
默认情况下,cat命令会接受标准输入设备 (键盘)的输入,并显示到控制台,但如果用文件代替键盘作为输入设备,那么该命令会以指定的文件作为输入设备,并将文件中的内容读取并显示到控制台 |
#cat /etc/passwd
#cat < /etc/passwd
虽然执行结果相同,但第一行代表的是以键盘作为输入设备,而第二行代码是以/etc/passwd 文件作为输入设备
将/etc/passwd作为cat 的输入,读出/etc/passwd 的内容
3.1通过输入重定向创建文件
(cat > file << EOF)是用来创建文件或者在脚本中使用,并向文件中输入信息 输入的任何东西会被写入文件中 ,EOF 命令结束
cat >> file5 <<EOF #可以写到脚本里或者文件里面
EOF : 开始和结束的标记 成对使用 结尾的另一个必须定格写。
3.2利用重定向建立多行的文件 脚本创建多行文件
# vim b.txt
#cat >> c.sh <<EOF
#damifan
tangculiji
ludouya
EOF
#chown +x b.txt
#./b.txt
#cat c.sh
4、管道
#rpm -qa | grep 'httpd' #查询所有安装的软件包,过滤包含httpd 的包
4.1将/etc/passwd中的用户按UID 大小排序
# sort -t":" -k3 -n /etc/passwd
# sort -t":" -k3 -n /etc/passwd -r
# sort -t":" -k3 -n /etc/passwd | head -5
# sort -t":" -k3 -n /etc/passwd | tail -5
# sort -t":" -k3 -n /etc/passwd | tail -n +5
参数详解
- sort 排序,默认升序
- -t 指定分隔符
- -k 指定列
- -n 升序
- -r 降序
- | head
- | tail
5、参数传递:xargs
对 ls cp mv 管道不能执行,所以通过xargs
#vim a.txt
/home/c.sh
/home/d.sh
/home/e.sh
#touch /home/{c..e}.sh
# cat a.txt | xargs -i ls {}
#cat a.txt | xargs -i cp -rvf{} 目的地址
#cat a.txt | xargs -i mv {} 目的地址
#cat a.txt | xargs -i rm -rvf{}
边栏推荐
- Pytest常用插件
- (Navigation page) OpenStack-M version - manual construction of two nodes - with video from station B
- MOOSE平台使用入门攻略——如何运行官方教程的例子
- 图像线性融合
- 迅雷关闭自动更新
- Golang环境变量设置(二)--GOMODULE&GOPROXY
- 在AWS-EC2中安装Minikube集群
- LeetCode_Nov_3rd_Week
- MNIST Handwritten Digit Recognition - Lenet-5's First Commercial Grade Convolutional Neural Network
- [English learning][sentence] good sentence
猜你喜欢
随机推荐
Copy Siege Lion 5-minute online experience MindIR format model generation
Machine Learning - Processing of Text Labels for Classification Problems (Feature Engineering)
LeetCode_Nov_4th_Week
安装MySQL的详细步骤
卷积神经网络入门详解
题目1000:输入两个整数a和b,计算a+b的和,此题是多组测试数据
彻底删除MySQL教程
Deep Adversarial Decomposition: A Unified Framework for Separating Superimposed Images
基于PyTorch的FCN-8s语义分割模型搭建
Install Minikube Cluster in AWS-EC2
PostgreSQL schema (Schema)
剪映专业版字幕导出随笔
学习资料re-id
计算某像素点法线
Lee‘s way of Deep Learning 深度学习笔记
Pytest常用插件
CAS无锁队列的实现
集合--LinkedList
MOOSE平台使用入门攻略——如何运行官方教程的例子
arm-3-中断体系结构