標籤:style blog http 使用 strong 檔案
認識和學習shell
Linux使用的shell版本名為“Bourne Again SHell(簡稱bash)”,這個shell是Bourne SHell的增強版本,也是基於GNU的架構發展來的
bash shell的功能
1.命令記憶功能:他能夠記憶使用過的命令,命令記錄在主資料夾內的.bash_history中。注意:~/.bash_history記錄的是前一次登陸以前所執行的命令,而這一次登陸所執行的命令則暫存在臨時記憶體中。當登出系統後,這些命令才回被記錄到.bash_history中。
2.命令與檔案補全功能([Tab]鍵的好處)
3.命令別名設定功能(alias)
設定: alias lm=’ls -al’
4.作業控制,前台,後台控制
5.指令碼程式
6.萬用字元:*
bash shell 的內建命令:type
在我們的bash中已經有許多內建的命令的。例如 cd ,umask等等
那麼,我們如何知道這個命令是來自於外部命令還是內部命令呢?這時,我們可以通過type這個命令來查看即可。
type也可以用來作為類似which命令的用途(which:尋找可執行檔)
shell的變數功能
變數的顯示與設定:echo,unset
變數的顯示:echo eg:echo $variable
echo $PATH
變數的設定:只要用“=”將變數和其內容串連就好了
eg: myname=Droidxin
對於變數的設定,我們必須掌握一些變數的設定規則。
單引號和雙引號的區別:雙引號仍然可以保有變數的內容,特殊字元 仍保持原本的特性,但單引號僅能是一般符號,而不會有特殊字元。也就是說,使用了單引號,不在是變數的內容,而僅僅是一般字元了。
反單引號的作用:在一串命令中,反單引號內的命令將會先被執行,而其執行出來的結果將作為外部的輸入資訊
eg: ls -l `locate wode`
環境變數的功能
首先,我們得知道有多少預設的環境變數?可以通過 env和export兩個命令來查閱。
接下來我們看一下一些常見的環境變數
PS1,命令提示字元,一個挺有趣的變數
$(關於本shell的PID),這個代表目前這個shell的線程代號,即所謂的PID(Process ID)
?(關於上個執行命令的回傳碼)一般來說,如果命令執行成功,則會回傳一個0值。
變數的操作命令
變數鍵盤讀取,數組與聲明:read,array,declare
read:讀取來自鍵盤輸入的變數
declare/typeset:聲明變數的類型,變數的聲明是非常有用的,變數的預設設定為字串類型。有時候你需要將變數進行運算的話,那麼需要將變數的類型設定為整型。
陣列變數類型。
ulimit:與檔案系統及程式的限制關係,可以限制使用者的資源,包括開啟的檔案數量,可以使用的CPU的時間,使用的記憶體總量等。
變數內容的刪除,替代和替換,詳情可參考書本P313
命令別名與記錄:alias,unalias,history
Bash Shell的作業環境
1.現在我們知道系統裡面其實有不少的ls命令,或者是包括內建的echo命令,那麼想一想,如果一個命令被執行,到底是哪一個ls被拿來執行呢?基本上,命令啟動並執行順序是這樣 的:
2.bash的登陸與歡迎資訊:/etc/issue,/etc/motd
可以自訂一些使用者登陸顯示資訊,例如可以顯示一些提示話語之類的資訊,對於多使用者管理十分的有用。
3.bash的環境設定檔
bash在啟動的時候回直接讀取bash的環境設定檔,已規劃好bash的作業環境。要注意,我們設定的命令別名,自訂的變數在你登出bash後會失效,所以,如果你想要儲存你的設定,那麼,就需要把這些設定寫入設定檔才行。
講一下login shell 和non-login shell
login shell:取得bash時需要完整的登陸流程。
non-login shell:取得bash介面不需要重複登陸的舉動,例如 ,從X的圖形介面啟動終端機,不需要再次登陸。
login shell 只會讀取/etc/profile和~/.bash_profile 或~/.bash_login或~/.profile
/etc/profile:系統整體的設定,最好不要改
~/.bash_profile 或~/.bash_login或~/.profile:使用者個人設定,我們需要修改的資料,就是這裡
此外,關於bash環境設定檔和如何配置不在多提了
萬用字元和特殊符號
萬用字元,讓我們利用bash操作更加的簡便快捷
bash環境中的特殊符號
資料流重新導向
什麼是資料流重新導向呢?一般來說,如果你要執行一個命令,通常需要這樣的過程
在執行完一條命令之後,都會有回傳的資訊,如果正確執行了命令,那麼就會standard output標準輸出,輸出命令正確執行的資訊,否則就會standard error output標準錯誤輸出,輸出命令錯誤執行的資訊
而資料流重新導向,就是將這些資訊分別傳送到其他的檔案或裝置中去。
資料流重新導向十分的重要,同時命令操作也多樣化,那麼可以參考書本的P329
何時使用資料流重新導向
既然我們知道了資料流的重新導向,那麼什麼時候要使用資料流重新導向呢?資料流重新導向一般應用於:
1、螢幕輸出的資訊很重要,而且我們需要將它儲存下來;
2、後台執行中的程式,不希望它幹擾螢幕正常的輸出結果;
3、一些系統的例行命令的執行結果,希望它能夠儲存下來;
4、一些執行命令的可能已知出錯資訊時,想以“2>/dev/null”將它屏蔽掉;
5、錯誤資訊和正確資訊需要分別輸出;
命令執行的判斷依據
判斷依據: ; && ||
; 不考慮命令相關性的連續命令執行
管道命令
管道命令“|”僅能夠處理經由前面一個命令傳來的正確資訊,也就是standard output 的資訊,對於standard error 並沒有直接處理能力
選取命令:cut,grep
cut:切去資訊的一部分
grep:分析一行資訊,若有需要,則拿出來
排序命令:sort,wc,uniq
tee:雙向重新導向
字元轉換命令:tr,col,join,paste,expand
split:切割命令,可以將大檔案切割
xargs:參數代換
重點回顧