您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關高效Bash的使用技巧有什么呢,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
這是一篇 Bash 的使用技巧內容,部分內容需要先具備一些基礎知識及 Linux 的基礎操作能力
主要內容分兩部分,一部分是關于 history 的,另一部分是關于操作的
我們在日常使用中,難免會使用到一些歷史命令或者有時需要對歷史命令進行更正,那么如何更加高效的來完成這些操作呢?
首先我們肯定會想到 history
命令,history
可以返回之前使用過的命令列表,就像這樣:
(Tao) ? ~ history 10 1 cd myzh 2 cd zsh 3 ls 4 cat zshrc 5 brew info tmux 6 brew install tmux 7 cd .tmux 8 cd tmux 9 cp tmux.conf ~/ 10 mv tmux.conf .tmux.conf
我們可以很方便的通過后面指定數字來返回固定數量的歷史記錄,但是這樣得到的結果,我們也只是知道使用它們的先后順序,我們想要得到更加詳細的信息,例如執行時間,那么我們可以這樣做:
(Tao) ? ~ export HISTTIMEFORMAT='%F %T ' (Tao) ? ~ history 10 1 2016-02-09 15:38:40 cd myzh 2 2016-02-09 15:38:44 cd zsh 3 2016-02-09 15:38:51 ls 4 2016-02-09 15:38:59 cat zshrc 5 2016-02-09 15:39:04 brew info tmux 6 2016-02-09 15:48:13 brew install tmux 7 2016-02-09 15:48:17 cd .tmux 8 2016-02-09 15:49:04 cd tmux 9 2016-02-09 15:49:23 cp tmux.conf ~/ 10 2016-02-09 15:49:47 mv tmux.conf .tmux.conf
通過設置 HISTTIMEFORMAT
的環境變量,在歷史記錄中顯示了時間。
想要使用某條歷史記錄改如何操作呢? 我們使用 !序號
, 比如我們想要執行第3條命令,那我們輸入 !3
即可:
(Tao) ? ~ history 6 1 cd myzh 2 cd zsh 3 ls 4 cat zshrc 5 brew info tmux 6 brew install tmux (Tao) ? ~ !3 (Tao) ? ~ ls zshrc
重復執行了上面第 3 條命令。 如果我們想要執行倒數第n條,那就直接輸入 !-n
。
當想要使用上條命令的時候,我們有下面 4 種方式:
!-1
回車
!!
回車
輸入 Ctrl + p 回車
按上箭頭回車
有興趣的小伙伴可以試下,這幾種用法都比較常見。
比如,我們想要使用之前執行過的一條導入環境變量的語句,那么我可以執行 !export
:
# 當然export也可以不輸完整 (Tao) ? ~ !export (Tao) ? ~ export HISTTIMEFORMAT='%F %T '
如果只記得命令中包含 xport 呢? 那當然也可以, 只要加個 ?
就可以:
(Tao) ? ~ !?xport (Tao) ? ~ export HISTTIMEFORMAT='%F %T '
比如 touch 了某個文件,現在要編輯它,那么只要執行 !$
或者 !!:$
即可:
(Tao) ? ~ touch test.sh (Tao) ? ~ vi !$ vi test.sh (Tao) ? ~ vi !!:$ vi test.sh
這種方式只是獲取到了最后一位的參數, 那么假如我們想要獲取的不只是最后一個參數呢?使用 !*
或者 !!:*
即可:
(Tao) ? ~ touch a b c (Tao) ? ~ vim !* vim a b c 3 files to edit (Tao) ? ~ vim !!:* vim a b c 3 files to edit
難免有手誤的時候,那么如何快速進行替換呢? 我們可以使用 ^old^new
的命令,例如:
(Tao) ? ~ cp /usr/local/etc/redis-sen.conf . cp: /usr/local/etc/redis-sen.conf: No such file or directory (Tao) ? ~ ^sen^sentinel cp /usr/local/etc/redis-sentinel.conf .
或者 我們還可以使用 !!:gs/old/new
這樣進行操作,例如:
(Tao) ? ~ cp /usr/local/etc/redis-sen.conf . cp: /usr/local/etc/redis-sen.conf: No such file or directory (Tao) ? ~ !!:gs/sen/sentinel cp /usr/local/etc/redis-sentinel.conf .
如果我們只是部分內容做替換呢? 該如何操作?
只要使用 !!:x-y
來選擇上條記錄中的參數范圍,然后進行替換即可:
(Tao) ? ~ mkdir -p data/db1 data/dc2 data/dc3 (Tao) ? ~ mkdir -p !!:3-4:gs/c/b mkdir -p data/db2 data/db3
聰明的你應該已經發現, 上面我先寫了如何使用歷史命令,后來又介紹了如何對上條命令操作,那么把這兩部分內容組合起來會產生什么樣的效果呢?
(Tao) ? ~ mkdir -p data/db1 data/dc2 data/dc3 (Tao) ? ~ ls **/** data/db1: data/dc2: data/dc3: (Tao) ? ~ mkdir -p !mkdir:3-4:gs/c/b mkdir -p data/db2 data/db3 (Tao) ? ~ ls **/** data/db1: data/db2: data/db3: data/dc2: data/dc3:
對,就像上面這樣,我們可以通過各種組合來是我們對以前命令的修改執行更加靈活方便! Enjoy it !
Ctrl + a : 光標返回首位
Ctrl + e : 光標移至末尾
Ctrl + p : 上一個命令
Ctrl + n : 下一個命令
Ctrl + l : 清屏
Ctrl + d : 刪除當前光標處的內容
Ctrl + h : 回退一位
Ctrl + b : 光標向左一位
Ctrl + f : 光標向右一位
Ctrl + u : 剪切光標前的內容(全部)
Ctrl + w : 剪切光標前的內容(按詞)
Ctrl + k : 剪切光標后的內容
Ctrl + y : 將剪切的內容復制到光標后
Ctrl + t : 交換光標前的兩個字符順序
set -o vi
Ctrl + r : 搜索歷史中輸入過的命令
看完上述內容,你們對高效Bash的使用技巧有什么呢有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。