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