認識和學習shell

來源:互聯網
上載者:User

標籤: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:參數代換

 

重點回顧

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.