本文環境 Centos7
1.歷史命令
1.1 在使用linux中熟練的使用歷史命令,能給我很多便捷,下面我來總結一些常用的一些歷史命令。
a) 執行上一條命令,這個很重要 ,執行上一條命令有四種方法,如下:
[root@CentOS-7-64 data]# [root@CentOS-7-64 data]# ls [a-z] kas kokoa l1234bd l1234bd1dada l12k l12ka l2a
當然這個命令很簡單,但是命令很復雜呢?使用 ↑ ,ctrl+p ,!-1 ,!! 這四種方式可以執行上條命令
[root@CentOS-7-64 data]# !! ls [a-z] kas kokoa l1234bd l1234bd1dada l12k l12ka l2a [root@CentOS-7-64 data]# ls # 我這里按的是 ctrl+p [a-z] kas kokoa l1234bd l1234bd1dada l12k l12ka l2a [root@CentOS-7-64 data]# !-1 ls [a-z] kas kokoa l1234bd l1234bd1dada l12k l12ka l2a [root@CentOS-7-64 data]# ls # 這里是 ↑ 鍵 [a-z] kas kokoa l1234bd l1234bd1dada l12k l12ka l2a [root@CentOS-7-64 data]#
b) 在歷史命令中執行最新一條以cat開頭的命令,要執行以什么開頭的命令,在嘆號后面加上你要執行的命令,執行的是最后一條以cat開頭的命令 用法 !cat
[root@CentOS-7-64 data]# !cat cat kas hello world hello world [root@CentOS-7-64 data]#
c) 在歷史命令中執行包含red的命令,這條命不同於上條,上條是開頭,這條是包含,使用方法:
!?red !?+你要包含的命令
[root@CentOS-7-64 data]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) [root@CentOS-7-64 data]# !?red cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) [root@CentOS-7-64 data]#
d) 打印以kas開頭的命令,只打印不執行 方法 !command:p
[root@CentOS-7-64 data]# !kas:p kas
e) 執行前一條命令(去除參數)並打印出命令 方法 !:0
[root@CentOS-7-64 data]# cat kas hello world hello world [root@CentOS-7-64 data]# !:0 kokoa cat kokoa hello china hello china [root@CentOS-7-64 data]#
f) 得到前一個命令的第一個參數並打印命令 用法 !:1
[root@CentOS-7-64 data]# cat kokoa hello china hello china [root@CentOS-7-64 data]# vim !:1 vim kokoa [root@CentOS-7-64 data]#
g) 要重新調用前一個命令中最后一個參數並打印命令 有幾種方法 我就寫我常用的 用法 !$ Esc + . 英文點
[root@CentOS-7-64 data]# !grep grep "hello" kokoa kas kokoa:hello china kokoa:hello china kas:hello world kas:hello world [root@CentOS-7-64 data]# vim !$ vim kas [root@CentOS-7-64 data]#
Esc + 點 得到前一個命令的參數
[root@CentOS-7-64 data]# cat kokoa hello china hello china [root@CentOS-7-64 data]# vim kokoa
1.2 用好這些歷史命令的正確方式能給我們的工作很大的便利,還有很多類似的命令,我就不一一演示了,就寫在下面了
!$:p 打印上一條命令的最后一個參數
!*:p 打印上一條命令的所有參數
!^:p 打印上一條命令的第一個參數
^command 刪除上一條命令中的第一個command,並執行刪除 command 后的結果
^command1^command2 將上一條命令中的第一個command1替換為command2
!:gs/command1/command2 將上一條命令中所有的command1都替換為 command
ctrl + r 搜索歷史命令 ctrl+g 退出搜索
command !^ 將上個命令的第一個參數作command的參數
command !$ 將上個命令的最后一個參數作command的參數
command !* 將上個命令的所有參數作command的參數
command !:n 將上個命令的第n個參數作command的參數
command !n:^ 獲取第n條命令的第一個參數
command !n:$ 獲取第n條命令的最后一個參數
command !n:m 獲取第n條命令的第m個參數
command !n:* 獲取第n條命令的所有參數
command !cmd:^ 在命令歷史中搜索以 cmd 開頭的命令,並獲取它的第一 個參數
command !cmd:$ 在命令歷史中搜索以 cmd 開頭的命令,並獲取它的最后一 個參數
command !cmd:n 在命令歷史中搜索以 cmd 開頭的命令,並獲取它的第n 個參數
command !cmd:* 在命令歷史中搜索以 cmd 開頭的命令,並獲取它的所有 參數
1.3 歷史命令的環境變量
HISTSIZE 記錄歷史命令條數
HISTFILE 記錄歷史命令的文件
HISTFILESIZE 命令歷史文件記錄歷史的條數
HISTTIMEFORMAT 顯示歷史命令時間 這個很有用 如:HISTTIMEFORMAT="%T-%F " 后面留了幾個空格,你試試不留空格的效果?
HISTIGNORE
HISTCONTROL 以下是HISTCONTROL的值與效果
ignoredups 默認,忽略重復的命令,連續且相同為“重復”
ingorespace 不記錄以空格開頭的命令
ingoreboth 是以上兩個值的效果,不記錄空格開頭,忽略重復
erasedups 刪除重復命令
2. bash快捷鍵 常用的很多沒列出
ctrl+l 清屏
ctrl+y 將刪除的粘貼到光標處
ctrl+z 掛起
ctrl+c 強行終止
ctrl+s 鎖定屏幕,組織輸出
ctrl+t 交換字符,將光標前的字符與光標處的字符交換
ctrl+q 對應以上ctrl+s的命令,對ctrl+s進行恢復
ctrl+o 執行當前命令,並重新顯示本命令
ctrl+e 將光標移至行尾
ctrl+a 將光標移至行首
ctrl+u 刪除到行首
ctrl+k 刪除到行尾
ctrl+d 刪除光標上的字符
ctrl+h 刪除光標前的字符
ctrl+w 向左刪除至單詞首
alt+r 刪除整行
alt+f 光標向右移至單詞尾
alt+b 光標向左移至單詞首
alt+t 將光標處的單詞與前一個單詞換位置
alt+d 向左刪除至單詞首