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

相關文章
相關標籤/搜索