shell 學習記錄(1)

2021-07-10 09:13:26 字數 1320 閱讀 5559

unix系統有乙個非常強大的特性:因為所有資源都是檔案,你可以將所有資源引用和將其從乙個位置重定向到另乙個位置。重定向的操作符《表示標準輸 入(stdin),>表示標準輸出(stdout)。所以,如果你需要乙個命令從鍵盤中讀取資訊,你可以進行如下操作:

$ somecommand <

但當要你的命令從乙個檔案中讀取內容你要怎麼做呢?你只要重定向這個檔案到它的標準輸入(stdin),如下:

$ somecommand < /your/file.txt

如果你要你的命令執行結果輸出到乙個檔案,你可以使用》操作符。例如我們已經知道如何將乙個目錄中的檔案列出,你可以把使用如下命令將結果傳送到乙個檔案:

csaba@csaba-pc ~/tmp/nettuts/seconddir $ ls -al > ./thirdfile

操作符》重定向輸出到乙個檔案並且覆蓋該檔案;所以我們不能使用它。不過,我們可以使用》(兩個》)來新增新資料到乙個已經存在的檔案。

這個命令使用你能讀出檔案的內容。只要簡單地提供乙個檔名作為引數,之後它會輸出這個檔案的內容到標準輸出(stdout)。

csaba@csaba-pc ~/tmp/nettuts $ cat ./seconddir/thirdfile

./seconddir/afile

./seconddir/anotherfile

./seconddir/thirdfile

find: `./thirddir': permission denied

grep查詢乙個模式並輸出相匹配的行。你可以通過第三個引數指定要查詢的檔案:

csaba@csaba-pc ~/tmp/nettuts $ grep "anotherfile" ./seconddir/thirdfile ./seconddir/anotherfile

加入–color選項,可以在結果行高亮匹配的內容。

管道使用 | 這個字元表示; 它接受乙個命令的輸出並將其傳給|後的命令. 這聽起來好像挺簡單的.但確是複雜的, 那乙個符號| 實現起來卻用了幾萬行**, 你可以這樣用:

csaba@csaba-pc ~/tmp/nettuts $ cat ./seconddir/thirdfile | grep "another" ./seconddir/anotherfile

這實際上執行cat命令, 而不是輸出結果傳送到標準輸出, 管道將標準輸出作為標準輸入傳給grep命令.grep命令讀取輸入的資料, 並搜尋字條串」another」, 結果和我們先前的例子一樣。

學習位址

shell指令碼學習記錄(1)

增加變數的內容 path path home bin 若要把區域性變數變為全域性變數export 取消變數的方法unset unset 變數 set檢視環境變數和自定義變數 ps1提示字元的設定 本身就是乙個變數代表這個shell的程序號 也是乙個變數代表上乙個執行的命令所返回的值,成功返回0,不成...

shell 學習記錄

1 以兩個破折號 來表示選項結尾的用法,源自system v。自此之後命令列上看起來像選項的任何專案,都將 一視同仁的當成引數處置。上面這個句話是什麼鬼意思?2 shell是別的三種命令 1 內建命令 比如cd echo test 2 shell函式 3 外部命令 shell變數 1 變數名字 字元...

shell學習記錄

1.shell 副檔名 sh 約定標記,告訴系統指令碼需要的直譯器,即哪一種shell 執行shell檔案的三種方法 test.sh bin sh test.sh bin bash test.sh注意 shell變數等號兩邊不能有空格,使用變數的時候加 符號字串擷取 與 刪除左邊字元 保留右邊字元 ...