Linux主要shell命令詳解

2021-04-13 04:31:41 字數 3512 閱讀 1364

《檔名。可以用下面的命令把wc命令的輸入重定向為 etc passwd檔案: $ wc < passwd 20 23 726 另一種輸入重定向稱為here文件,它告訴shell當前命令的標準輸入來自命令列。here文件的重定向操作符使用<<。它將一對分隔符(本例中用delim表示)之間的正文重定向輸入給命令。下例將一對分隔符delim之間的正文作為wc命令的輸入,統計出正文的行數、單詞數和字元數。 wc<

this text forms the content >of the here document,which >continues until the end of >text delimter >delim 4 17 98 在<

《操作符後面,任何字元都可以作為正文開始前的分隔符,本例中使用delim作為分隔符。here文件的正文一直延續到遇見另乙個分隔符為止。第二個分隔符應出現在新行的開頭。這時here文件的正文(不包括開始和結束的分隔符)將重新定向送給命令wc作為它的標準輸入。 由於大多數命令都以引數的形式在命令列上指定輸入檔案的檔名,所以輸入重定向並不經常使用。儘管如此,當要使用乙個不接受檔名作為輸入引數的命令,而需要的輸入內容又存在乙個檔案裡時,就能用輸入重定向解決問題。 1. 輸出重定向 輸出重定向是指把命令(或可執行程式)的標準輸出或標準錯誤輸出重新定向到指定檔案中。這樣,該命令的輸出就不顯示在螢幕上,而是寫入到指定檔案中。 輸出重定向比輸入重定向更常用,很多情況下都可以使用這種功能。例如,如果某個命令的輸出很多,在螢幕上不能完全顯示,那麼將輸出重定向到乙個檔案中,然後再用文字編輯器開啟這個檔案,就可以檢視輸出資訊;如果想儲存乙個命令的輸出,也可以使用這種方法。還有,輸出重定向可以用於把乙個命令的輸出當作另乙個命令的輸入(還有一種更簡單的方法,就是使用管道,將在下面介紹)。 輸出重定向的一般形式為:命令》

檔名。例如: $ ls > directory.out $ cat directory.out ch1.doc ch2.doc ch3.doc chimp config mail/ test/ $ 將ls命令的輸出儲存為乙個名為directory.out的檔案。 注:如果》符號後邊的檔案已存在,那麼這個檔案將被重寫。 為避免輸出重定向中指定檔案只能存放當前命令的輸出重定向的內容,shell提供了輸出重定向的一種追加手段。輸出追加重定向與輸出重定向的功能非常相似,區別僅在於輸出追加重定向的功能是把命令(或可執行程式)的輸出結果追加到指定檔案的最後,而該檔案原有內容不被破壞。 如果要將一條命令的輸出結果追加到指定檔案的後面,可以使用追加重定向操作符》。形式為:命令》檔名。例如: $ ls *.doc>>directory.out $ cat directory.out ch1.doc ch2.doc ch3.doc chimp config mail/ test/ ch1.doc ch2.doc ch3.doc $ 和程式的標準輸出重定向一樣,程式的錯誤輸出也可以重新定向。使用符號2>(或追加符號2>>)表示對錯誤輸出裝置重定向。例如下面的命令: $ ls /usr/tmp 2> err.file 可在螢幕上看到程式的正常輸出結果,但又將程式的任何錯誤資訊送到檔案err.file中,以備將來檢查用。 還可以使用另乙個輸出重定向操作符(&>)將標準輸出和錯誤輸出同時送到同一檔案中。例如: $ ls /usr/tmp &> output.file 利用重定向將命令組合在一起,可實現系統單個命令不能提供的新功能。例如使用下面的命令序列: $ ls /usr/bin > /tmp/dir $ wc –w < /tmp/dir 459 統計了/usr/bin目錄下的檔案個數。 管 道 將乙個程式或命令的輸出作為另乙個程式或命令的輸入,有兩種方法,一種是通過乙個臨時檔案將兩個命令或程式結合在一起,例如上個例子中的/tmp/dir檔案將ls和wc命令聯在一起;另一種是linux所提供的管道功能。這種方法比前一種方法更好。 管道可以把一系列命令連線起來,這意味著第乙個命令的輸出會作為第二個命令的輸入通過管道傳給第二個命令,第二個命令的輸出又會作為第三個命令的輸入,以此類推。顯示在螢幕上的是管道行中最後乙個命令的輸出(如果命令列中未使用輸出重定向)。 通過使用管道符「|」來建立乙個管道行。用管道重寫上面的例子: $ ls /usr/bin|wc -w 1789 再如: $ cat sample.txt|grep "high"|wc -l 管道將cat命令(列出乙個檔案的內容)的輸出送給grep命令。grep命令在輸入裡查詢單詞high,grep命令的輸出則是所有包含單詞high的行,這個輸出又被送給wc命令,wc命令統計出輸入中的行數。假設sample.txt檔案的內容如下: things to do today: low:go grocery shopping high:return movie high:clear level 3 in alien vs. predator medium:pick up clothes from dry cleaner 那麼該管道行的結果是2。 命令替換 命令替換和重定向有些相似,但區別在於命令替換是將乙個命令的輸出作為另外乙個命令的引數。常用命令格式為: command1 `command2` 其中,command2的輸出將作為command1的引數。需要注意的是這裡的`符號,被它括起來的內容將作為命令執行,執行後的結果作為command1的引數。例如: $ cd `pwd` 該命令將pwd命令列出的目錄作為cd命令的引數,結果仍然是停留在當前目錄下。 第二十二課 在bash中的操作      2023年/5月/29日 命令和檔名擴充套件特性 bash命令列具有命令和檔名擴充套件特性。當輸入乙個還沒完成的命令或檔名時,只需鍵入tab鍵就能啟用命令和檔名擴充套件特性,從而完成該命令的剩餘輸入。如果有多個命令或檔案的字首相同,bash將響鈴並等待使用者輸入足夠的字元,以便選擇唯一的命令或檔名,如果找到,系統將自動補齊搜尋到的命令或檔名,使用者按回車鍵後,系統將執行這條指令。例如: $ cat pre

$ cat preface bash也能列出當前目錄下部分匹配的檔名來完成檔名擴充套件。如果鍵入esc,然後鍵入?,shell將列出所有與輸入的字串相匹配的檔名。例如下例,在沒有完成的輸入後鍵入esc ?,shell將列出所有與輸入的字串相匹配的字串,然後shell回顯命令列,根據列出的檔名,可以鍵入要輸入的檔名或按下tab鍵來完成檔名擴充套件。例如: $ ls document docudrama $ cat doc

document docudrama $ cat docudrama [例】下面是乙個目錄包含的檔案列表: firebird2.7.tgz firebird.readme firebird2.60.tgz firebird firebird2.60.tgz.readme 現在要刪除firebird2.60.tgz.readme檔案,鍵入: $ rm –f fi

系統會發出警報聲,並且自動將命令列補全為: $ rm –f fire 並等待使用者進一步輸入檔名的後面部分。現在再鍵入: b

系統再次發出警報聲,並且自動將命令列補全為: $ rm –f firebird 並等待使用者進一步輸入檔名的後面部分。現在再鍵入: 2.6

系統再次發出警報聲,並且自動將命令列補全為: $ rm –f firebird2.60.tgz 並等待使用者進一步輸入檔名的後面部分。現在再鍵入: .

此時命令將被補全為: $ rm –f firebird2.60.tgz..readme 從上例可以看到,bash總是盡力根據使用者輸入的資訊來補全命令。當無法根據現有資訊補全命令時,則提示使用者再給出更多的資訊,然後再根據使用者的提示來進一步補全命令。作為使用者最好是能夠一次性給出足夠的資訊以便於bash進行命令補全;否則多按幾次

Linux主要shell命令詳解

什麼是shell linux系統的shell作為作業系統的外殼,為使用者提供使用作業系統的介面。它是命令語言 命令解釋程式及程式語言的統稱。shell是使用者和linux核心之間的介面程式,如果把linux核心想象成乙個球體的中心,shell就是圍繞核心的外層。當從shell或其他程式向linux傳...

shell主要命令使用總結

ls 列出目錄內容 列出檔案資訊 預設是當前目錄 以字母順序排序 如果使用沒有任何 cftuvsux 或 sort選項 grep 格式 grep option pattern filename 注意 pattern如果是表示式或者超過兩個單詞的,需要用引號引用.可以是單引號也可雙引號,區別是單引號無...

linux主要命令

list 執行許可權 所有使用者功能描述 顯示目錄檔案 語法 ls 選項 a 顯示所有檔案,包括隱藏檔案 l 詳細資訊顯示 mkdir 執行許可權 所有使用者 語法 mkdir p 目錄名 功能描述 建立新目錄 p 遞迴建立 pwd 執行許可權 所有使用者 語法 pwd 顯示當前目錄 rmdir 執...