[Mac/Linux] 取出曾執行過的 shell 指令,重新執行

[Mac/Linux] 取出曾執行過的 shell 指令,重新執行

在 Mac/Linux 上,有許多方法可以執行之前曾經執行過的指令,

簡單記錄一下我常用的吧~

 

1. 使用 Ctrl-R 組合鍵搜尋執行過的指令

在命令列提示符號下,

按下 Ctrl-R 組合鍵,會跳出一個 (reverse-i-search) 的提示符號,

這時可以輸入指令的部分字元,

它會自動從最近執行過的指令中找出符合的。

 

舉例來說,我在按下 Ctrl-R 之後,鍵入 brew 四個字元,

系統就會將最後一次指令裡有 brew 的列出來:

  • 倘若是想要執行的指令,可以按 Enter 鍵取用這個指令
  • 倘若想往前尋找其他符合的指令,可以再按多次 Ctrl-R 往回找
  • 倘若想放棄搜尋的話,按下 Ctrl-C 就會退出
testuser@localhost ~ $

(reverse-i-search)`brew': brew update && brew upgrade

 

這個算是我非常愛用的方法之一,

只要打幾個字,就能得到之前執行過的長串指令,非常好用且快速~

 

2. 使用上下方向鍵取用最近執行過的指令

這算是基門入門用法,

用 ↑方向鍵就可以取用上一個指令,↓方向鍵取用下一個指令。

多按幾次,就可以往前往後列出執行過的指令。

適合用這方法來再次執行才剛跑過的指令~

 

3. 使用 history 列出執行過的指令

執行 history 指令後,可以看到之前曾下過的指令,例如:

testuser@localhost ~ $ history

......
   66  ll
   67  brew list
   68  brew update && brew upgrade
   69  youtube-dl --help | egrep -i video
   70  ls
   71  history

 

這時就可以複製想要的指令,再貼上執行了。

這方法比較麻煩,但適合用在指令不太記得的狀況下~

 

4. 使用 !! 執行上一個指令

這算是我較少用的方式,因此筆記下來。

!! 可以執行上一個指令,因此它事實上可以用↑方向鍵取代掉。

 

舉例來說,我先執行了 ls,

接著執行 !! 的話,就會再執行一次 ls:

testuser@localhost ~ $ ls

AndroidStudioProjects   Desktop         Movies

testuser@localhost ~ $ !!

ls

AndroidStudioProjects   Desktop         Movies

 

5. 使用 !num 執行指定編號的指令

這個 !num 得搭配 history 指令使用。

像剛剛 history 有列出編號 67 的指令是 brew list,

因此 !67 就會直接執行 brew list:

testuser@localhost ~ $ !67

brew list

apktool         fontconfig      graphviz        libtool         pev         readline        xz
autoconf        freetype        hexcurse        libunistring        pixman          shellcheck      yara

 

這些方法都值得記起來,加速在 Mac/Linux 上 shell 的操作喔~

 

參考資料:Is there any way to execute commands from history?

(本頁面已被瀏覽過 47 次)

發表迴響

你的電子郵件位址並不會被公開。