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 '' > 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中重定向及管道,Linux中重定向及管道相关推荐

  1. 报错笔记:linux 命令行中的print输出内容无法重定向到文件中

    在命令行上跑一个python程序(执行时间很长),如果将输出直接重定向到命令行上,是会有输出的 但是如果我们将其重定向到一个文件中,可能很久都没有输出 原因在于python是有缓存输出的,所以不能暂时 ...

  2. linux 同一进程内通信,linux中,管道能够在同一进程中进行通信吗?

    linux中,管道能够在同一进程中进行通信吗? 答案是否定的. 管道是用于不同进程之间通信,不能再同一进程中进行通信. 同一进程中,直接进行参数传递就行了,不设计通信问题. 不同进程之间才需要通信,通 ...

  3. linux脚本重定向到输入,linux shell输入输出重定向

    新建一个文本文件包含所需要的脚本.举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网下载下来的*.tar的文件(我好像总是记不住tar的所有参赛).我决定把 ...

  4. linux 移动目录树到子目录中,Linux系统管理员工具包: 移动Linux/UNIX目录

    有时候,您需要将整个 UNIX 目录树复制到相同系统中其他的位置或不同的系统.有许多种不同的方法可以完成这项操作,但并非所有的方法都可以保持信息数量不变或兼容于不同的系统.本文讨论了 UNIX 中各种 ...

  5. linux将屏幕输出到文件,Linux命令执行的屏幕输出内容重定向到日志文件

    摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 快速mark一下这个命令细节,免得以后使用又忘记了 大家都知道可以用echo来输出内容到 ...

  6. linux的程序员计算器,linux中的计算器

    windows系统安装时会自带计算器,在cmd中运行calc即可打开.那么linux系统中有没有计算器呢?答案是肯定的. linux下的图形计算器 linux系统一般也会默认安装一个图形界面的计算器, ...

  7. 玩转linux文件描述符和重定向,玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处: linux下的文件描述符是与文件输入.输出相关联 ...

  8. linux重定向的 符号,linux基础学习-4.3-特殊符号与重定向符号详解

    一.特殊符号 1.# 注释 root用户的命令提示符 2.$ 取变量的内容(命令行) 取某一列(awk) 普通用户的命令提示符 3.! 查找最近一次使用过的命令然后执行 find排除/取反 awk取反 ...

  9. linux终端打印保存到文件,Linux 终端中命令输出保存到文件中的方法

    当你在 Linux 终端中运行命令或脚本时,它会在终端中打印输出方便你立即查看. 有时你需要将输出保存到文件中以备将来参考.当然你可以在 Linux 终端中复制和粘贴,但是有更好的方法可以在 Linu ...

最新文章

  1. [转帖]tar高级教程:增量备份、定时备份、网络备份
  2. python安全编程基础内容
  3. h5c3 part6 flex
  4. MySQL安装之没有配置向导
  5. 清除服务器上传队列的文件,webUploader上传demo
  6. php中mysqli 处理查询结果集的几个方法
  7. Leetcode 17 - Letter Combinations of a Phone Number
  8. JAVA窗口——Frame
  9. 黑马程序员 面试题项目--银行业务调度系统
  10. html - 鼠标悬停文本内容与边框变色
  11. 雄迈摄像头ffmpeg转码推送至websocket
  12. 华为手机热点无法连接_华为手机热点连不上
  13. Task5 | CFA (Amos+Mplus) | 五因素心智觉知度量表:正念是什么?
  14. Verilog消除毛刺
  15. iPhone记步和Android计步,手机中运动步数是如何计算的?
  16. 游戏开发心得——书籍篇——《游戏引擎框架》-导论
  17. SQLserver服务器修复,sqlserver数据库修复工具大师官方版
  18. 用 Compose 实现个空调,为你的夏日带去清凉
  19. java中如何将26个字母依次输出_Java用for循环依次打印26个英文字母,每行十个字母的代码怎么打?...
  20. 网络毕业设计--基于华为ensp防火墙双出口负载拟真实验

热门文章

  1. 老生常谈session,cookie的区别,安全性
  2. javaweb中报404错误
  3. java 2分代复制垃圾回收_Java对象的后事处理——垃圾回收(二)
  4. vue双向数据绑定v-model绑定单选框,复选框,下拉框
  5. 【OS修炼指南目录】----《X86汇编语言-从实模式到保护模式》读书笔记目录表
  6. SQL count和case when配合统计给定条件下不重复的记录数
  7. docker安装mysql5.6,安装redis3.2
  8. [转]ASP.NET MVC4中@model使用多个类型实例的方法
  9. Day39:threading模块、ThreadLocal
  10. WebStorm 快捷键整理