shell是什嗎?shell是使用者和核心互動的介面,可以把它當做命令直譯器,當使用者輸入命令後,shell就會將他進行解釋然後送到核心中執行,
知道什麼事shell後,那麼我來瞭解一下linux中使用的是哪一個shell,難道linux的shell不止一個?當然,我們可以通過查看/etc/shells檔案來查看當前系統有哪些shell
各個shell之間大同小異,只需掌握其中一個就Ok了,在大多數linux系統中,預設的shell就是bash,
那就開始瞭解一下bash:
1、bash shell的內建命令:
type 通過type我們可以知道一個命令式內建命令還是外部命令。
type [-t] 命令
-t :加入參數t時,結果為以下意思:
file:表示為外部命令
alias:表示該命令式別名所設定的名稱
builtin:表示該命令為bash內建命令
2、bash中的變數的顯示與設定
echo,unset
你可以使用echo這個命令來顯示變數,但是變數在顯示的時候,前面必須加上“$”才行,獲得PATH的內容
echo $PATH 或者echo ${PATH}
那麼如何設定一個變數呢:
下面是一些規則:
a 變數和變數內容是用一個=號串連的
b 等號兩邊是不能出現空格的,如果出現空格需要用單引號或者雙引號
c 雙引號內的特殊字元如$是可以保持原來的內容的,但是單引號不能
d 在一串命令中如果還需要其他命令提供資訊,則可以使用反單引號`命令` 或者$(命令)
e 取消一個變數使用unset
3、查看環境變數
使用env 或者export命令
查看系統中所有的 變數
set
4、從鍵盤讀取變數
這個知識點在shell script中用的很多
5、聲明變數的類型
declare [-iaxr] var
a:數群組類型
i 整形
x 全域變數
r 唯讀類型
看到上面的區別了嗎?
下面來學習非常實用的技術
變數內容的刪除,替換
刪除變數的內容,主要記住四個符號:
#:從變數內容的左邊開始,與你要刪除的內容匹配的最短字元
##:從變數內容的左邊開始,與你要刪除的內容的匹配的最長字元
%:從變數內容的右邊開始,與你要刪除的內容匹配的最短字元
%%:從變數內容的左邊開始,與你要刪除的內容匹配的最長字元
其中的*代表0個或者多個任一字元
有關替換的文法:
${var /old/new}//替換最前面一個
${var //old/new}// 替換所有
bash登入資訊的修改:
首先用cat /etc/issue
如果你想讓所有的使用者登入後取得一些資訊,例如一些通告,該如何做呢?
修改/etc/motd檔案
bash 的環境設定檔
下面給大家介紹兩個概念:
login shell 和non-login shell
login shell:取得bash時需要完整的登入流程,就叫做login shell,舉例來說從tty1-tty6登入,需要輸入使用者帳號和密碼,此時取得的bash成為login-shell
non-login shell:取得bash的時候沒有登入
對於login shell 在啟動的時候回讀取兩個設定檔
/etc/profile: 這是系統的整體設定,你最好不要改動
~/.bash_profile 或者~/.bash_login或者~/.profile 屬於使用者個人設定,你要改自己的資料就寫入這裡
對於下面的三個檔案 login shell設定只會讀取上面三個鐘的一個,而讀取的順序一朝上面讀取
由於/etc/profile 與~/.bash_profile都是在login shell的時候讀取的,所以你要將自己的喜好設定寫入上述檔案後,通常都是要登出登入的,那麼能不能直接讀取設定檔而不登出呢,是可以的,使用source這個命令
source 設定檔
source ~/.bash_profile
或則 . ~/.bash_profile
資料流重新導向
資料流重新導向從字面意思來理解就是將資料傳到其他地方,在預設的情況下,我們執行一個命令,不管其對與錯,結果都是現實在控制台上,那麼現在我們想儲存到檔案中,該如何做,請看下面:
範例1
將執行結果放置到result.txt
將執行的過程中的錯誤資訊儲存到err.log中
對於上面的案例簡要解釋:
標準輸入 代碼為0 使用<或者<<
標準輸出 代碼為1 使用>或者>>
標準錯誤輸出: 代碼為2 使用2>或者2>>
>表示清空後寫入 >>表示累加
範例2 將錯誤資訊丟棄,只顯示正確資訊
find /home -name .bashrc 2>/dev/null
範例3 將正確資訊和錯誤資訊分別儲存到不同的資訊中去
find /home -name .bashrc >list_right 2>list_error
標準輸入
用簡單的方式描述就是說將原來需要由鍵盤輸入的資料改由檔案的內容代替
範例1 利用cat 命令建立一個檔案
cat >catfile
testing
cat file test
按Ctrl+d結束
然後利用cat catfile查看內容
範例2
管道命令
管道命令就是"|",所謂管道就是將一個命令的結果作為另一個命令的輸入
範例1