溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

高效Bash的使用技巧有什么呢

發(fā)布時間:2021-10-21 14:04:47 來源:億速云 閱讀:160 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)高效Bash的使用技巧有什么呢,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

這是一篇 Bash 的使用技巧內(nèi)容,部分內(nèi)容需要先具備一些基礎(chǔ)知識及 Linux 的基礎(chǔ)操作能力
主要內(nèi)容分兩部分,一部分是關(guān)于 history 的,另一部分是關(guān)于操作的

我們在日常使用中,難免會使用到一些歷史命令或者有時需要對歷史命令進行更正,那么如何更加高效的來完成這些操作呢?

History

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

我們可以很方便的通過后面指定數(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 回車

  • 按上箭頭回車

有興趣的小伙伴可以試下,這幾種用法都比較常見。

使用某些字符開頭或者包含這些字符在內(nèi)的命令

比如,我們想要使用之前執(zhí)行過的一條導(dǎo)入環(huán)境變量的語句,那么我可以執(zhí)行 !export:

# 當然export也可以不輸完整
(Tao) ?  ~ !export    
(Tao) ?  ~ export HISTTIMEFORMAT='%F %T '

如果只記得命令中包含 xport 呢? 那當然也可以, 只要加個 ? 就可以:

(Tao) ?  ~ !?xport    
(Tao) ?  ~ export HISTTIMEFORMAT='%F %T '

獲取上條命令中的參數(shù)

比如 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

對上條命令中的參數(shù)做替換

難免有手誤的時候,那么如何快速進行替換呢? 我們可以使用 ^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 !

操作部分

操作快捷鍵(emacs 模式)

  • 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 : 交換光標前的兩個字符順序

設(shè)置操作模式為 Vi 模式

set -o vi

搜索

Ctrl + r : 搜索歷史中輸入過的命令

看完上述內(nèi)容,你們對高效Bash的使用技巧有什么呢有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI