栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

重定向操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

重定向操作

一、将输出重定向到文件或程序。
用法说明
> 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中,供日后参考。

[student@controller ~]$ date > /tmp/dateback
[student@controller ~]$ cat /tmp/dateback
Wed  3 Aug 19:55:43 CST 2022

2、将一个日志文件最后100行复制到另一个文件。

[student@controller ~]$ sudo tail -n 100 /var/log/messages > /tmp/end-100
[student@controller ~]$ wc -l /tmp/end-100
100 /tmp/end-100

3、将4个文件连接为1个文件。

[student@controller log]$ sudo cat lastlog maillog tallylog > /tmp/old-log

4、将主目录的隐藏文件名和常规文件名列出到文件中。

[student@controller ~]$ ls -a > /tmp/my-file

5、将输出附加到现有文件。

[student@controller ~]$ echo "new line of information" >> /tmp/many-lines
[student@controller log]$ sudo diff lastlog tallylog >> /tmp/tracking-mode

6、在终端上查看普通命令输出时,将错误重定向到文件。

[student@controller ~]$ find /etc -name passwd 2> /tmp/errors
/etc/pam.d/passwd
/etc/passwd

[student@controller ~]$ 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文件中。

[student@controller ~]$ find /etc -name passwd > /tmp/output 2> /tmp/errors

[student@controller ~]$ cat /tmp/output
/etc/pam.d/passwd
/etc/passwd

[student@controller ~]$ 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、忽略并丢弃错误消息,但保存进程输出的消息。

[student@controller ~]$ find /etc -name passwd > /tmp/export 2> /dev/null

[student@controller ~]$ cat /tmp/export
/etc/pam.d/passwd
/etc/passwd

[student@controller ~]$ cat /dev/null

9、将输出和生成的错误消息存储在一起。

[student@controller ~]$ find /etc -name passwd &> /tmp/save-both

[student@controller ~]$ 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、将输出和生成的错误附加到现有文件。

[student@controller ~]$ find /etc -name passwd >> /tmp/save-both 2>&1

[student@controller ~]$ 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在终端上以一次一次的方式显示输出。

[student@controller ~]$ ls -l /usr/bin | less

2、ls命令的输出传送到wc -l,用户统计从ls收到的行数,并将该行数显示在终端。

[student@controller ~]$ ls | wc -l
9

3、在管道中输入出当前查询结果的前10行,并将最终结果重定向到一个文件中。

[student@controller ~]$ ls -t | head -n 10 > /tmp/ten-last
[student@controller ~]$ 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,以便在终端上以一次一屏的方式显示。

[student@controller ~]$ ls -l | tee /tmp/save-both | less

2、如果管道末尾使用了tee,则可以保存命令的最终输出并且同时输出到终端。

[student@controller ~]$ ls -t | head -n 10 | tee /tmp/ten-lest
rhel-8.6-x86_64-dvd.iso
Downloads
Desktop
Documents
Music
Pictures
Public
Templates
Videos
[student@controller ~]$ cat /tmp/ten-lest
rhel-8.6-x86_64-dvd.iso
Downloads
Desktop
Documents
Music
Pictures
Public
Templates
Videos
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号