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程序有效,若果想永久有效,要定義在...