Bash功能與提示

來源:互聯網
上載者:User

Bash功能與提示 一個完整電腦的體繫結構包括:硬體與軟體,而軟體又分為系統軟體與應用軟體,負責對硬體僅需管理與操作的是系統軟體的核心部分,使用者是無法與硬體或核心打交道的,使用者通過應用程式或部分系統軟體發出指令(可能是通過瀏覽器發送一封郵件),這些指令會被翻譯並傳給核心,核心在得知使用者的需求後調度硬體資源來完成操作(比如,使用網卡發送資料包)。  www.2cto.com  在Linux環境下,我們一般通過Shell來與核心交流,並最終實現我們想要使用電腦資源的目的。由於Linux的開放性特點,使得在Linux下對Shell的選擇也很多,CentOS 6.3系統中可以使用的Shell有/bin/sh、/bin/bash、/bin/tcsh、/bin/csh這幾種,/etc/shells檔案說明了當前系統有哪些可用的Shell。不同的Shell有不同的特點以及操作方式,我們這裡以CentOS預設使用的Shell為講解案例即Bash。 1.2    BASH功能介紹1.2.1  命令曆史Bash擁有自動記錄命令曆史的功能,使用者所執行的命令會在登出時自動記錄到自己家目錄下的.bash_history 這樣一個隱藏檔案中。查看這些命令記錄的方法有很多,可以通過直接開啟檔案來查看,也可以通過鍵盤的上下鍵來上翻或下翻記錄,還可以通過history命令查看記錄,所有的命令曆史都有記錄編號。 命令曆史能夠記錄的資訊數量由HISTSIZE變數所決定,CentOS 6.3預設通過/etc/profile檔案定義了HISTSIZE=1000,也就是最多可以記錄最近所使用的1000條命令,當有第1001條命令執行時第一條命令會被覆蓋,執行history -c命令可以清空所有的記錄。記錄命令曆史的除了可以查看記錄外,還可以在需要時直接調用記錄再次執行該命令:  www.2cto.com  1.上下鍵翻閱曆史命令,找到合適的命令後直接斷行符號即可執行。2. 輸入!string調用命令曆史(string為關鍵字),如!vim將調用最後一次執行的以vim開頭的命令。或者通過!n來準確定位記錄,如!242將直接調用命令曆史的第242條記錄並執行。3. 通過Ctrl+r快速鍵開啟搜尋功能,接著輸入關鍵字即可在命令曆史中搜尋相關命令,斷行符號完成執行操作。如果沒有搜尋到適合的命令按ESC鍵退出搜尋。1.2.2  命令別名在CentOS 6.3系統中我們可以直接使用ll命令來顯示檔案的詳細資料,其實系統中並沒有ll這樣一個命令,它僅是被提前定義好的一個別名而已,別名的好處是可以把本來很長的指令簡化縮寫,為常用且複雜的命令及選項建立別名可以大大提高日常工作效率。[root@centos6 ~]# alias                           #查看系統當前所有別名 alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' [root@centos6 ~]# alias h5=’head -5’              #定義新的別名 [root@centos6 ~]# unalias h5                      #取消別名定義 1.2.3  管道與重新導向Bash的標準輸入裝置是鍵盤、滑鼠、手寫板等裝置,標準輸出為顯示器,一般我們通過鍵盤輸入命令並執行,系統將返回資訊顯示在螢幕上,預設不管是正確的還是錯誤的資訊都將輸出至顯示器。標準輸入的檔案描述符為0,標準輸出的檔案描述符為1,錯誤輸出的檔案描述符為2。但有時我們需要改變這樣的標準輸入與輸出方式,Linux中我們可以使用重新導向符(<、>、<<、>>、|)重新定義輸入與輸出。  www.2cto.com  管道使得我們可以將多條命令串連在一起使用,它的作用是將一個命令的標準輸出重新導向給下一個命令並作為該命令的標準輸入。例如,使用ifconfig eth0 | grep ‘inet addr’命令過濾包含IP地址的行,ifconfig本身會輸出大量網路介面的資訊,由於這裡使用了管道符號(|)所以ifconfig命令的所有輸出都將作為grep命令的輸入內容,最終實現過濾包含IP地址的行。 對於標準的輸出資訊是輸出至顯示器,而有時你可能並不需要這些輸出資訊,又或者是暫時不需要在螢幕上看到這些資訊;另外對於輸入一般是通過鍵盤輸入,而有時你或許希望可以從檔案中讀取輸入資訊。輸出重新導向可以使用>或>>符號,使用>可以將輸出匯入至檔案,如果檔案不存在則建立該檔案,如果檔案已經存在則會覆蓋該檔案的內容;而使用>>可以將輸出追加至檔案;另外,對應錯誤資訊的重新導向需要使用2>或2>>符號實現。輸入重新導向可以使用<符號,它可以可以協助我們從檔案中提取輸入資訊。以下通過幾個簡單的執行個體示範重新導向的使用方法:[root@centos6 ~]# rpm -qa |grep gcc                    #查詢電腦中是否安裝了gcc軟體 [root@centos6 ~]# echo “pass” | passwd --stdin tom     #設定tom的密碼為pass [root@centos6 ~]# ls                                   #查看當前檔案清單 anaconda-ks.cfg    install.log        install.log.syslog [root@centos6 ~]# ls > list.txt                        #將輸出儲存至list.txt,螢幕無輸出 [root@centos6 ~]# hostname >> list.txt                 #將主機名稱追加至list.txt檔案末尾 [root@centos6 ~]# mail -s test xx@gmail.com < list.txt #發送郵件,郵件內容來自檔案 [root@centos6 ~]# ls -l abc install.log                #查看檔案詳細資料,abc並不存在 ls: cannot access abc: No such file or directory -rw-r—r--. 1 root root 9064 Dec 4 09:30 install.log [root@centos6 ~]# ls -l abc install.log 2> error.txt   #僅將錯誤重新導向,不影響正確輸出 -rw-r—r--. 1 root root 9064 Dec 4 09:30 install.log [root@centos6 ~]# ls -l abc install.log > all 2>&1     #標準輸出與錯誤輸出均匯入至all [root@centos6 ~]# ls -l abc install.log >> all 2>&1    #標準輸出與錯誤輸出均追加至all [root@centos6 ~]# ls -l abc install.log &> all         #標準輸出與錯誤輸出均匯入至all 1.2.4  快速鍵Bash準備了大量的快速鍵為使用者使用,熟練掌握這些快速鍵的全部或部分會使你在工作中受益頗多,開始的時候你可能需要花費大量的時間來記憶這些快速鍵,但一旦你記住了他們,你的工作效率會直線上升。下面列出了常用的快速鍵及其功能描述。  www.2cto.com  快速鍵      功能描述 Ctral+a    游標移動至行首 Ctrl+e     游標移動至行尾 Ctrl+f     游標右移一個字元 Ctrl+b     游標左移一個字元 Ctrl+l     清屏,等同於clear命令 Ctrl+u     刪除游標至行首的字元 Ctrl+k     刪除游標至行尾的字元 Ctrl+c     終止進程 Ctrl+z     掛起進程(可以通過jobs命令查看掛起的進程) Ctrl+w     刪除游標前一個單詞(以空格為分割符) Alt+d      刪除游標後一個單詞 1.3    BASH提示1.3.1  重新導向技巧1.如果你編寫了一個指令碼實現自動修改系統帳號的密碼,那麼預設當密碼修改成功後系統會提示successfully這樣的提示資訊,如果需要修改20個賬戶密碼則顯示20條這樣的資訊。像這樣的案例,大量的成功提示資訊並不是我們關注的重點,管理員更多的是關心錯誤提示。所以這時可以考慮將標準正確輸出屏蔽,Linux中提供了一個特殊裝置/dev/null,它很像太陽黑洞,任何東西往裡寫入都將永遠消失。對大量無意義的輸出資訊可以通過管道匯入至/dev/null裝置。[root@centos6 ~]# echo "pass" | passwd --stdin root >/dev/null 2.標準輸出與錯誤輸出分離重新導向很多時候自動啟動並執行指令碼編寫完成後,是要在深夜伺服器負載最低時以無人職守方式啟動並執行,那麼當管理員去檢查指令碼運行情況時會希望看到哪些命令執行成功了,哪些命令出現了問題,並且為了方便管理需要將正確輸出與錯誤輸出分寫儲存在兩個不同的記錄檔案中,那麼分離重新導向就顯得尤為重要了。下面我們檢查系統中是否存在tom使用者,如果存在則將tom相關資訊記錄至user檔案中,否則記錄至error檔案中:[root@centos6 ~]# id tom >> user 2>> error 2.1.1  命令序列在Linux中我們可以使用控制字元(;、&&、||、&)來控制命令的執行方式。其中[&]控制符使得命令開啟一個子Shelll並在後台執行;使用[;]控制字元可以把多個命令組合,但多個命令之間沒有任何邏輯上的關係,僅按循序執行;使用[&&]控制字元也可以將多個命令組合,但僅當前一個命令執行成功後才會執行[&&]控制符後面的命令;[||]控制字元的作用與[&&]剛好相反,僅當前一個命令執行失敗才會執行[||]控制符後面的命令。下面通過執行個體示範。1.Firefox瀏覽器通過前端啟動,使得當前Shell將暫時無法使用:[root@centos6 ~]# firefox2.後台運行瀏覽器,不影響當前Shell的使用:[root@centos6 ~]# firefox &3.所有命令按順序執行(不管前面的命令是否成功,後面的命令一定正常執行):[root@centos6 ~]# ls /tmp ; ls /root ; ls /home4.如果某個檔案存在則顯示該檔案內容,否則報錯(僅當ls執行成功才會執行cat):[root@centos6 ~]# ls test.txt && cat test.txt5.如果有gedit編輯器則開啟該程式,否則開啟vim編輯器:[root@centos6 ~]# gedit || vim6.如果id tom執行成功則說明使用者存在螢幕將顯示Hi,tom,否則顯示No such user:[root@centos6 ~]# id tom &>/dev/null && echo “Hi,tom” || echo “No such user”執行個體5首先通過&>重新導向符將id命令的所有輸出屏蔽,讓後使用&&與||來判斷id命令是否執行成功,成功就顯示問候語否則顯示沒有該使用者。2.1.2 作業控制Bash環境中通過命令開啟進程的時候使用&符可以使得該進程進入後台執行,或者一個命令執行後使用Ctrl+z快速鍵可以將該進程放入後台並暫停執行,以後隨時使用jobs命令可以查看這些後台進程,並且會為每個這樣的進程分配一個編號,通過fg <編號>的形式可以將這些後台進程再次調回前台執行。[root@centos6 ~]# firefox &[root@centos6 ~]# jobs[1]+  Running                 firefox &[root@centos6 ~]# fg 12.1.3 花括弧{}的使用  www.2cto.com  通過括弧擴充可以生產命令列或指令碼需要的字串,括弧中可以包含連續的序列或使用逗號分割的多重專案,連續的序列包括一個起點與一個終點並使用..分割。接下來看看具體的文法格式案例:[root@centos6 ~]# echo {a,b,c} a b c [root@centos6 ~]# echo user{1,5,8} user1 user5 user8 [root@centos6 ~]# echo {0..10} 0 1 2 3 4 5 6 7 8 9 10 [root@centos6 ~]# echo {0..10..2} 0 2 4 6 8 10 [root@centos6 ~]# echo a{2..-1} a2 a1 a0 a-1 [root@centos6 ~]# mkdir /tmp/{dir1,dir2,dir3} [root@centos6 ~]# ls -ld /tmp/dir{1,2,3} [root@centos6 ~]# chmod 777 /tmp/dir{1,2}  來源  http://manual.blog.51cto.com/3300438/1131800 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.