Linux學習總結(十七) shell 基礎知識

2022-11-24 21:16:54 字數 2261 閱讀 2253

1 * 匹配任意個任意字元

2 ?匹配一個任意字元

3 # 註釋符號,符號後的語句不被執行

4 \脫意字元,後面跟帶含義字元時,照原字元輸出

5 匹配包含在之中的任意一個字元:

例如[bc]ook 匹配book 或cook

[0-9] 匹配任意一個數字

6 匹配任意一個字元,同效果相同,格式不同

7 > 輸出重定向 

例如 cat 1.txt > 2.txt,把1.txt 的內容讀出來替換2.txt的內容

8 >>追加重定向

cat 1.txt >> 2.txt 把1.txt的內容讀出來追加到2.txt的尾部

2>和2>> 錯誤資訊輸出, 如果某條命令執行不成功,則輸出報錯資訊到指定檔案。 例如 假設沒沒有a.txt 這個檔案 cat a.txt 2> error.log 

備註:這個2算一個真值判斷,當命令執行失敗時,判斷為假,用2表示

那麼執行成功,結果為真,就是1,通常我們省略了這個1

&>和&>>正確錯誤都輸出,當然是輸出到同一個檔案了,如果要分開,則可以

cat 1.txt a.txt > 2.txt 2> error.log

< 輸入重定向 ,用的不多, 例如 wc -l < 1.txt 統計出1.txt的行數

9 | 管道符,我們一直在用,管道左邊命令的輸出作為其右邊命令的輸入

例如, cat /etc/passwd |head -3

把 cat 查出來的內容交給head 重新顯示

cat /etc/passwd |grep 'root'

把cat 檢視的內容交給grep過濾,得到目標結果

1 ctrl z 暫停一個程序

2 bg 把它丟到後臺執行

3 fg 恢復到前臺並執行

4 jobs 檢視暫停或者在後臺執行的任務

命令後跟& 可以直接把任務丟到後臺執行

如果暫停了多個任務,jobs檢視到每個任務對應的編號

bg ,fg 後面跟任務編號單個控制某一個任務

5 ctrl c 結束一個任務

如果我們對程式設計稍微有點了解,變數這個概念並不陌生,我們通常都把變數理解為容器,用來存放資料。那麼shell中的變數當然也是這個意思。之前我們瞭解了path。我們可以用env檢視系統預設的全部系統變數,還可以用set命令檢視我們自定義的變數。 

linux 下的變數格式為:$變數名

變數的命名規則:字母,數字,下劃線,不以數字開頭。

下面重點看下變數的賦值,看下單引號和雙引號的區別:

我們簡單舉六個例子: 

1 a='a$bc' echo $a 結果 a$bc

2.a=1;b=2 echo $a$b 結果 12

3.a='a$bc';b=2 echo $a$b 結果 a$bc2

4.c="a$bc" echo $c 結果 a

5.c="a$b"c echo $c 結果 a2c

6.c='a$b'c echo $c 結果 a$bc

其實要不了這麼多例子就能說明問題,那麼我們總結下,單引號會把裡面的內容按照原來的字元原樣輸出,不識別有意義的符號。雙引號會解讀出裡面的帶含義字元以及命令。例子4中,解讀為bc變數,因為該變數不存在,所以只輸出了a

我們直接 a=111這樣定義一個變數,只會在當前shell中生效,如果我們進入一個子shell,就找不到,那麼他是一個區域性變數。local variable

export a=111 這樣就定義一個全域性變數 global variable,子shell會繼承父shell 的該變數

1 系統層: 

/etc/profile 

該檔案預設了幾個重要的變數,例如path user logname mail inputrc hostname histsize umask 等

/etc/bashrc

該檔案主要預設umask 和ps1,ps1就是我們輸入命令時前面的那串字元

例如[[email protected]~] [使用者@主機名 當前目錄] ~指家目錄

2 使用者層:

.bash_profile 

該檔案定義了使用者的個人化路徑與環境變數的名稱。每個使用者都可以使用該檔案輸入專屬自己的shell資訊,當使用者登入時,該檔案僅執行一次

.bashrc

該檔案包含專屬自己的shell的bash資訊,當每次開啟心的shell時,該檔案會被讀取,可以將使用者自定義的別名及變數寫到這裡

.bash_history

用於記錄命令歷史

.bash_logout

退出shell時,會執行該檔案。可以將清理的工作放著這裡