標籤:style blog http java color get
linux重新導向命令應用及文法 [複製連結]
發表於 2008-12-18 18:24 | 來自 51CTO網頁
[只看他] 樓主
1. 標準輸入的控制
文法:命令 檔案將命令的執行結果送至指定的檔案中。
例如:
ls -l > list 將執行“ls -l” 命令的結果寫入檔案list 中。
文法:命令>! 檔案將命令的執行結果送至指定的檔案中,若檔案已經存在,則覆蓋。
例如:
ls -lg >! list 將執行“ls - lg” 命令的結果覆蓋寫入檔案list 中。
文法:命令>& 檔案將命令執行時螢幕上所產生的任何資訊寫入指定的檔案中。
例如:
cc file1.c >& error 將編譯file1.c 檔案時所產生的任何資訊寫入檔案error 中。
文法:命令>> 檔案將命令執行的結果附加到指定的檔案中。
例如:
ls - lag >> list 將執行“ls - lag” 命令的結果附加到檔案list 中。
文法:命令>>& 檔案將命令執行時螢幕上所產生的任何資訊附加到指定的檔案中。
例如:
cc file2.c >>& error 將編譯file2.c 檔案時螢幕所產生的任何資訊附加到檔案error 中。
3. 命令文法
command > filename 把標準輸出重新導向到一個新檔案中
command >> filename 把標準輸出重新導向到一個檔案中(追加)
command 1 > fielname 把標準輸出重新導向到一個檔案中
command > filename 2>&1 把標準輸出和標準錯誤一起重新導向到一個檔案中
command 2 > filename 把標準錯誤重新導向到一個檔案中
command 2 >> filename 把標準輸出重新導向到一個檔案中(追加)
command >> filename 2>&1 把標準輸出和標準錯誤一起重新導向到一個檔案中(追加)
command filename2 把command命令以filename檔案作為標準輸入,以filename2檔案作為標準輸出
command &m 把標準輸出重新導向到檔案描述符m中
command Linux命令重新導向與管線命令
命令重新導向: 在Bash命令執行中,除了有>符號,還有3種輸出輸入狀況,分別是: 1 標準輸入: 代碼為0,或稱為stdin,使用方式為< 2 標準輸出: 代碼為1,或稱為stdout,使用方式為1> 3 錯誤輸出: 代碼為2,或稱為stderr,使用方式為2> >> 累加到檔案中,檔案累加,舊資料保留. 例: [test @test test]# ls –al 1>list.txt 2>list.err 將顯示資料正確輸出到list.txt,錯誤的資料輸出到list.err
>與>>比較,區別:
>: 將原來由螢幕輸出的正確資料輸出到>右邊的檔案或裝置
>>: 將原來由螢幕輸出的正確資料輸出到>>右邊,
與>不同的是,該檔案將不會被覆蓋,而新的資料將以累加方式添加到檔案的最後面. /dev/null是什麼呢?
答: 基本上,它有點象一個無底洞,專門收集垃圾,當您輸入的任何東西導向到這個虛擬垃圾桶,它就會憑空消失,非常有用.
例: [test @test test]# find /-name testing 1> list_right 2> /dev/null
如果要把資料都寫到同一個檔案中 [test @test test]# find /-name testing 1> list_right 2>&1
管線命令 管線命令使用的是”|”界定符號 管線命令”|”僅能處理經由前一個指令傳來的正確資訊,也就是標準輸出(stdout)資訊,對於標準錯誤資訊並沒有直接處理能力.
每個管線部分都是指令,而後一個指令的輸入乃是前一個指令的輸出.
常用的管線命令: cut 文法: [root @test /root]# cut –d “分隔字元” [-cf] fields 參數說明: -d: 後面接的是分割字元,預設是空格符 -c: 後面接的是第幾個字元 -f: 後面接的是第幾個區塊 cut的主要用途在於將同一行裡的資料進行分解,最常用在分析一些資料或檔案資料的時候,因為有時候我們會以某些字元當作分割參數,然後將資料加以切割,以取得我們需要的資料(常用與分析我們的記錄檔).
sort 文法: [root @test /root]# sort [-t 分隔字元] [(+起始)(-結束)][-nru]
參數說明: -t 分隔字元: 使用分隔字元隔開不同區塊,預設是tab +start –end: 由第start區塊排序到end區塊 -n: 使用純數字排序(否則會以字母方式排序) -r: 反向排序 -u: 相同出現的一行,只列出一次
[root @test /root]# cat /etc/passwd | sort 將列出來的個人帳號排序
wc 文法: [root @test /root]# wc [-lmw]
參數說明: -l: 多少行 -m: 多少符號 -w: 多少字
例: [root @test /root]# cat /etc/passwd | wc –l 這個檔案裡有多少行.
uniq 文法: [root @test /root]#uniq
uniq重複資料刪除的行從而只顯示一個
tee 例: [root @test /root]# last | tee last.list | cut –d “ ” –fi 使用tee,會將資料同時傳給下一個命令執行,也會將資料寫入last.list檔案中
tr 文法: [root @test /root]# tr [-ds] SET1 參數說明: -d: 刪除SET1這個字串 -s: 取代重複的字元
例: [root @test /root]# cat /etc/passwd | tr –d: “:”這個符號在/etc/passwd中不見了
split 文法: [root @test /root]# split [bl] 輸入檔案 輸出檔案前置字元 參數說明: -b: 以檔案SIZE來分 -l: 以行數來分
例: [root @test /root]# split –l 5 /etc/passwd test 會產生testaa,testab,testac等檔案