LINUX经常使用命令--重定向、管道篇(四)

1、Linux重定向php

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

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

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

 

1.重定向标准输出ubuntu

 

  使用>能够将原本出如今屏幕的标准输出信息重定向到一个文件中。bash

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

 

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

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

 

3.屏蔽不想看到的信息code

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来表示

 

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

相关文章
相关标签/搜索