共計(jì) 3151 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 linux 中 Bash 使用技巧有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
BASH 功能介紹
1. 命令歷史
Bash 擁有自動(dòng)記錄命令歷史的功能,用戶所執(zhí)行的命令會(huì)在注銷時(shí)自動(dòng)記錄到自己家目錄下的.bash_history 這樣一個(gè)隱藏文件中。查看這些命令歷史記錄的方法有很多,可以通過直接打開文件來查看,也可以通過鍵盤的上下鍵來上翻或下翻歷史記錄,還可以通過 history 命令查看歷史記錄,所有的命令歷史都有記錄編號(hào)。命令歷史能夠記錄的信息數(shù)量由 HISTSIZE 變量所決定,CentOS 6.3 默認(rèn)通過 /etc/profile 文件定義了 HISTSIZE=1000,也就是最多可以記錄最近所使用的 1000 條命令,當(dāng)有第 1001 條命令執(zhí)行時(shí) *** 條命令會(huì)被覆蓋,執(zhí)行 history - c 命令可以清空所有的歷史記錄。
記錄命令歷史的除了可以查看歷史記錄外,還可以在需要時(shí)直接調(diào)用歷史記錄再次執(zhí)行該命令:
1). 上下鍵翻閱歷史命令,找到合適的命令后直接回車即可執(zhí)行。
2). 輸入!string 調(diào)用命令歷史(string 為關(guān)鍵字),如!vim 將調(diào)用 *** 一次執(zhí)行的以 vim 開頭的命令。或者通過!n 來準(zhǔn)確定位歷史記錄,如!242 將直接調(diào)用命令歷史的第 242 條記錄并執(zhí)行。
3). 通過 Ctrl+ r 快捷鍵打開搜索功能,接著輸入關(guān)鍵字即可在命令歷史中搜索相關(guān)命令,回車完成執(zhí)行操作。如果沒有搜索到適合的命令按 ESC 鍵退出搜索。
2. 命令別名
在 CentOS 6.3 系統(tǒng)中我們可以直接使用 ll 命令來顯示文件的詳細(xì)信息,其實(shí)系統(tǒng)中并沒有 ll 這樣一個(gè)命令,它僅是被提前定義好的一個(gè)別名而已,別名的好處是可以把本來很長(zhǎng)的指令簡(jiǎn)化縮寫,為常用且復(fù)雜的命令及選項(xiàng)創(chuàng)建別名可以大大提高日常工作效率。
3. 管道與重定向
Bash 的標(biāo)準(zhǔn)輸入設(shè)備是鍵盤、鼠標(biāo)、手寫板等設(shè)備,標(biāo)準(zhǔn)輸出為顯示器,一般我們通過鍵盤輸入命令并執(zhí)行,系統(tǒng)將返回信息顯示在屏幕上,默認(rèn)不管是正確的還是錯(cuò)誤的信息都將輸出至顯示器。標(biāo)準(zhǔn)輸入的文件描述符為 0,標(biāo)準(zhǔn)輸出的文件描述符為 1,錯(cuò)誤輸出的文件描述符為 2。但有時(shí)我們需要改變這樣的標(biāo)準(zhǔn)輸入與輸出方式,Linux 中我們可以使用重定向符 (、、、、|) 重新定義輸入與輸出。
管道使得我們可以將多條命令連接在一起使用,它的作用是將一個(gè)命令的標(biāo)準(zhǔn)輸出重定向給下一個(gè)命令并作為該命令的標(biāo)準(zhǔn)輸入。例如,使用 ifconfig eth0 | grep lsquo;inet addr rsquo; 命令過濾包含 IP 地址的行,ifconfig 本身會(huì)輸出大量網(wǎng)絡(luò)接口的信息,由于這里使用了管道符號(hào) (|) 所以 ifconfig 命令的所有輸出都將作為 grep 命令的輸入內(nèi)容,最終實(shí)現(xiàn)過濾包含 IP 地址的行。
對(duì)于標(biāo)準(zhǔn)的輸出信息是輸出至顯示器,而有時(shí)你可能并不需要這些輸出信息,又或者是暫時(shí)不需要在屏幕上看到這些信息; 另外對(duì)于輸入一般是通過鍵盤輸入,而有時(shí)你或許希望可以從文件中讀取輸入信息。輸出重定向可以使用 或 符號(hào),使用 可以將輸出導(dǎo)入至文件,如果文件不存在則創(chuàng)建該文件,如果文件已經(jīng)存在則會(huì)覆蓋該文件的內(nèi)容; 而使用 可以將輸出追加至文件; 另外,對(duì)應(yīng)錯(cuò)誤信息的重定向需要使用 2 或 2 符號(hào)實(shí)現(xiàn)。輸入重定向可以使用 符號(hào),它可以可以幫助我們從文件中提取輸入信息。
以下通過幾個(gè)簡(jiǎn)單的實(shí)例演示重定向的使用方法:
4. 快捷鍵
Bash 準(zhǔn)備了大量的快捷鍵為用戶使用,熟練掌握這些快捷鍵的全部或部分會(huì)使你在工作中受益頗多,開始的時(shí)候你可能需要花費(fèi)大量的時(shí)間來記憶這些快捷鍵,但一旦你記住了他們,你的工作效率會(huì)直線上升。下面列出了常用的快捷鍵及其功能描述。
BASH 使用技巧
1. 重定向技巧
1). 如果你編寫了一個(gè)腳本實(shí)現(xiàn)自動(dòng)修改系統(tǒng)帳號(hào)的密碼,那么默認(rèn)當(dāng)密碼修改成功后系統(tǒng)會(huì)提示 successfully 這樣的提示信息,如果需要修改 20 個(gè)賬戶密碼則顯示 20 條這樣的信息。像這樣的案例,大量的成功提示信息并不是我們關(guān)注的重點(diǎn),管理員更多的是關(guān)心錯(cuò)誤提示。所以這時(shí)可以考慮將標(biāo)準(zhǔn)正確輸出屏蔽,Linux 中提供了一個(gè)特殊設(shè)備 /dev/null,它很像太陽(yáng)黑洞,任何東西往里寫入都將永遠(yuǎn)消失。對(duì)大量無(wú)意義的輸出信息可以通過管道導(dǎo)入至 /dev/null 設(shè)備。
2). 標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出分離重定向
很多時(shí)候自動(dòng)運(yùn)行的腳本編寫完成后,是要在深夜服務(wù)器負(fù)載 *** 時(shí)以無(wú)人職守方式運(yùn)行的,那么當(dāng)管理員去檢查腳本運(yùn)行情況時(shí)會(huì)希望看到哪些命令執(zhí)行成功了,哪些命令出現(xiàn)了問題,并且為了方便管理需要將正確輸出與錯(cuò)誤輸出分寫保存在兩個(gè)不同的記錄文件中,那么分離重定向就顯得尤為重要了。下面我們檢查系統(tǒng)中是否存在 tom 用戶,如果存在則將 tom 相關(guān)信息記錄至 user 文件中,否則記錄至 error 文件中:
2. 命令序列
在 Linux 中我們可以使用控制字符 (;、、||、) 來控制命令的執(zhí)行方式。其中 [] 控制符使得命令開啟一個(gè)子 Shelll 并在后臺(tái)執(zhí)行; 使用 [;] 控制字符可以把多個(gè)命令組合,但多個(gè)命令之間沒有任何邏輯上的關(guān)系,僅按循序執(zhí)行; 使用 [] 控制字符也可以將多個(gè)命令組合,但僅當(dāng)前一個(gè)命令執(zhí)行成功后才會(huì)執(zhí)行 [] 控制符后面的命令;[||]控制字符的作用與 [] 剛好相反,僅當(dāng)前一個(gè)命令執(zhí)行失敗才會(huì)執(zhí)行 [||] 控制符后面的命令。下面通過實(shí)例演示。
1). 火狐瀏覽器通過前端啟動(dòng),使得當(dāng)前 Shell 將暫時(shí)無(wú)法使用:
[root@centos6 ~]# firefox
2). 后臺(tái)運(yùn)行瀏覽器,不影響當(dāng)前 Shell 的使用:
[root@centos6 ~]# firefox
3). 所有命令按順序執(zhí)行(不管前面的命令是否成功,后面的命令一定正常執(zhí)行):
[root@centos6 ~]# ls /tmp ; ls /root ; ls /home
4). 如果某個(gè)文件存在則顯示該文件內(nèi)容,否則報(bào)錯(cuò)(僅當(dāng) ls 執(zhí)行成功才會(huì)執(zhí)行 cat):
[root@centos6 ~]# ls test.txt cat test.txt
5). 如果有 gedit 編輯器則打開該程序,否則打開 vim 編輯器:
[root@centos6 ~]# gedit || vim
6). 如果 id tom 執(zhí)行成功則說明用戶存在屏幕將顯示 Hi,tom,否則顯示 No such user:
[root@centos6 ~]# id tom /dev/null echo “Hi,tom” || echo “No such user”
實(shí)例 5 首先通過 重定向符將 id 命令的所有輸出屏蔽,讓后使用 與 || 來判斷 id 命令是否執(zhí)行成功,成功就顯示問候語(yǔ)否則顯示沒有該用戶。
3. 作業(yè)控制
Bash 環(huán)境中通過命令開啟進(jìn)程的時(shí)候使用 符可以使得該進(jìn)程進(jìn)入后臺(tái)執(zhí)行,或者一個(gè)命令執(zhí)行后使用 Ctrl+ z 快捷鍵可以將該進(jìn)程放入后臺(tái)并暫停執(zhí)行,以后隨時(shí)使用 jobs 命令可以查看這些后臺(tái)進(jìn)程,并且會(huì)為每個(gè)這樣的進(jìn)程分配一個(gè)編號(hào),通過 fg 編號(hào) 的形式可以將這些后臺(tái)進(jìn)程再次調(diào)回前臺(tái)執(zhí)行。
[root@centos6 ~]# firefox
[root@centos6 ~]# jobs [1]+ Running firefox [root@centos6 ~]# fg 1
4. 花括號(hào) {} 的使用
通過括號(hào)擴(kuò)展可以生產(chǎn)命令行或腳本需要的字串,括號(hào)中可以包含連續(xù)的序列或使用逗號(hào)分割的多個(gè)項(xiàng)目,連續(xù)的序列包括一個(gè)起點(diǎn)與一個(gè)終點(diǎn)并使用.. 分割。接下來看看具體的語(yǔ)法格式案例:
以上是“l(fā)inux 中 Bash 使用技巧有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!