✏️
安全运维
  • 目录
  • 常用命令速查手册
    • LINUX 命令总结
  • Linux--CentOS
    • 实战案例
      • 进入CentOS 7紧急模式,恢复root密码
      • 创建一个让root都无法删除的文件
      • tar源码包管理及srpm源码包安装方法
      • 找出系统中使用CPU最多的进程
      • 使用screen执行备份命令
      • 扩展Swap分区
      • 解决磁盘有空间但创建不了文件及修复文件系统问题
      • 修复服务器文件系统
      • 自定义ssh服务的日志类型和存储位置
      • 日志切割及搭建远程日志收集服务器
      • 配置公司内网服务器每天定时自动开关机
    • 基础知识
      • Linux的目录结构
      • 系统时间管理
      • 关机、重启命令及7个运行级别
      • passwd、shadow 文件
    • 基础命令
      • 帮助命令
      • ping 命令
      • ls 命令
      • alias 命令
      • history 命令
      • Linux中的快捷键
      • Untitled
      • Untitled
    • 基础配置
      • 安装中文版man手册
      • 网卡配置
      • 关闭防火墙并设置开机不启动防火墙
      • 临时和永久关闭SELinux
      • 配置本地YUM源
    • 文件管理
      • touch 命令
      • VIM 命令
      • cp 命令
      • mv 命令
    • 文件查看
      • cat 命令
      • more 命令
      • less 命令
      • head 命令
      • tail 命令
      • sort 命令
    • 用户和用户组管理
    • 文件权限管理
      • 文件基本权限
      • 文件的特殊权限:SUID、SGID、STicky及文件扩展权限ACL
    • 程序包的管理与安装
      • Yum的使用
    • 文件的压缩和归档
    • 系统进程管理
      • uptime命令查看系统负载
      • top 命令动态管理进程
      • lsof 命令
      • pstree 命令
      • 进程前、后台切换及优先级管理
    • 重定向和文件的查找
      • 文件描述符
      • 重定向的含义及管道、tee命令的使用
      • 查找文件的常用命令及应用
      • 命令判断——3个特殊符号“;”“﹠﹠”“||”
    • 磁盘介绍及管理
      • 磁盘分区工具和挂载
    • 文件系统结构
      • 文件系统结构
      • 文件的硬链接和软链接
      • 使用ln命令创建文件的链接
    • RAID的原理与搭建
      • RAID常用类型搭建和使用,以及注意事项
    • LVM管理和SSM工具的使用
      • 创建LVM的基本步骤
      • SSM工具
    • Linux计划任务与日志的管理
      • 日志的种类和记录的方式
    • 文件共享服务
      • NFS 的安装与使用
      • Samba 的安装与使用
      • CentOS 7.6 安装和配置samba文件共享服务
      • FTP 的安装与使用
      • proftpd
  • 安全加固
    • Windows 安全加固
    • WebLogic 安全加固
    • Apache 安全加固
    • Tomcat 安全加固
    • MySql 安全加固
    • PHP 安全加固
    • SSH 安全加固
    • IIS 安全加固
  • 基线检查
    • DB2数据库基线检查策略
    • MySQL数据库基线检查策略
    • Oracle10g数据库基线检查策略
    • Sybase数据库基线检查策略
    • MSSQL 2008 基线检查策略
    • Jboss7 基线检查策略
    • Apache 基线检查策略
    • Tomcat 基线检查策略
    • 基线检查策略
  • ClamAV
  • iptables
由 GitBook 提供支持
在本页
  • 输入重定向
  • 输出重定向
  • EOF的使用
  • 错误重定向
  • null黑洞和zero空文件
  • &>和>&符号
  • 管道 | 的使用
  • tee 命令

这有帮助吗?

  1. Linux--CentOS
  2. 重定向和文件的查找

重定向的含义及管道、tee命令的使用

上一页文件描述符下一页查找文件的常用命令及应用

最后更新于3年前

这有帮助吗?

程序是由数据和指令组成的,程序可理解为对数据的加工,就好比计算器,它本身是个程序,在计算器里面输入1 + 1,程序处理并输出结果2,这个结果也是个数据。

那么程序在数据加工时,首先需要加载数据或获取数据,程序本身都有默认的获取数据的方式,通常默认设备是键盘。例如,grap /etc/passwd,grep是命令程序,而/etc/passwd则是文件,也就是数据,那么grep程序要对/etc/passwd文件的数据进行加工处理时,grep需要获取/etc/passwd的文件数据,而这些文件的数据是程序的数据输入,可以把这一种数据输入的方式,称为“输入重定向”。

程序对数据进行加工处理后,需要把结果输出,通常程序输出设备为显示器,如果需要把结果永久存储起来,则需要把结果指向文件存储。这个对程序输出做重新指定的操作,称为“输出重定向”。

输入重定向

输入重定向主要更改程序的数据输入方式

将命令中接收输入的途径由默认的键盘改为其他文件,而不是等待从键盘输入。

输出重定向

定义:输出重定向是指将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上。

输出重定向使用 “>” “>>”操作符号。

语法:

>文件名,表示将标准输出的内容,写到后面的文件中,如果此文件名已经存在,将会覆盖原文件中的内容,若此文件不存在,则会以此文件名写新建文件。

>>文件名,表示将标准输出的内容,以追加形式写到后面的文件中。若此文件不存在,则会以此文件名新建该文件。

cat /proc/cpuinfo > cpu.txt    #cpu.txt中如果有内容则会先清除再写入
cat /etc/passwd >> passwd.txt  #将读取的信息追加到passwd.txt文件中。
> text.txt                     #清空一个文件

EOF的使用

EOF本意是End Of File,表明到了文件末尾。“EOF”通常与“<<”结合使用,“<<EOF”表示后续的输入作为子命令或者子Shell的输入,直到命令又遇到“EOF”,再次返回到主调Shell,可将其理解为分界符(delimiter)。既然是分界符,那么形式自然不是固定的,这里可以将“EOF”进行自定义,但是前后的分界符必须成对出现且不能和Shell命令冲突。

以<<EOF开始,以EOF结尾

以ccc作为分界符

在脚本中可以通过输入重定向来打印消息菜单。

在使用的时候需要在“<<”右边跟一对终止符。终止符是可以自定义的

错误重定向

将命令执行过程中出现的错误信息(选项或参数错误)保存到指定的文件中,而不是直接显示到显示器。

重定向操作符:
输入重定向:1>或简写为>
输出重定向:0>或简写为>
错误重定向:2>
其中的2指的是标准错误输出的文件描述符(在使用标准输入和输出时省略了1、0编号)。

在实际应用中,错误重定向可以用来收集执行的错误信息,为排错提供依据。对于Shell脚本还可以将无关紧要的错误信息重定向到空文件/dev/null中,以保持脚本输出的简洁。

将错误显示的内容和正确显示的内容分开

注意:使用“2>”操作符时,像使用“>”操作符时一样,会覆盖目标文件的内容,若要追加而不覆盖文件的内容可使用“2>>”操作符。

null黑洞和zero空文件

1.可以把/dev/null文件看作“黑洞”(是个特殊设备),所有写入的内容都会永远丢失,而尝试读取内容则什么也读不到,然而/dev/null文件对命令行和脚本都非常有用。

[root@testhost ~]# echo aaaaaa > /dev/null   #尝试输出一些内容到/dev/null
[root@testhost ~]# cat /dev/null     #什么信息也看不到

2./dev/zero,在类UNIX操作系统中是一个特殊的设备文件,读取该文件的时候,它会提供无限的空字符(NULL,ASCII NUL,0x00)。典型用法是用它来产生一个特定大小的空白文件。

使用dd命令产生一个50MB的文件

dd命令:用于转换并复制一个文件。参数如下。

(1)if代表输入文件。如果不指定if,默认就会从stdin中读取输入。

(2)of代表输出文件。如果不指定of,默认就会将stdout作为默认输出。

(3)bs代表以字节为单位的块大小。

(4)count代表被复制的块数。

对于程序输出的结果,正确的结果内容写入一个文件,错误的结果内容写入另一个文件。

[root@testhost ~]# ls /tmp xxxx >ok.txt 2>err.txt

&>和>&符号

&表示等同于的意思。

把正确的程序执行结果重定向到标准错误的结果内,输入一个相同的位置或文件。

1>﹠2把标准输出重定向到标准错误,如图

把错误的程序执行结果重定向到标准输出的程序结果内,输入一个相同的位置或文件。

2>﹠1把标准错误重定向到标准输出,如图

[root@testhost ~]# ls /tmp xxxx >1.txt 2>&1

[root@testhost ~]# ls /tmp xxxx 2>2.txt 1>&2

在生产环境中的Shell脚本中的>/dev/null 2>& 1是什么意思?

[root@testhost ~]# cat /etc/passwd >/dev/null 2>&1
注意:将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃。

管道 | 的使用

语法:command -a | command -b | command-c |......

使用管道传输数据,如图

管道命令只处理前一个命令的正确输出,不处理错误输出。

管道右边的命令,必须是能够接收标准输入的数据流的命令。

管道符可以把两条命令连起来,并可以连接多个命令。

管道能够使进程之间完成数据传输,在A进程处理完数据后,把输出的结果通过管道传输给B进程。A进程输出的结果为“标准输出”,在B进程接收时,则为“标准输入”。因此,管道后面的需要支持接收“标准输入”的数据流。

tee 命令

功能:读取标准输入的数据,并将其内容输出成文件。

命令使用格式:tee [-a][--help][--version][文件...]。
参数如下:
(1)-a,--append:内容追加到给定的文件而非覆盖。
(2)--help:在线帮助。

tee命令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件,如图