`
天梯梦
  • 浏览: 13747710 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

深入linux中重定向及管道详解

 
阅读更多

 

一,重定向


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 』将他丢掉时;
错误讯息与正确讯息需要分别输出时。

 

二,管线命令 ( 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命令的示例


例子:

sort mylist | more
sort mylist | cat –n | lpr
pwd | cat – mylist | lpr

 

来源:http://www.jbxue.com/LINUXjishu/9768.html

 

 

分享到:
评论

相关推荐

    Linux下重定向详解

    ### Linux下重定向详解 #### 一、基本概念 在深入了解Linux下的I/O重定向之前,首先需要掌握一些基础的概念。 - **I/O重定向**:通常与文件描述符(File Descriptor, FD)有关,shell中通常包含10个文件描述符,...

    浅析Linux中重定向问题

    ### Linux中重定向问题详解 #### 一、引言 在Linux系统中,重定向是一项非常重要的特性,它允许用户改变程序的标准输入、输出或错误输出的流向,从而实现更灵活的数据处理方式。本文将详细介绍Linux中重定向的概念...

    Linux标准输入、输出和重定向

    ### Linux标准输入、输出与重定向详解 #### 一、标准输入与输出 在Linux操作系统中,每一个进程都会默认打开三个文件,这三个文件被称为“标准流”,分别是: 1. **标准输入(Standard Input, stdin)**:文件...

    Linux应用程序开发详解

    书中的“基本指令”部分会详细介绍如ls、cd、cp、mv、mkdir、rm等常用命令的用法,以及如何通过管道、重定向和shell脚本来提高工作效率。熟悉这些命令,可以使开发者更加高效地在终端中工作。 接下来,书中将引导...

    Linux Shell命令行及脚本编程实例详解PPT

    刘艳涛的《Linux Shell命令行及脚本编程实例详解》是清华大学出版社出版的一本教程,深入浅出地介绍了Shell的使用和脚本编程技巧。 **第2章 初识Linux Shell.pptx** 这一章节可能涵盖了Shell的基础概念,包括什么是...

    Linux+Shell命令行及脚本编程实例详解-刘艳涛.mobi kindle版

    主要内容包括:Linux及Linux Shell简介、初识Linux Shell、常用Shell(Bash)命令、Shell命令进阶、Shell编程基础、Shell的条件执行、Bash循环、Shell函数、正则表达式、脚本输入处理、Shell重定向、管道和过滤器、...

    linux输入输出重定向使用详解

    本文将深入解析Linux中的输入输出重定向及其常见用法。 1. 输出重定向 默认情况下,Linux命令的标准输出(stdout)和错误输出(stderr)都会显示在终端上。输出重定向通过重定向符号实现,如`&gt;`和`&gt;&gt;`。`&gt;`用于...

    刘艳涛版LinuxShell命令行及脚本编程实例详解(含mobi阅读器)

    在探索Linux操作系统的世界中,掌握Shell命令行及脚本编程是每个用户的必备技能之一。《刘艳涛版Linux Shell命令行及脚本编程实例详解》作为一本专注于此领域的教程,无疑为Linux Shell编程初学者和进阶者提供了一个...

    Linux操作系统常用命令详解与用户管理

    内容概要:本文详细介绍了Linux操作系统中的各类基本命令,包括文件和目录操作、文件查看、文件压缩和归档、文件搜索、输入输出重定向和管道命令、系统信息和进程管理命令等。同时,还介绍了用户和用户组管理的相关...

    [Linux]Shell脚本编程详解

    【Linux Shell脚本编程详解】 在Linux操作系统中,Shell脚本是一种强大的自动化工具,它允许用户通过编写一系列命令来执行复杂的任务。这篇文章将深入探讨Shell脚本编程的基础知识,包括语法、常用命令以及如何创建...

    Linux主要shell命令详解.doc

    ### Linux主要Shell命令详解 #### 一、命令置换与特殊字符使用 在Linux环境中,shell命令的灵活性和强大性体现在其能够实现复杂的功能组合。其中一个关键特性是**命令置换**,即通过特定语法来获取一个命令的输出...

    Linux shell 命令行及脚本编程实例详解

    Linux Shell是Linux操作系统中用户与系统交互的主要接口,它是一个命令行解释器,允许用户通过输入命令来执行...阅读《Linux shell 命令行及脚本编程实例详解》这本书,将提供丰富的实例帮助你深入理解和掌握这些概念。

    LINUX Shell 输入-输出重定向.pdf

    本文将深入探讨Linux Shell中的输入-输出重定向的基本概念、常用符号以及实际应用场景。 #### 二、基础知识 ##### 2.1 什么是输入-输出重定向 输入-输出重定向是指在执行命令时重新指定命令的标准输入或标准输出流...

    Linux系统命令及使用详解

    本资料包"Linux系统命令及使用详解"旨在帮助用户全面掌握Linux命令行操作,提升工作效率。 一、基础命令篇 1. `ls`:列出目录内容,常用参数如`-l`显示详细信息,`-a`显示所有文件包括隐藏文件。 2. `cd`:改变当前...

    Linux命令大全详解

    这些只是众多Linux命令中的一部分,实际的“Linux命令大全”涵盖了更多高级命令和使用技巧,包括管道(|)、重定向(&gt;、&lt;、&gt;&gt;)以及shell脚本编程等。学习并熟练掌握这些命令,将使你在Linux环境中游刃有余,大大...

    嵌入式Linux应用程序开发详解第2章Linux基础命令_linux_

    以上只是部分Linux基础命令,实际使用中还有很多其他命令,如`tar`用于打包解压,`管道`和`重定向`操作用于连接命令和控制输入输出等。熟练掌握这些命令,将极大地提升你在嵌入式Linux开发中的效率。阅读《嵌入式...

    Linux编程技术详解 随书CD

    《Linux编程技术详解》随书CD的内容包含了丰富的Linux编程知识,旨在帮助读者深入理解Linux操作系统下的编程技巧和实践。这个ISO文件很可能包含了完整的书籍电子版、源代码示例、相关工具以及可能的教学视频等资源,...

    linux详解篇-全面深入的掌握Linux

    最后,理解Linux的进程间通信(IPC)机制,如管道(pipe)、重定向、命名管道(FIFO)和套接字(socket),对于编写高级脚本和程序设计至关重要。 综上所述,全面深入地掌握Linux不仅需要学习基本的指令和操作,还...

    详解Linux重定向用法

    Linux重定向是Linux操作系统中的一种强大特性,允许用户控制命令的输入、输出和错误信息的流向,从而提高工作效率和简化操作。本文将详细介绍Linux重定向的用法。 首先,理解Linux中的三种数据流至关重要。标准输入...

Global site tag (gtag.js) - Google Analytics