天天看點

Linux重定向和管道相關知識彙總

導入知識

1.指令:基本的計算機操作。例如:加法,減法等

2.程式:指令的集合,一般有執行屬性,看作:菜單

3.程序:是程式的執行個體,是程式執行的過程,看作:按照菜單進行做菜的過程

4.檢視程序 使用ps -ef指令

5.Cat的工作原理:接受輸入,然後完整輸出,輸入什麼内容,cat就會輸出什麼内容

重定向

輸入輸出重定向

标準輸入(stdin)和标準輸出(stdout)

Linux重定向和管道相關知識彙總

2.互動式硬體裝置

标準輸入:從該裝置接收使用者輸入的資料

标準輸出:通過該裝置向使用者輸出資料

标準錯誤:通過該裝置報告執行出錯資訊

下列的裝置檔案,檔案描述符和預設裝置是互相對應的關系,是不變的

Linux重定向和管道相關知識彙總

注:1). 檔案描述符:是一個整數,用來描述一個程序打開檔案,每個程序都有每個程序的檔案描述符。

2).用ulimit -a檢視每個程序最多可以打開多少個檔案 看這行:open files (-n) 1024這是預設值,這個值可以修改:修改截圖如下

Linux重定向和管道相關知識彙總

3).系統級别,最多可以打開多少檔案?

Linux重定向和管道相關知識彙總

這個值可以修改:修改截圖如下

Linux重定向和管道相關知識彙總

3.标準輸入和輸出

改變标準輸入、标準輸出的方向就是重定向

Linux重定向和管道相關知識彙總

4.标準錯誤:通過該裝置報告執行出錯資訊

Linux重定向和管道相關知識彙總

重定向标準輸出到檔案

例如:ls > /tmp/f1 将ls的内容不再螢幕上輸出轉交到/tnp/f1 下(正确輸出)

Linux重定向和管道相關知識彙總

重定向标準輸出和标準錯誤到不同檔案

例如:将正确輸出輸入到f1檔案: 錯誤輸出輸入到f2檔案

Linux重定向和管道相關知識彙總

重定向标準輸出和标準錯誤到同一個檔案

例如:将标準輸出和标準錯誤到f1檔案(注:沒有a2 檔案,有a.txt檔案)

1.

Linux重定向和管道相關知識彙總

2.

Linux重定向和管道相關知識彙總

補充:快速清空檔案内容 >yang 将yang裡面的内容清空

追加内容

兩個特殊檔案

/dev/null:過濾标準錯誤資訊(黑洞檔案)用來屏蔽輸出

/dev/zero:用來建立指定長度文,産生0

管道及相關配套指令

1.指令echo

用途:在螢幕上顯示一段文字或指定内容。

格式:echo [-n] 字元串 -n沒有換行

Linux重定向和管道相關知識彙總

補充:\的作用:

1):指令行的續行

Linux重定向和管道相關知識彙總

2):轉義,将特殊符号的特殊功能的去掉,隻表示特殊符号本身

Linux重定向和管道相關知識彙總

補充:指令echo的其他指令格式詳見本人部落格Linux中echo指令彙總

2.資料過濾

grep資料提取程式

用途:在檔案中查找并顯示包含指定字元串的行

格式:grep [選項]… 模式 目标檔案

-i:查找時忽略大小寫

-v:反轉查找,輸出與模式不相符的行

-w:按整字查找

-n:顯示符合模式要求的行号

-r:遞歸搜尋所有檔案

Linux重定向和管道相關知識彙總

.* 表示任意數量的任意字元

模式

^….:以什麼開頭

Linux重定向和管道相關知識彙總

……KaTeX parse error: Expected group after '^' at position 8: :以什麼結尾 ^̲:表示空行

Linux重定向和管道相關知識彙總

注:該指令行表示去掉/etc/fstab裡以#開頭的行和空行以後輸出

3.管道 (管道是程序之間進行通信的一種方法)

管道操作符号“|”

連接配接左右兩個指令,将左側的指令的标準輸出,作為右側指令的标準輸入

格式:cmd1 | cmd2 [… | cmdn]

head -5 /etc/passwd | tail -1

檢視/etc/passwd的前五行并輸出檢視倒數第一行

使用管道的前提:

1)左邊的指令要有标準輸出

2)右邊的要支援标準輸入

用grep 過濾輸出

ls –l /etc | grep pass(grep支援标準輸入也支援标準輸出)

檢視etc并将含有pass的行過濾輸出

管道和标準錯誤

find /etc –name “p*” | grep passwd (把passwd輸出)

找etc目錄下含有p的行并将含有passwd的行過濾輸出

find /etc –name “p*” | grep passwd > /tmp/aa

找etc目錄下含有p的行并将含有passwd的行過濾輸出并标準輸出到/tmp/aa

find /etc –name “p*” | grep passwd 2> /tmp/aa

find /etc –name “p*” | grep passwd &> /tmp/aa

find /etc –name “p*” 2>/dev/null | grep passwd(将錯誤輸出屏蔽,将正确輸出過濾給paawd)

4.指令xargs

用途:将參數清單轉換小塊分段傳遞給後邊指令,将前邊的标準輸出轉換為參數給後面的指令

讀入stdin的資料轉換為參數添加到指令行中

讓一些不支援管道的指令可以使用管道

Linux重定向和管道相關知識彙總

5.指令seq

用途:列印出一串有序的數字(預設從一開始)

格式:seq [選項] 數字範圍

Linux重定向和管道相關知識彙總

中間有步長,目前步長為一,遞減的話,步長設定為-1

-s:指定分隔符

Linux重定向和管道相關知識彙總

補充:bc指令具有計算功能,可以利用seq和bc進行計算

-w:指定同等寬度

6.指令tr

字元轉換工具

不能直接對檔案操作

使用tr轉換字元

tr SET1 SET2(數量要一緻。一一轉換)

用SET2中的字元替換掉SET1中同一位置的字元

echo 123456 | tr 345 abc(将3轉換a ,4轉化為,5為c)

tr 123 abc < aa

tr ‘[a-z]’ ‘[A-Z]’ < /etc/hosts

使用tr删除字元

tr -d SET

删除與SET相同的字元

echo 123456 | tr -d 345 (将3,4,5删除)

tr -d '[0-9]’ < /etc/hosts

将etc/hosts裡的0到9的數字删除

echo “Tom, I hear a pig!” | tr -d ‘[a-z]’(删除小寫字母)

Linux重定向和管道相關知識彙總

使用tr壓縮字元,替換字元

tr -s SET

将連續相同的字元壓縮成一個字元

echo 112233444555666 | tr -s 345

輸出結果為:1122345666

tr -s SET1 SET2

先替換為SET2再壓縮

echo 112233444555666 | tr -s 345 abc

echo 112233444555666 | tr 345 abc | tr -s abc

7.指令sort

預設按每行的第一個字元排序

Linux重定向和管道相關知識彙總

-n:按整數進行排序

Linux重定向和管道相關知識彙總

-r:遞減排序

Linux重定向和管道相關知識彙總

指定排序鍵

指定按哪一列資料進行排序

-k:指定哪一列為排序鍵

Cat tt | sort -n -k4

Linux重定向和管道相關知識彙總

指定字段分隔符

-t:指定字段分割符(預設是空格)

例如: sort -k3 -t: -n /etc/passwd(将passwd檔案裡的第三個字段整數排序以:為分隔符)

8.指令unip

删除經過排序後的資料的重複記錄

通常和sort連用

Linux重定向和管道相關知識彙總

資料的執行個體統計

-c:顯示檔案中每行連續出現的次數

cat tt | uniq -c

-u:隻顯示不重複的行

cat tt | uniq –u

-d:隻顯示重複的行

cat tt | uniq -d

資料提取及過濾

1.指令cut

從文本檔案或者文本流中提取文本列

cut -選項 提取範圍 文本檔案

常見選項

-c:從指定提取範圍中提取字元

-f:從指定提取範圍中提取字段

提取範圍

n:第n項

n-:第n項到行尾

-m:行首到第m項

n,m:第n項和第m項

n-m:第n項到第m項

2.指令cut -c

ls -l | cut -c 10(提取每一行的第十個字元)

who | cut -c 20-40

cut -c -10 /etc/passwd(提取每一行的第一個到第十個字元)

3.指令cut -f

-d:指定分隔符預設是Tab

cut -d “:” -f 1,7 /etc/passwd (在這個檔案以:為分隔符提取第一個和第七個字段)

who | cut -d ‘ ’ -f1,6

4.指令wc(字數統計)

格式:wc [選項]… 目标檔案…

-l:統計行數

-w:統計字數 (前後都是空白的一組字元)

-c:統計字元數(可見和不可見的字元)

Linux重定向和管道相關知識彙總

檔案差異對比

  1. 指令diff

    比較兩個檔案之間的差異

    輸出結果為兩個檔案的不同之處

    Linux重定向和管道相關知識彙總
    會将不同之處 列舉出來

繼續閱讀