一、Linux重定向

重定向能够实现Linux命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令。这部分涉及到的比较多的命令主要有:

涉及到的比较多的命令主要有:

  • cat:连接文件
  • sort:排序文本行
  • uniq:忽略或者报告重复行
  • wc:统计文件的行数、词数、字节数
  • grep:打印匹配制定模式的行
  • head:输出文件的头部
  • tail:输出文件的尾部
  • tee:从标准输入读,并往标准输出或者文件写

1.重定向标准输出

  使用>可以将本来出现在屏幕的标准输出信息重定向到一个文件中。

  用>>可以在实现重定向时不覆盖原有内容,而是在文件末尾追加内容.

2.重定向标准错误信息到文件

没有单纯的一个操作符可以将标准错误信息重定向到文件中。要实现这一点有两种办法。第一种使用文件描述符,在shell中,默认用数字0,1,2分别代表标准输入、标准输出、标准错误。

3.屏蔽不想看到的信息

Linux中有一个特殊的文件/dev/null,这个文件叫做bit bucket,可以接受输入信息但是什么都不做。因此要抑制命令的输出信息,只需要如下操作:

  ls /usr/ > /dev/null

4.重定向标准输入

cat命令可以接受一组文件为参数,将这些文件复制到标准输出。我们前面的例子中已经多次使用到cat命令来将文本文件的内容读取到屏幕上。

cat还有一个很重要的功能:接受一组文件,然后通过重定向将他们重新组合到一个文件中。我们看一个例子:

  jerry@ubuntu:~$ cat ls1

  aaaaaaaaaaaaaaaaaaaaaaaa
  jerry@ubuntu:~$ cat ls2
  bbbbbbbbbbbbbbbbbbbbbbbb
  jerry@ubuntu:~$ cat ls1 ls2 > ls
  jerry@ubuntu:~$ cat ls
  aaaaaaaaaaaaaaaaaaaaaaaa
  bbbbbbbbbbbbbbbbbbbbbbbb

其它实例:

  ls -l /usr/tmp >dir 重定向

  ls -l /usr/tmp >>dir 追加重定向

  ls /usr/tmp 2>err.file 错误输出到err.file

  ls /usr/tmp >output.file 2>&1 错误和输出重定向到output

  ls /usr/tmp 2>&1 >output.file 错误到标准输出,其他输到output

  wc </etc/passwd

标准的输入,输出和错误输出分别表示为STDIN,STDOUT,STDERR,也可以用0,1,2来表示

二、管道

将一个程序的标准输出写到一个文件中去,再将这个文件作为另一个程序的输入。管道要解决的就是不需要临时文件就能将两条命令结合在一起。如:
  ls /usr/bin | wc -w
 
Linux提供|操作符,该操作符可以将一个命令的输出作为另一个命令的输入,这样通过多个命令的协作来完成一些比较复杂的内容。比如,我们可以通过uniq命令来排除重复的行。但是uniq命令往往需要和sort命令配合使用。因为uniq接收一组排好序的文本,而刚好sort可以将文本行排序。我们看下面的例子:
  [root@test]#cat ls 
  aaaaaaaaaaaaaaaaaaaaaaaa
  bbbbbbbbbbbbbbbbbbbbbbbb
  aaaaaaaaaaaaaaaaaaaaaaaa
  
  [root@test]#cat ls |sort|uniq
  aaaaaaaaaaaaaaaaaaaaaaaa
  bbbbbbbbbbbbbbbbbbbbbbbb
 
 

我们还可以对uniq命令加上-d选项来查看重复的行,如下:

  [root@test]#cat ls |sort|uniq -d

  aaaaaaaaaaaaaaaaaaaaaaaa

 

使用wc命令可以统计文本的行数、单词书和字节数。可以和例如ls命令的输出一起组成管道命令:

  [root@test]#ls /bin /usr/bin/ | sort | uniq | wc

  

 

如果仅仅想要统计行数,只需要在wc命令后面添加-l选项即可。wc命令常用来统计代码的行数。

  [root@test]#find cn/ -name "*.php" |xargs cat|wc -l

 

上面这个例子统计了cn目录下所有php文件的行数之和。

grep命令用来查找匹配的模式,并且打印包含该模式的行。举个例子:

  [root@test]#ls /bin /usr/bin/ | sort | uniq | grep zip

 

在这个例子中,zip就是一个模式,表示包含字符串zip。我们在/bin和/usr/bin目录下找出名字带有zip的程序,并且打印这些程序的名字。grep命令可以使用正则表达式,功能也非常强大,这里我们不侧重介绍。

head和tail命令也常常用于组成管道命令。head可以查看文件或者文本的前面部分。tail查看文件或者文本的末尾部分。二者都可以接收-n选项,表示显示的行数。

看例子:

  [root@test]#ls /bin/ | head -n 5

 

tail还有一个重要的用处,就是实时显示某些程序的日志文件。tail能接受一个选项-f,实时显示出新添加到文件末尾的行数。这样一旦有新的行追加到日志文件的末尾,就会被实时显示在后面。

 [root@test]#tail -f /var/log/messages

LINUX常用命令--重定向、管道篇(四)的更多相关文章

  1. Linux常用命令-文本查看篇

    前言 Linux常用命令中,除了cat还有很多其他用于文本查看的命令.本文将简单介绍一下这些文本查看的命令. 全文本显示--cat cat可能是常用的一个文本查看命令了,使用方法也很简单: cat f ...

  2. linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

  3. Linux 常用命令:解压缩篇

    前言 Linux常用命令中,有很多用于对文件的压缩或解压,本文将介绍这些解压缩命令中不常见却非常实用的用法. tar tar是linux中最常用的解压缩命令.tar命令可用于处理后缀名为tar,tar ...

  4. LINUX常用命令-系统配置篇(二)

    学到一定程度了就会关注系统方面的一些配置,只是就需要相关的命令了.现在把Linux查看系统配置常用命令列出来 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/ ...

  5. LINUX常用命令大全归纳篇

    su su命令是最基本的命令之一,常用于不同用户间切换. 例如,如果登录为 user1,要切换为user2,只要用如下命令: $su user2 然后系统提示输入user2口令,输入正确的口令之后就可 ...

  6. 大数据学习——linux常用命令(二)四

    系统管理操作 1 挂载外部存储设备 可以挂载光盘.硬盘.磁带.光盘镜像文件等 1/ 挂载光驱 mkdir   /mnt/cdrom      创建一个目录,用来挂载 mount -t iso9660 ...

  7. Linux常用命令-解压缩篇

    前言 Linux常用命令中,有很多用于对文件的压缩或解压,本文将介绍这些解压缩命令中不常见却非常实用的用法. tar tar是linux中最常用的解压缩命令.tar命令可用于处理后缀名为tar,tar ...

  8. Linux常用命令大全(四)

    Linux常用命令大全(四) shell的特点 ☆组合新命令 ☆提供了文件名扩展字符 ☆直接使用shell的内置命令 ☆灵活地使用数据流 ☆结构化的程序模块 ☆在后台执行命令 ☆可配置的环境 ☆高级的 ...

  9. Linux系列教程(四)——Linux常用命令之文件和目录处理命令

    这个系列教程的前面我们讲解了如何安装Linux系统,以及学习Linux系统的一些方法.那么从这篇博客开始,我们就正式进入Linux命令的学习.学习命令,首先要跟大家纠正的一点就是,我们不需要记住每一条 ...

随机推荐

  1. sqlmap新手注入

    一 什么是sqlmap sqlmap is an open source penetration testing tool that automates the process of detectin ...

  2. python-摩尔斯电码查询器

    主程序代码:morse_query.py #-*- coding: UTF-8 -*- ' __date__ = '2016/4/5' from Tkinter import * class mors ...

  3. VS2015中使用Git

    10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支持.考虑到现在Git很火,作为微 ...

  4. AppClassLoader和WebAppClasssLoader的坑

    最近,打算学习一下spring mvc,为后续做一些积累. 搭建spring+mybatis,动态创建mapper,mapper的文件名称和类在一个目录,但是我之前犯个 错误,大小写写错了,结果我用普 ...

  5. CC EAL认证

    国际通用准则(CC) CC(Common Criteria)是国际标准化组织统一现有多种准则的结果,是目前最全面的评价准则.1996年6月,CC第一版发布:1998年5月,CC第二版发布:1999年 ...

  6. 只有电信3G是公网ip。

    只有电信3G是公网ip,其它网络拿到是内部网.

  7. TCP/IP Checksum 吐槽

    算法原理: 假定 output[2] 为输出结果,input[n]为待计算校验和的内存块. 1)所有奇数位[0,2,4……] byte 累加进 结果的奇数位内存 output[0],如果溢出,则进位给 ...

  8. javascript 汉字拼音排序

    定义和用法 用本地特定的顺序来比较两个字符串. 语法 stringObject.localeCompare(target) 参数 描述 target 要以本地特定的顺序与 stringObject 进 ...

  9. iOS 开发的几种手势

    今天为大家介绍一下IOS 的七种手势,手势在开发中经常用到,所以就简单 通俗易懂的说下, 话不多说,直接看代码: // 初始化一个UIimageView UIImageView *imageView ...

  10. C# 如何利用反射来加载程序集,并调用程序集中有关类的方法【转】

    假设在C盘根目录下有个Dog的Dll程序集文件,该程序集文件中包含类Dog 该类中有个狗叫几声的方法,如何通过反射来加载这个C:\Dog.dll,并且调用Dog类里面的Sound方法呢: public ...