目錄
一、補全機制
1、命令補全
給定打頭字符串如果可以唯一標識某命令文件程序,按下“Tab”鍵即可直接補全;如果不能,再次按下“Tab”鍵可以給出所匹配的列表(如果沒有反應,並沒有匹配項)。
2、路徑補全
與命令補全不同的是,路徑補全在給定的起始路徑下,以對應路徑下的打頭字串來逐一匹配起始路徑下的每個文件。
3、小建議
tips:善用“tab”可以幫你省下很多時間並且避免很多錯誤的輸入哦!
二、快捷鍵
按 鍵 | 解 釋 |
---|---|
Ctrl+c | 強制終止前臺運行的程序 |
Ctrl+z | 停止前臺運行的程序(掛起狀態) |
Ctrl+d | 退出,相當於exit |
Ctrl+l | 清屏,相當於clean |
Ctrl+a | 光標移動到命令行最前端 |
Ctrl+e | 光標移動到命令行最後端 |
Ctrl+u | 刪除光標之前的所有內容 |
Ctrl+k | 刪除光標之後的所有內容 |
Ctrl+r | 利用關鍵詞搜索歷史命令 |
三、命令歷史
1、history命令
- shell進程會在其會話中保存此前用戶提交執行過的命令,我們可以使用 history 命令查看運行過的命令,這裏的記錄都是保存在內存中的,當我們退出時會自動保存到文件中。
2、定製history功能
可通過環境變量實現:
HISTSIZE:shell進程可保留的命令歷史條數;
HISTFILE:持久保存命令歷史的文件;
HISTFILESIZE:命令歷史文件能保存的大小;超出則會刪除相對舊的記錄;
HISTCONTROL:控制命令歷史記錄方式。
其中可選的值有:
ignoredups:忽略重複的命令
ignorespace:忽略以空格開頭的命令
ignoreboth:以上兩者同時生效
修改方式:HISTCONTROL=‘VALUE’
多說一點實用的功能,就是給命令歷史加上時間戳。
[root@localhost ~]vim /etc/profile //修改系統環境變量文件
...省略部分信息
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S" //添加此條信息
...省略部分信息
[root@localhost ~]# source /etc/profile //重載文件
[root@localhost /]# history 5 //時間戳添加成功
618 2020-05-14 10:31:31touch a
619 2020-05-14 10:31:34rm a
620 2020-05-14 10:31:41vim /etc/profile
621 2020-05-14 10:31:51source /etc/profile
622 2020-05-14 10:31:55history 5
3、history命令常用用法
選 項 | 解 釋 |
---|---|
-c | 清空內存中的命令歷史 |
-d n | 刪除指定命令歷史(文件中第n條記錄) |
-r | 將文件的歷史記錄讀入到歷史列表中 .bash_history→內存 |
-w | 將歷史列表的歷史記錄寫入到歷史文件中 內存→.bash_history |
history n | 顯示最近n條記錄 |
4、調用命令列表中(內存)的命令
命 令 | 解 釋 |
---|---|
!n | 執行命令列表中第n條命令 |
!! | 執行上一條命令 |
!string | 執行命令列表中最近一個以string開頭的命令 |
5、調用上條命令最後一個參數
- 可以使用 " !$ " 直接表示。
- 可以使用快捷鍵:Esc+.(點號) ,以上圖爲例,按下 “Esc+.” 終端中即可出現 “/” 。
四、命令別名
有的命令或路徑可能輸入起來比較麻煩(路徑較長等等),這時別名就可以幫助到你。
1、列出目前所有的別名設置
# alias
2、設置別名(此處以打開網卡配置文件爲例)
# alias name='value’
值得注意的是,這裏的設置只是暫時的(重新登陸即消失),並且只對當前shell環境有效。
3、取消別名
# unalias name
4、設置永久別名
這裏,需要我們修改別名映射文件來實現。
① /etc/bashrc 全局配置文件(對所有用戶有效)
② ~/.bashrc 個人配置文件(對某一用戶有效)
①、②修改完成後,分別使用source /etc/bashrc、source ~/.bashrc重載對應文件,使設置的別名生效。
5、小補充
如果別名和原命令重名,想使用原命令怎麼辦呢?
很簡單,只需要在命令前加上 " \ " 就可以實現。可以看下面這個栗子!
[root@localhost ~]# alias rm='mv -t /tmp/backup' //將想刪除的目錄或文件移動到/tmp/backup目錄下
[root@localhost ~]# touch test //創建test文件
[root@localhost ~]# rm test
[root@localhost ~]# ls /tmp/backup //很顯然test文件並未刪除,而是移動到了/tmp/backup目錄下
test
[root@localhost ~]# \rm /tmp/backup/test //使用rm原命令
[root@localhost ~]# ls /tmp/backup/
[root@localhost ~]#
五、變量
在linux系統中變量分爲本地變量、局部變量、環境變量。
- 本地變量:僅在當前shell進程中的某代碼片段生效,通常指函數。
- 局部變量:僅在當前shell進程中生效。
- 環境變量:對當前shell進程及其子進程生效。
六、特殊符號
符 號 | 解 釋 |
---|---|
# | 註釋符號,#後面的內容不會被執行 |
| (管道符) | 將一個程序的輸出當作另一個程序的輸入 |
. (點號) | 表示當前目錄 |
.. (雙點號) | 表示上一級目錄 |
; (分號) | 執行多條命令時可以使用分號將它們分開,順序地獨立執行各條命令,彼此之間不關心是否失敗,所有命令都會執行 |
` ` (反單引號) | 命令替換,以命令的標準輸出來取代整個反引號部分 |
’ ’ (單引號) | 強引用,其中的內容直接顯示,不做替換 |
" " (雙引號) | 弱引用,做變量或命令替換,以變量的值或命令的標準輸出取代整個雙引號部分 |
( )(小括號) | 指令羣組(用括號將一串連續指令括起來),或用於初始化數組 |
[ ](中括號) | 常出現在流程控制中,扮演括住判斷式的作用 |
{ } (大括號) | 對括號內的文件名做擴展,或構建代碼塊 |
*(星號) | 通配符,匹配任意長度的任意字符 |
七、I/O重定向
1、linux提供了三種I/O設備
標準輸入(STDIN) - 0 默認接受來自鍵盤的輸入
標準輸出(STDOUT) - 1 默認輸出到終端窗口
標準錯誤(STDERR) - 2 默認輸出到終端窗口
2、輸出重定向
一般命令的輸出都會顯示到終端,有時需要將一些執行結果保存到文件中從而進行一些統計分析,這時就需要使用到輸出重定向。
- 正確輸出(正確輸出表示命令順利執行的結果)
符 號 | 解 釋 |
---|---|
命令 > 文件 | 覆蓋輸出,覆蓋掉原先的文件內容 |
命令 >> 文件 | 追加輸出,在原先的文件內容末尾繼續添加 |
- 錯誤輸出(錯誤輸出表示一些命令執行後出現報錯的內容)
符 號 | 解 釋 |
---|---|
命令 2>文件 | 覆蓋輸出,覆蓋掉原先的文件內容 |
命令 2>>文件 | 追加輸出,在原先的文件內容末尾繼續添加 |
tips:錯誤輸出 “>” 或 “>>” 後沒有空格哦。
3、輸入重定向
“<” 可以實現輸入重定向。輸入重定向不經常使用,因爲絕大多數的命令都以參數的形式在命令行上指定輸入文件的文件名,因此這裏不做過多解釋。
4、正確錯誤混合輸出
符 號 | 解 釋 |
---|---|
命令 &> 文件 | 以覆蓋的方式,正確和錯誤結果都輸出到同一文件 |
命令 &>> 文件 | 以追加的方式,正確和錯誤結果都輸出到同一文件 |
命令 > 文件 2>&1 | 以覆蓋的方式,正確和錯誤結果都輸出到同一文件 |
命令 >> 文件 2>&1 | 以追加的方式,正確和錯誤結果都輸出到同一文件 |
命令 >文件a 2>文件b | 以覆蓋的方式,正確結果輸出到文件a,錯誤結果輸出到文件b |
命令 >>文件a 2>>文件b | 以追加的方式,正確結果輸出到文件a,錯誤結果輸出到文件b |
其中雖然①③和②④執行結果相同,但是本質區別是**&>是將標準輸出和標準錯誤都重定向到文件中,而2>&1**是將標準錯誤重定向到標準輸出。
5、兩個實用的"設備"
- /dev/zero,是一個輸入設備,可以叫做“吐零機”。當你讀取它時,會產生無窮無盡的0(二進制的零流),它可以用來覆蓋信息(使用它提供的字符流),也可以產生一個特定大小的空白文件。
- /dev/null,是一個空設備,可以叫做“數據黑洞”。所有寫入的數據都會被丟棄,如果不想讓消息以標準輸出寫入文件,那麼可以將它重定向到/dev/null中。
八、通配符
通配符 | 解 釋 |
---|---|
* | 匹配任意長度的任意字符 |
? | 匹配任意單個字符 |
[] | 匹配指定範圍內的任意單個字符 |
[^] | 匹配指定範圍外的任意單個字符 |
下面我們對[]和[^]的使用進行簡單介紹。
通配符 | 解 釋 |
---|---|
[0-9] 或 [:digit:] | 所有數字 |
[a-z] 或 [:lower:] | 所有小寫字母 |
[A-Z] 或 [:upper:] | 所有大寫字母 |
[:alpha:] | 所有字母 |
[:alnum:] | 所有字母和數字 |
[:space:] | 所有空白字符 |
[:punct:] | 所有標點符號 |
[^0-9] 或 [^ [:digit:]] 即表示匹配 除數字之外任意單個字符。