shell指令碼0——”一切皆檔案“, 認識Shell
一、”一切皆檔案“與“管道”
1)管道:grep foo /path/to/file | grep -n -k 3 | more
實際過程與我們直觀認為的相反,最好通過實際過程理解。首先執行的是more,它的輸入被連線至一個管道。然後是sort,並且其輸出被連線至之前的那個管道。接著建立第二個管道,並且將sort的stdin連線至該管道。最後執行grep,將其stdout連線至與sort程式相連的那個管道。
當grep開始執行並輸出資料時,資料順著管道流向sort,sort處理後順著管道輸出到more,由more對管道輸出的全部內容進行分頁輸出。在由錯誤的情況下,這樣的過程會有不同的行為,more有錯誤,不會有任何事情發生,若grep鍵入錯誤,則more和sort會執行到錯誤被檢測出來。
2)管道的存在使得系統中的工具在編寫時假設它們處理的是文字流。”一切皆檔案“的概念與4種可執行的檔案操作(opne close read write)意味著Unix實際上使用了一種簡潔明瞭的系統設計方法。shell指令碼本身也是文字形式的系統實用程式。
二、開始一個shell指令碼
1)使用者登入的shell程式就是一個設立了程式直譯器,解釋執行shell指令碼;
通常在shell程式的首行指明shell程式採用哪個直譯器來執行它,格式為:#!/bin/bash,若沒有指明,用當前登陸shell來解釋執行,echo $SHELL可以檢視登陸的shell程式
2)執行:chmod +x 然後./執行 或者bash *.sh
3)以#開頭的行為註釋行
三、認識shell
LINUX是一個作業系統,它在CPU、磁碟驅動器、記憶體、監視器、鍵盤和其他硬體之間起調節作用。(非圖形介面時)當你看那UNIX螢幕時,實際上並沒有見到UNIX,只是見到由該作業系統執行的一個程式,它對鍵盤進行監控並作出相應,這個程式就被稱作註冊Shell(Login Shell)。
bash 啟動新的shell命令
exit 退出
echo $SHLVL
注1:
開頭的空格被忽略,縮排只是為了好看
\ 字元讓shell忽略換行符, 用於換行接續命令
# 註釋,可用在行首、行尾
#!/bin/bash 指令碼開頭
Shell程式設計:
差不多總是用來使任務自動化。Shell與使用者互動的工具非常少,至多可以問使用者一個問題和接收一個文字答覆,需要使用者互動時應使用效能更全面的語言
Shell特性:
別名alias;
命令替換:倒引號(`)把一個命令的輸出合併到另一個命令中;
後臺處理:(不需要提供輸入) find / -name “hello” -print > find.log & ;
變數;
管道(pipe):把一個命令的輸出連線到另一個命令的輸入。
重定向(redirection):可以改變程式的輸入來源和程式的輸出地點
模式匹配: ls *.py
特殊字元:
“ 使shell無法認出大多數特殊字元(除去$ `)
‘ 使shell無法認出所有特殊字元
`命令替換
\跟在反斜槓之後的字元就失去其特殊含義
;使一行上放多個命令
&後臺
()建立組命令
{}用來建立Shell過程的命令塊
|管道
<>&重定向
*?[]!用於檔名模式匹配
$引用變數名開頭
#註釋
空格 製表符 換行符 通稱空白符用於分隔Shell命令中的詞
相關文章
- Shell指令碼 | 抓取log檔案指令碼
- 初識shell指令碼指令碼
- [ Shell ] 通過 Shell 指令碼匯出 GDSII/OASIS 檔案指令碼
- 使用shell指令碼巧妙統計檔案指令碼
- 如何用Shell指令碼生成XML檔案指令碼XML
- Shell指令碼知識簡述指令碼
- 共享一個iptables的shell指令碼檔案指令碼
- Shell指令碼逐行處理文字檔案技巧指令碼
- shell 備份檔案指令碼+自動清理指令碼
- 【shell 】求兩個檔案相加的指令碼指令碼
- [Shell] Shell 生成 HTML指令碼HTML指令碼
- shell指令碼指令碼
- shell指令碼的基礎知識指令碼
- 初識shell指令碼程式設計指令碼程式設計
- 如何在Shell指令碼中逐行讀取檔案指令碼
- 使用shell指令碼build並建立ipa檔案(轉)指令碼UI
- 【shell 指令碼】檢視*.gz 檔案的內容指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- Linux/Unix shell 指令碼清除歸檔日誌檔案Linux指令碼
- 如何讓shell指令碼變成可執行檔案指令碼
- 用shell指令碼合併多個檔案內容指令碼
- 建立定期清理listener,trace檔案的shell指令碼指令碼
- shell指令碼(二)指令碼
- shell指令碼心得指令碼
- shell指令碼案例指令碼
- shell指令碼中不識別source命令指令碼
- shell入門--第一個shell指令碼指令碼
- 如何在shell指令碼里使用sftp批次傳送檔案指令碼FTP
- shell指令碼自動清理超過指定大小的檔案指令碼
- shell指令碼——比較兩個檔案大小、許可權指令碼
- 將DOS批處理檔案轉換為Shell指令碼指令碼
- [譯] 在 UNIX 中,一切皆檔案
- 如何加密shell指令碼加密指令碼
- 執行shell指令碼指令碼
- Shell 指令碼語句指令碼
- shell 指令碼加密 | shc指令碼加密
- Linux Shell指令碼Linux指令碼
- shell指令碼例項指令碼