Linux學習之Shell

來源:互聯網
上載者:User

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

 

相關文章

聯繫我們

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