当前位置:网站首页>重定向操作
重定向操作
2022-08-09 17:03:00 【孙晓神】
一、将输出重定向到文件或程序。
| 用法 | 说明 |
|---|---|
| > file | 重定向标准输出(stdout);以覆盖文件 |
| >> file | 重定向标准输出(stdout);以附加到文件 |
| 2> file | 重定向标准输入(stderr);以覆盖文件 |
| 2> /dev/null | 将标准输入(stderr)错误消息重定向到/dev/null,从而将他丢弃 |
| &> file 或 > file 2>&1 | 重定向标准输出(stdout)和标准输入(stderr)以覆盖同一个文件 |
| &>> file 或 >> file 2>&1 | 重定向标准输出(stdout)和标准输入(stderr)以附加到同一个文件 |
注意:重定向操作的文件顺序非常重要
> file 2>&1
将标准输出重定向到file,然后将标准错误作为标准输出重定向到相同位置(file)。
2>&1 > file
与以上相反,将标准错误重定向到标准输出的默认位置(终端窗口,因此没有任何更改),然后仅将标准输出重定向file。
示例
1、使用date命令查看的时间戳保存到/tmp/dateback中,供日后参考。
[[email protected] ~]$ date > /tmp/dateback
[[email protected] ~]$ cat /tmp/dateback
Wed 3 Aug 19:55:43 CST 2022
2、将一个日志文件最后100行复制到另一个文件。
[[email protected] ~]$ sudo tail -n 100 /var/log/messages > /tmp/end-100
[[email protected] ~]$ wc -l /tmp/end-100
100 /tmp/end-100
3、将4个文件连接为1个文件。
[[email protected] log]$ sudo cat lastlog maillog tallylog > /tmp/old-log
4、将主目录的隐藏文件名和常规文件名列出到文件中。
[[email protected] ~]$ ls -a > /tmp/my-file
5、将输出附加到现有文件。
[[email protected] ~]$ echo "new line of information" >> /tmp/many-lines
[[email protected] log]$ sudo diff lastlog tallylog >> /tmp/tracking-mode
6、在终端上查看普通命令输出时,将错误重定向到文件。
[[email protected] ~]$ find /etc -name passwd 2> /tmp/errors
/etc/pam.d/passwd
/etc/passwd
[[email protected] ~]$ cat /tmp/errors
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/pki/pesign’: Permission denied
find: ‘/etc/ssh/sshd_config.d’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/cni/net.d’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/containers/networks’: Permission denied
find: ‘/etc/sos/cleaner’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/firewalld’: Permission denied
7、将进程输出保存到/tmp/output文件中,将错误消息保存到/tmp/errors文件中。
[[email protected] ~]$ find /etc -name passwd > /tmp/output 2> /tmp/errors
[[email protected] ~]$ cat /tmp/output
/etc/pam.d/passwd
/etc/passwd
[[email protected] ~]$ cat /tmp/errors
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/pki/pesign’: Permission denied
find: ‘/etc/ssh/sshd_config.d’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/cni/net.d’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/containers/networks’: Permission denied
find: ‘/etc/sos/cleaner’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/firewalld’: Permission denied
8、忽略并丢弃错误消息,但保存进程输出的消息。
[[email protected] ~]$ find /etc -name passwd > /tmp/export 2> /dev/null
[[email protected] ~]$ cat /tmp/export
/etc/pam.d/passwd
/etc/passwd
[[email protected] ~]$ cat /dev/null
9、将输出和生成的错误消息存储在一起。
[[email protected] ~]$ find /etc -name passwd &> /tmp/save-both
[[email protected] ~]$ cat /tmp/save-both
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/pki/pesign’: Permission denied
find: ‘/etc/ssh/sshd_config.d’: Permission denied
/etc/pam.d/passwd
find: ‘/etc/grub.d’: Permission denied
/etc/passwd
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/cni/net.d’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/containers/networks’: Permission denied
find: ‘/etc/sos/cleaner’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/firewalld’: Permission denied
10、将输出和生成的错误附加到现有文件。
[[email protected] ~]$ find /etc -name passwd >> /tmp/save-both 2>&1
[[email protected] ~]$ cat /tmp/save-both
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/pki/pesign’: Permission denied
find: ‘/etc/ssh/sshd_config.d’: Permission denied
/etc/pam.d/passwd
find: ‘/etc/grub.d’: Permission denied
/etc/passwd
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/cni/net.d’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/containers/networks’: Permission denied
find: ‘/etc/sos/cleaner’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/pki/pesign’: Permission denied
find: ‘/etc/ssh/sshd_config.d’: Permission denied
/etc/pam.d/passwd
find: ‘/etc/grub.d’: Permission denied
/etc/passwd
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/cni/net.d’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/containers/networks’: Permission denied
find: ‘/etc/sos/cleaner’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/firewalld’: Permission denied
二、构建管道
说明:管道是一个或者多个命令的序列,用竖线字符“|”分隔;管道将第一个命令的标准输出连接到下一个命令的标准输入。想象一下:数据正在通过管道从一个进程流向另一个进程,在其流过的管道中每个命令都会略微对其做些改动。
重定向:会向文件发送标准输出或从文件获取标准输入。
管道:会将一个进程的标准输出发送到另一个进程的标准输入。
示例
1、使用ls命令的输出并使用less在终端上以一次一次的方式显示输出。
[[email protected] ~]$ ls -l /usr/bin | less
2、ls命令的输出传送到wc -l,用户统计从ls收到的行数,并将该行数显示在终端。
[[email protected] ~]$ ls | wc -l
9
3、在管道中输入出当前查询结果的前10行,并将最终结果重定向到一个文件中。
[[email protected] ~]$ ls -t | head -n 10 > /tmp/ten-last
[[email protected] ~]$ cat /tmp/ten-last
rhel-8.6-x86_64-dvd.iso
Downloads
Desktop
Documents
Music
Pictures
Public
Templates
Videos
三、管道、重定向和tee命令
当重定向与管道组合时,shell会首先设置整个管道,然后重定向输入/输出。如果在管道的中间使用了输出重定向,则输出将转至文件,而不是前往管道中的下一个命令。tee命令克服了这个限制;在管道中,tee将其标准输入复制到其标准输出中,并且还将标准输出重定向到指定为命令参数的文件。如果将数据想象成流经管道的水,那么可将tee视觉化为管道中的T形接头,负责输出在两个方向上的流向。
示例
1、将ls命令的输出重定向到文件,并且将输出传递到less,以便在终端上以一次一屏的方式显示。
[[email protected] ~]$ ls -l | tee /tmp/save-both | less
2、如果管道末尾使用了tee,则可以保存命令的最终输出并且同时输出到终端。
[[email protected] ~]$ ls -t | head -n 10 | tee /tmp/ten-lest
rhel-8.6-x86_64-dvd.iso
Downloads
Desktop
Documents
Music
Pictures
Public
Templates
Videos
[[email protected] ~]$ cat /tmp/ten-lest
rhel-8.6-x86_64-dvd.iso
Downloads
Desktop
Documents
Music
Pictures
Public
Templates
Videos
边栏推荐
猜你喜欢

MASA Stack 第三期社区例会

WinForm(三)揭开可视化控件的面纱

传统数据中台又贵又复杂?何不试一试永久免费的下一代数据中台

一口气拿下6个大厂offer,是什么水平

谭中意:你知道 “开源女王” 是谁吗?

为了高性能、超大规模的模型训练,这个组合“出道”了

Logic unauthorized and horizontal and vertical unauthorized payment tampering, verification code bypass, interface

Self-taught software testing, how far can I go out to find a job?

Engaged in software testing for a year, only basic functional testing, how to further study?

学长告诉我,大厂MySQL都是通过SSH连接的
随机推荐
【工业数字化大讲堂 第二十期】制造业数字化能力建设分享,特邀制造业高级咨询顾问 李东老师分享
What is test development and why is it so popular now?
国能准能集团研发矿山数字孪生系统 填补国内采矿行业空白
leetcode/链表中环的入口节点
集合框架Collection与Map的区别和基本使用
How to choose a good SaaS knowledge base tool?
一口气拿下6个大厂offer,是什么水平
win10 uwp 获取指定的文件 AQS
在 .NET MAUI 中如何更好地自定义控件
Jenkins使用pipeline部署服务到远程服务器
动态RDLC报表(四)
BSN季度版本2022年8月31日迭代更新预告
SkiaSharp 之 WPF 自绘 粒子花园(案例版)
JVM:(八)运行时数据区之方法区
为了高性能、超大规模的模型训练,这个组合“出道”了
Volatile:JVM 我警告你,我的人你别乱动
win10 uwp 改变鼠标
How tall is the B+ tree of the MySQL index?
2022秋招面试宝典,啃完面试稳了
最新!2022版新员工基础安全知识教育培训PPT,企业拿去直接用