`
yss1209
  • 浏览: 6546 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Liunx中重定向及管道

阅读更多
1重定向

1.1      重定向符号

>               输出重定向到一个文件或设备 覆盖原来的文件
>!              输出重定向到一个文件或设备 强制覆盖原来的文件
>>             输出重定向到一个文件或设备 追加原来的文件
<               输入重定向到一个程序

1.2标准错误重定向符号

2>             将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件  b-shell
2>>           将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1         将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
>&             将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件  c-shell
|&              将一个标准错误 管道 输送 到另一个命令作为输入

1.3命令重导向示例

在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>
[test @test test]# ls -al > list.txt
将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代!
[test @test test]# ls -al >> list.txt
将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留!
[test @test test]# ls -al  1> list.txt   2> list.err
将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err
[test @test test]# ls -al 1> list.txt 2>&1
将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式!
[test @test test]# ls -al 1> list.txt 2> /dev/null
将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。

1.4为何要使用命令输出重导向

• 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
• 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
• 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
• 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
• 错误讯息与正确讯息需要分别输出时。

2   管线命令 ( pipe )

就如同前面所说的, bash 命令执行的时候有输出的数据会出现,那么如果这群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来设定?这就牵涉到管线命令的问题了( pipe ),管线命令使用的是『 | 』。
例子:简单的管线命令
假设我们要读取 last 这个指令中,那个 root 登入的『次数』应该怎么作?
那么我所进行的步骤是:
1. 执行 last ,将所有这个月的所有人登入数据取出来;
2. 使用 grep 将上面的输出数据(stdout)当中的 root 撷取出来,其它的不要;
3. 使用 wc 这个可以计算行数的指令将上一步的数据计算行数!
由于 last 的输出是一行代表一次登入,所以只要计算几行就代表登入几次的意思,经由上面三个步骤,将 last 数据逐步的筛选,就可以得到我们的数据了!整个命令可以写成如下: [test @test bin]# last | grep root | wc -l
这个管线命令『 | 』仅能处理经由前面一个指令传来的正确信息,也就是standard output ( STDOUT ) 的信息,对于 stdandard error 并没有直接处理的能力。

2.1基本的管线命令指令介绍

• cut
语法:[root @test /root ]# cut -d "分隔字符" [-cf] fields
参数说明:
-d :后面接的是用来分隔的字符,预设是『空格符』
-c :后面接的是『第几个字符』
-f :后面接的是第几个区块?
范例:[root @test /root]# cat /etc/passwd | cut -d ":" -f 1
将 passwd 这个文件里面,每一行里头的 : 用来作为分隔号,而列出第一个区块!也就是姓名所在啦!
[root @test /root]# last | cut -c1-20
将 last 之后的数据,每一行的 1-20 个字符取出来!
• sort
语法:[root @test /root ]# sort [-t 分隔符] [(+起始)(-结束)] [-nru]
参数说明:
-t 分隔符:使用分隔符来隔开不同区间,预设是 tab
+start -end:由第 start 区间排序到 end 区间
-n :使用『纯数字』排序(否则就会以文字型态来排序)
-r :反向排序
-u :相同出现的一行,只列出一次!
范例:[root @test /root]# cat /etc/passwd | sort将列出来的个人账号排序!
[root @test /root]# cat /etc/passwd | sort -t: +2n将个人账号中,以使用者 ID 来排序(以 : 来分隔,第三个为 ID ,但第一个代号为 0 之故)
[root @test /root]# cat /etc/passwd | sort -t: +2nr反相排序啰!
• wc
语法:[root @test /root ]# wc [-lmw]
参数说明:
-l :多少行
-m :多少字符
-w :多少字
范例:[root @test /root]# cat /etc/passwd | wc -l这个文件里头有多少行?
[root @test /root]# cat /etc/passwd | wc -w这个文件里头有多少字!?
• uniq这个指令用来将『重复的行删除掉只显示一个』
语法:[root @test /root ]# uniq
范例:[root @test /root]# last | cut -d" " -f1 | sort | uniq
• tee命令重定向到文件的同时将数据显示在屏幕上
语法:[root @test /root ]# last | tee last.list | cut -d " " -f1
范例:[root @test /root]# last | tee last.list | cut -d " " -f1
• tr
语法:[root @test /root ]# tr [-ds] SET1
参数说明:
-d :删除 SET1 这个字符串 
-s :取代掉重复的字符!
范例:[root @test /root]# last | tr '[a-z]' '[A-Z]' <==将小写改成大写
[root @test /root]# cat /etc/passwd | tr -d : <== : 这个符号在 /etc/passwd 中不见了!
[root @test /root]# cat /home/test/dostxt | tr -d '\r' > dostxt-noM
• split
语法:[root @test /root ]# split [-bl] 输入文件 输出文件前导字符
参数说明:
-b :以文件 size 来分
-l :以行数来分
范例:[root @test /root]# split -l 5 /etc/passwd test <==会产生 testaa, testab, testac... 等等的文件
说明:在 Linux 底下就简单的多了!你要将文件分割的话,那么就使用 -b size 来将一个分割的文件限制其大小,如果是行数的话,那么就使用 -l line 来分割!
管线命令在 bash 的连续的处理程序中是相当重要的!另外,在 log file 的分析当中也是相当重要的一环。
管道输送到一个命令的标准输入可以使用标准输入参数”-“ 进行更仔细的控制.如cat命令的示例
eg:  sort mylist | more
sort mylist | cat –n | lpr
pwd | cat – mylist | lpr

分享到:
评论

相关推荐

    Linux中重定向及管道(ubuntu 终端命令).txt

    Linux中重定向及管道(ubuntu 终端命令).txt

    Linux实验八:LinuxC-编程-IO-重定向和管道.doc

    在Linux系统中,I/O重定向和管道是两种重要的进程间通信(IPC)方式,它们允许我们改变程序的标准输入、输出和错误流,或者在不同的进程中传递数据。本实验主要涵盖了这两个主题,通过编写和运行C语言程序来实践。 ...

    Linux下重定向详解

    - **处理顺序**:在I/O重定向中,标准输出和标准错误输出的管道会优先准备,然后再从标准输入读取数据。 - **管道** (`|`):允许上一个命令的标准输出作为下一个命令的标准输入。 - **tee命令**:可以在不影响原本I/...

    linux重定向和管道符

    在Linux操作系统中,重定向和管道符是两个非常重要的概念,它们极大地增强了命令行界面的灵活性和功能性。让我们深入探讨这两个主题。 **一、标准输入输出** 在Linux中,每个命令或程序都有三个标准流:标准输入...

    Linux笔记-005-重定向管道.xmind

    Linux系统重定向及管道符(作者:千锋教育-磊哥)

    Linux应用技术:Linux重定向与管道.pptx

    拓展:管道和重定向 Linux文件系统 系统及其他命令 vi编辑器 磁盘分区管理 拓展:重定向 输出重定向 功能:将一个命令的输出重定向到一个文件中,而不是屏幕显示。 输出重定向符:&gt; 、&gt;&gt; 例如:将last命令的输出结果...

    Linux操作之输入输出重定向和管道

    ### Linux操作之输入输出重定向和管道 #### 标准输入输出与错误处理 在Linux或Unix环境下,标准输入(`stdin`)、标准输出(`stdout`)以及标准错误输出(`stderr`)是非常重要的概念。这三个流通常与控制终端关联...

    linux中的重定向.pdf

    Linux中的重定向是操作系统命令行中非常重要的功能,它允许用户改变命令的标准输入、标准输出和标准错误输出的位置。重定向可以将数据从文件、设备或另一个命令中导入或导出。在Linux shell中,我们可以使用特殊的...

    标准IO重定向和管道

    在某些情况下,管道中的 `-` 符号可以用来代表标准输入或标准输出。例如: ```bash cat - | grep "pattern" ``` 这里,`cat -` 表示从标准输入读取数据,`grep` 命令则用于搜索特定模式。 ##### 3.3 tee命令 `...

    管道与IO重定向 计算机操作系统 Linux Ubuntu

    管道与IO重定向在Linux系统中的应用 管道(Pipeline)是一种机制,允许用户将一个命令的输出作为另一个命令的输入,从而实现了命令之间的数据传输。在Linux系统中,管道是通过竖线符号(|)来实现的。例如,命令`ls...

    Linux 命令 shell 重定向 >

    在实际使用中,这些重定向技巧可以结合其他命令进行复杂的流程控制,比如管道(|)、逻辑运算符(&&, ||)等,实现数据的高效处理和管理。例如,你可以将一个命令的输出作为另一个命令的输入,或者将错误信息和正常...

    1.4: 归档及压缩 、 重定向与管道操作 、 find精确查找 、 vim高级使用(1).docx

    Linux 系统管理中,归档及压缩、重定向与管道操作、find 精确查找、vim 高级使用等知识点是非常重要的。下面将详细介绍这些知识点。 1. 归档及压缩 归档及压缩是 Linux 系统管理中非常重要的一部分。tar 命令是 ...

    vim编辑器中掌握输入输出重定向与管道命令的应用

    在Linux世界中,掌握输入输出重定向和管道命令是提高命令行操作效率的关键。vim编辑器虽然不直接涉及这些操作,但在使用vim之外的shell环境中,它们是非常实用的工具。 输入输出重定向允许我们将命令的输入和输出从...

    2-8重定向与管道符.pdf

    在Linux操作系统中,掌握重定向和管道符是网络管理员日常工作中不可或缺的技能。这两个功能强大的工具可以帮助用户更高效地管理和处理命令输出。 首先,我们来深入理解输入输出重定向。输入重定向允许我们将数据源...

    练习shell变量、重定向、管道等相关命令

    熟练掌握Shell中的变量、重定向和管道操作对于提高工作效率至关重要。接下来,我们将详细探讨这些概念及其应用。 #### 变量定义与引用 **定义变量:** ```sh 变量名=变量值 ``` 在Shell脚本中定义变量非常简单,...

    Linux管道符与重定向.pdf

    Linux 管道符与重定向是 Linux 系统中两种重要的机制,分别用于控制命令的输入/输出和重定向输出到文件。Linux 命令的输入通常来自键盘,但也可以来自文件,而输出通常到监视器或屏幕上。Linux 计算环境使用重定向...

    操作系统实验作业——linux系统调用学习,重定向、管道、多进程、多线程编程技术实现.zip

    在本实验作业中,我们将深入学习Linux操作系统中的系统调用,并通过实践掌握重定向、管道、多进程以及多线程编程技术。下面将详细阐述这些知识点。 1. Linux系统调用: Linux系统调用是用户程序与操作系统内核交互...

    Linux系统配置及服务管理_第05章_重定向管道.doc

    本章主要讨论的是Linux中的重定向管道(Redirection and Pipeline)这一核心概念,它是Linux命令行交互式操作的重要组成部分,允许用户灵活地控制输入输出以及进程间的通信。 首先,我们来看重定向(Redirection)...

    北邮linux开发环境实验报告

    在本实验报告中,我们将深入探讨“北邮Linux开发环境”的相关知识,特别是Shell管道(Pipe)和重定向(Redirection)功能的实现,以及如何利用这些工具生成TCP活动状况报告。这一实验属于北京邮电大学计算机科学与...

Global site tag (gtag.js) - Google Analytics