Linux Bash基礎特性

2022-07-11 14:18:11 字數 3383 閱讀 3092

1、 命令補全

bash執行命令:

內部命令:help命令

外部命令:bash根據path環境變數定義的路徑,自左而右在每個路徑搜尋以給定命令名命名的文

件,第一次找到即為要執行的命令;

直接補全:tab,使用者給定的字串只有一條惟一對應的命令;

以使用者給定的字串為開頭對應的命令不惟一,則再次tab會給出列表;

2、 命令歷史

history

環境變數:

histsize:命令歷史記錄的條數;

histfile:~/.bash_history;

histfilesize:命令歷史檔案記錄歷史的條數;

history -d offset 刪除指定命令歷史記錄

-c 清除歷史命令記錄

history #: 顯示歷史中最近的#條命令;

-a: 手動追加當前會話緩衝區的命令歷史至歷史檔案中;

呼叫歷史中的命令:

!#: 重複執行第#條指令;

!!: 執行最後一條歷史命令

!string 執行當前歷史命令中最近執行過的以string字元開始的歷史命令

!$:esc, .

alt+.

控制命令歷史的記錄方式:

環境變數:histcontrol

ignoredups:忽略重複的命令;連續且相同方為「重複」;

ignorespace:忽略所有以空白開頭的命令;

ignoreboth:ignoredups, ignorespace;

修改環境變數值的方式:export 變數名="值"

變數賦值:把賦值符號後面的資料儲存於變數名指向記憶體空間;

3、 路徑補全

把使用者給出的字串當做路徑開頭,並在其指定上級目錄下搜尋以指定的字串開頭的檔名;

如果惟一:則直接補全;

否則:再次tab,給出列表;

4、 命令列展開

~: 展開為使用者的主目錄

~username:展開為指定使用者的主目錄

{}:可承載乙個以逗號分隔的列表,並將其展開為多個路徑/tmp/ = /tmp/a, /tmp/b

/tmp//hi = /tmp/tom/hi, /tmp/jerry/hi

5 、命令別名(alias)

通過alias命令實現:

(1) alias

顯示當前shell程序所有可用的命令別名;

(2) alias name='value'

定義別名name,其相當於執行命令value;

注意:在命令列中定義的別名,僅對當前shell程序有效;如果想永久有效,要定義在配置檔案

中;僅對當前使用者:~/.bashrc

對所有使用者有效:/etc/bashrc

note: 編輯配置給出的新配置不會立即生效;

bash程序重新讀取配置檔案:

source /path/to/config_file

. /path/to/config_file

撤消別名:unalias

unalias [-a] name [name ...]

note: 如果別名同原命令的名稱,則如果要執行原命令,可使用"\command";

6 、命令的執行結果狀態

成功失敗

bash使用特殊變數$?儲存最近一條命令的執行狀態結果:

0:成功

1-255:失敗

程式執行有兩類結果:

程式的返回值;

程式的執行狀態結果;

7、 glob (globbing)

bash中用於實現檔名「通配」

萬用字元:*, ?,

(1) *

任意長度的任意字元

a*b:

aab, ab, a123b,

abc(2) ?

任意單個字元

a?b:

aabab, a12b, abc

(3) 匹配指定範圍內的任意單個字元

[0-9]

[a-z]:不區分字元大小寫

(4) [^]

匹配指定範圍外的任意單個字元

[^0-9]

專用字元集合:

[:digit:]:任意數字,相當於0-9

[:lower:]:任意小寫字母

[:upper:]: 任意大寫字母

[:alpha:]: 任意大小寫字母

[:alnum:]:任意數字或字母

[:space:]:空格

[:punct:]:標點符號

8、 bash的快捷鍵

ctrl+l: 清屏,相當於clear命令;

ctrl+a:跳轉至命令開始處;

ctrl+e:跳轉至命令結尾處;

ctrl+c:取消命令的執行;

ctrl+u: 刪除命令列首至游標所在處的所有內容;

ctrl+k: 刪除游標所在處至命令列尾部的所有內容;

9、 bash的的i/o重定向及管道

程式:指令+資料

讀入資料:input

輸出資料:output

開啟的檔案都有乙個fd: file descriptor (檔案描述符)

標準輸入:keyborad, 0

標準輸出:monitor, 1

標準錯誤輸出:monitor, 2

i/o重定向:改變標準位置

輸出重定向:command > new_pos, command >> new_pos

>:覆蓋重定向,目標檔案中的原有內容會被清除;

>>: 追加重定向,新內容會追加至目標檔案尾部;

# set -c: 禁止將內容覆蓋輸出至已有檔案中;

強制覆蓋:>|

# set +c:

2>: 覆蓋重定向錯誤輸出資料流;

2>>: 追加重定向錯誤輸出資料流;

標準輸出和錯誤輸出各自定向至不同位置:

command > /path/to/file.out 2> /path/to/error.out合併標準輸出和錯誤輸出為同乙個資料流進行重定向:

&>:覆蓋重定向

&>>:追加重定向

command > /path/to/file.out 2> &1

command >> /path/to/file.out 2>> &1

輸入重定向:<

tr命令:轉換或刪除字元

tr [option]... set1 [set2]

here documentation:<<

# cat << eof

# cat > /path/to/somefile << eof

管道:command1 | command2 | command3 |...

note:最後乙個命令會在當前shell程序的子shell程序中執行;

tee命令:

tee [option]... [file]...

Linux bash基礎特性

2.2 檔案相關 2.3 指令碼程式設計相關 2.4 其他 shell程式是獨特的程式,這個程式提供了乙個介面 就那黑乎乎的命令列介面,即linux的終端介面 使用者通過這個介面訪問作業系統核心的服務,從而解析使用者提供的命令。而bash bourne again shell 是眾多shell的一種...

Linux Bash基礎特性

1 命令補全 bash執行命令 內部命令 help命令 外部命令 bash根據path環境變數定義的路徑,自左而右在每個路徑搜尋以給定命令名命名的文 件,第一次找到即為要執行的命令 直接補全 tab,使用者給定的字串只有一條惟一對應的命令 以使用者給定的字串為開頭對應的命令不惟一,則再次tab會給出...

linux bash的基礎特性

bash的基礎特性 2 1.命令別名 alias 通過alias命令實現 1 alias 顯示當前 shell 程序所有可用的命令別名 2 alias name value 定義別名name,其相當於執行命令 value 注 在命令列中定義的別名,僅對當前shell程序有效,若果想永久有效,要定義在...