Quantcast
Viewing all articles
Browse latest Browse all 2722

[シェル芸人への道] Bashコマンド履歴を活用しよう

タイトルは煽り気味ですが、百番煎じ、主として内部勉強会向けの記事です。

はじめに

Linuxコンソール - Bashにおいて、コマンド履歴は頻繁に使うかと思います。
その中でも、私めが「よく使う」もしくは「便利そう」シェル芸人ぽい手法を紹介します!

対象読者

  • 上下キー入力で履歴を辿れる
  • historyコマンドで履歴がずらっと表示される

これらは知っているけど、効率的に使いこなせていない人

履歴

履歴そのものを活用する場合。

直前のコマンド

キー概要補足お役立ち度
!!直前のコマンド(パラメータも含めたすべて)★★
!:m直前のコマンドの各単語m:単語番号(0始まり、よって0はコマンドそのもの)
!$直前のコマンドの最後のパラメータ直前のコマンドが ls foo goo の場合、"goo"★★
!*直前のコマンドのパラメータすべて直前のコマンドが ls foo goo の場合、"foo goo"★★

それより前のコマンド

キー概要補足お役立ち度
!foo直近の「foo」で始まるコマンド★★★
!nn番のコマンド(パラメータも含めたすべて)n:履歴番号★★★
!n:mn番のコマンドの各単語nは上に同じ
m:単語番号(0始まり、よって0はコマンドそのもの)
!n*n番のコマンドのパラメータすべてnは上に同じ

現在入力中のコマンド

キー概要補足お役立ち度
!#これまでに入力したコマンドライン全体"ls foo !#" とすると "ls foo ls foo" に展開
!#:mこれまでに入力したコマンドラインの各単語m:単語番号(0始まり、よって0はコマンドそのもの)
!#$これまでに入力したコマンドラインの最後のパラメータ"ls foo !#$" とすると "ls foo foo" に展開★★

履歴の編集

履歴を編集して活用する場合。
左右キーとBackSpaceは頻繁に使いますが、以下はショートカットとして。

カーソル移動

キー概要お役立ち度
Ctrl + Aカーソルを先頭へ★★
Ctrl + Eカーソルを行末へ

文字の削除

キー概要お役立ち度
Ctrl + Uカーソルより前の文字を削除(切り取り)★★
Ctrl + Kカーソル以降の文字を削除(切り取り)

ユースケース

!foo の例

直近のdockerコマンドを繰り返したい

$!docker

!n の例

履歴番号から実行したい

$history | grep cd 2037  cd ~/foo
 2053  history | grep cd
$!2037

!! の例

sudoが必要だったあ

$sudo!!

!$ の例

mkdirしたら移動したいよね

$mkdir foo
$cd!$

!* の例

コマンドtypoしたった

$hstoru | more
hstoru: コマンドが見つかりません
$history!*

!#$ の例

ファイルのバックアップを取りたい

$cp-p foo !#$.org

Ctrl + U の例

上下キーで履歴表示したけど不要なんで、コマンドラインごと消したい

(画面は省略)

おわりに

参考

実は以下リンクが一番有用だったりますが(笑)、Bashのmanの和訳(の履歴)です。

Man page of BASH
https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html#lbCX


Viewing all articles
Browse latest Browse all 2722

Trending Articles