管道与重定向

目录

重定向

转换和删除字符tr

从文件中导入STDIN

把多行发送给STDIN

管道

重定向到多个目标

重定向

先说什么是标准输入输出,我们从键盘上敲击,然后输入到我们的电脑中,这是标准的输入,那么什么是标准输出呢,我们在经过一系列正确的操作得到的能在屏幕上显示出来的输出是标准输出。那不正确的操作产生的能显示在屏幕上的信息是啥呢,那就是标准错误。

标准输入(STDIN)-0 默认接受来自键盘的输入

标准输出(STDOUT)-1 默认输出到终端窗口

标准错误(STDERR)-2 默认输出到终端窗口

  我们可以将我们的操作进行重定向,将信息输入到文件当中去,我们可以通过这样的操作去观察一下操作信息,或我们进行的错误信息。

   >:把标准输出(stdout)进行重定向

           2>:把标准错误输出(stderr)进行重定向

           &>:代表吧所有输出进行重定向

  > 文件内容会被覆盖

  set -C: 禁止将内容覆盖已有文件,但可追加

  >| file:强制覆盖

  set +C: 允许覆盖

   >> 原有内容基础上,追加内容

把输出和错误重新定向到文件

2>: 覆盖重定向错误输出数据流

2>>: 追加重定向错误输出数据流

标准输出和错误输出各自定向至不同位置

COMMAND > /path/to/file.out 2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向

&> 覆盖重定向

&>> 追加重定向

COMMAND > /path/to/file.out 2>&1 (顺序很重要)

COMMAND >> /path/to/file.out 2>&1

():合并多个程序的STDOUT

( cal 2007 ; cal 2008 ) > all.txt

转换和删除字符(tr)

格式:tr [option] .. set1 set2

作用:转换和删除字符

选项:

-c:取字符集的补集

-d:删除所有属于第一字符集的字符

-s:把连续重复的字符集以单独的一个字符表示

-t:将第一个字符集对应的字符转换第二字符集对应的字符(默认)

对应的字符:

[:digit:]:数字

[:alpha:]:字母

[:lower:]:小写字母

[:upper:]:大写字母

[:alnum:]:字母和数字

[:punct:]:标点符号

[:space:]:空白字符

[:print:]:可打印字符

[:cntrl:]:控制(非打印)字符

[:graph:]:图形字符

[:xdigit:]:十六进制字符

从文件中导入STDIN

使用<来重定向标准输入

某些命令能够接受从文件中导入的STDIN

tr ‘a-z’ ‘A-Z’< /etc/issue该命令会把/etc/issue中的小写字符都转换成写写字符

                 tr –d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符

cat > file

mage

wangxiaochun

按ctrl+d离开,可以使用文件来代替键盘的输入

      Cat > filea < fileb

 

把多行发送给STDIN(不常用)

使用“<<终止词”命令从键盘把多行重导向给STDIN

直到 终止词 位置的所有文本都发送给STDIN

有时被称为就地文本(heretext)

例如:

[[email protected] tmp]# mail -s "HELP" root << END

> Hello

> My name is Shanghai,May I know your name?

> END

管道

管道命令无疑是我们在今后操作Linux经常会用带的命令,它的作用是将我们在上一步操作产生的正确的标准输出使用管道后面的命令继续进行操作,如ls /etc/* | grep passwd,是不是我们有操作产生的标准的错误输出就无法进行管道处理了呢,并不是的,我们可以使用2>&1或|&进行将产生的标准错误输出 交给下一个命令执行。

管道中的—符号

这个符号就像一个临时介质,我们可以将我们处理的信息暂时存在这个介质里,然后交给管道后面的命令继续对介质中的信息继续处理。这样,我们就不必将我们在第一步处理的信息先存在磁盘上在进行下一步操作了,十分的方便。

重定向到多个目标(tee)

格式:command_1 | tee [-a] file_name | command_2

作用:把命令1的STDOUT保存到文件中作为命令2的输入

选项:-a:追加

作用:保存不同阶段的输出

复杂管道的故障排除

同时查看和记录输出

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" }
h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; line-height: 173%; page-break-after: avoid; font-size: 16.0pt; font-family: "Cambria", "serif" }
p.MsoAcetate,li.MsoAcetate,div.MsoAcetate { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 9.0pt; font-family: "Calibri", "sans-serif" }
p.MsoListParagraph,li.MsoListParagraph,div.MsoListParagraph { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 21.0pt; font-size: 10.5pt; font-family: "Calibri", "sans-serif" }
span.2Char
{ font-family: "Cambria", "serif"; font-weight: bold }
span.Char { }
span.GramE { }
.MsoChpDefault { font-family: "Calibri", "sans-serif" }
div.WordSection1 { }
ol { margin-bottom: 0cm }
ul { margin-bottom: 0cm }

时间: 2024-08-10 17:19:13

管道与重定向的相关文章

004-用户、组、权限管理命令及bash配置文件、管道、重定向、grep

l  1.用户管理命令 1.)创建用户命令 useradd  [OPTIONS] USERNAME -u(UID):指定用户UID -g(GID):指定基本组 -G( group,...):指定附加组 -c"COMMENT":指定注释信息 -d(home_dir):指定家目录/path/to/directory -s:指定SHELL路径(/etc/shells指定了当前系统可用的安全shell) -m –k:强行为用户创建家目录 -M:不创建用户家目录 /etc/login.defs

管道和重定向笔记

管道和重定向:> < >> << 运算器.控制器: CPU存储器:RAM输入设备/输出设备 程序:指令和数据 控制器:指令运算器:存储器: 地址总线:内存寻址数据总线:传输数据控制总结:控制指令 寄存器:CPU暂时存储器 I/O: 硬盘, 程序 INPUT设备: OUTPUT设备 系统设定    默认输出设备:标准输出,STDOUT, 1    默认输入设备:标准输入, STDIN, 0    标准错误输出:STDERR, 2    标准输入:键盘标准输出和错误输出:显

shell管道与重定向

输出重定向 ? 1 $ ls -l > lsoutput 这条命令将ls命令执行后的结果输入出到lsoutput文件中. 在linux shell中使用符号 > ,< 来完成输入输出的重定向,同时对应的有三种标准的文件描述符,0(标准输入),1(标准输出),2(标准错误),可以 单独的重写向其中的任何一种.你还可以重定向其他的文件描述符,但对标准文件描述符以外进行重定向的情况很少见. 默认情况下>符号在 文件已经存在时它会覆盖,需要使用set -o noclobber(或set -

Linux-(16)管道和重定向

Linux的命令行为我们提供了管道和重定向机制,通过管道和重定向就可以完成多命令协作. 命令行shell的数据流有以下三种定义: 名称 说明 编号 默认 STDIN 标准输入 0 键盘 STDOUT 标准输出 1 终端 STDERR 标准错误 2 终端 命令通过STDIN接收参数或数据,通过STDOUT输出结果或通过STDERR输出错误,通过管道和重定向可以控制CLI的数据流 如果将输出重定向到/dev/null就不会有输出了(这个通常用于在结果中过滤错误信息) 重定向: >  将STDOUT重

Linux shell管道与重定向及实例分析

一.管道 管道命令操作符是:"|",它仅能处理由前面一个命令的正确输出信息,也就是standard output的信息,对于stdandard error信息没有直接处理能力:然后,传递给下一个命令,作为标准输入standard input. linux管道执行过程: 管道命令使用说明: command1正确输出,作为command2的输入,然后command2的输出作为command3的输入,command3的输出打印到屏幕上: 通过管道:command1.command2的正确输出

【Linux探索之旅】第三部分第二课:流、管道、重定向,三管齐下

内容简介 1.第三部分第二课:流.管道.重定向,三管齐下 2.第三部分第三课预告:监视系统活动,滴水不漏 流.管道.重定向,三管齐下 这一课我们来学一些非常有用的内容,而且相当有意思,而且内容很多,而且有可能颠覆你的三<观>(毕竟三管齐下,不颠覆三观也难). 今天的标题中的三个名称,听上去就怪怪的.什么流,管道,重定向,都啥玩意啊.不过希望学完这课,大家能够有拨云见雾的感觉. 到目前为止,我们已经学习了不少Linux的命令了,也已经比较熟悉命令行的用法了.其最基本用法是这样的: 在终端输入命令

linux入门基础——linux多命令协作:管道及重定向

linux多命令协作:管道及重定向 不要重复发明轮子 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件.代码.功能的重新组合,就好像通过零件装配机器一样,源代码的开发和共享让这成为了可能,同时也大大的提供了效率和生产力. 管道和重定向 在linux系统中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或者多个很简单的功能,可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的.组合命令的技术是管道和重定向. linux中,几乎所有命令的返回

linux 管道与重定向

命令行shell数据流有如下定义: 通过管道和重定向可以控制CLI的数据流

4.3管道和重定向

管道和重定向:> < >> << 运算器 控制器: CPU 存储器:RAM 输入设备/输出设备 程序:指令和数据 控制器:指令 运算器 存储器 地址总线:内存寻址 数据总线:传输数据 控制总线:控制指令 寄存器:CPU暂时存储器 I/O:硬盘 INPUT设备: OUTPUT设备: 系统设定 默认输出设备:标准输出,STDOUT,1 默认输入设备:标准输入,STDIN,0 标准错误输出:STDERR,2 标准输入:键盘 标准输出和错误输出:显示器 I/O重定向: Linu

Linux 入门记录:十六、Linux 多命令协作:管道及重定向

一.多命令协作 在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或多个很简单的功能.通过将不同功能的命令组合一起使用,可以实现某个复杂功能的. Linux 中几乎所有命令的返回数据都是纯文本的(因为每个命令都是运行在 CLI 下),而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作成为可能. Linux 的命令行提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的. 二.标准流 对于一个终端而言,可能要处理各种类型的数据,int 型