タイトルは煽り気味ですが、百番煎じ、主として内部勉強会向けの記事です。
はじめに
Linuxコンソール - Bashにおいて、コマンド履歴は頻繁に使うかと思います。
その中でも、私めが「よく使う」もしくは「便利そう」なシェル芸人ぽい手法を紹介します!
対象読者
- 上下キー入力で履歴を辿れる
history
コマンドで履歴がずらっと表示される
これらは知っているけど、効率的に使いこなせていない人
履歴
履歴そのものを活用する場合。
直前のコマンド
キー | 概要 | 補足 | お役立ち度 |
---|---|---|---|
!! | 直前のコマンド(パラメータも含めたすべて) | ★★ | |
!:m | 直前のコマンドの各単語 | m:単語番号(0始まり、よって0はコマンドそのもの) | ★ |
!$ | 直前のコマンドの最後のパラメータ | 直前のコマンドが ls foo goo の場合、"goo" | ★★ |
!* | 直前のコマンドのパラメータすべて | 直前のコマンドが ls foo goo の場合、"foo goo" | ★★ |
それより前のコマンド
キー | 概要 | 補足 | お役立ち度 |
---|---|---|---|
!foo | 直近の「foo」で始まるコマンド | ★★★ | |
!n | n番のコマンド(パラメータも含めたすべて) | n:履歴番号 | ★★★ |
!n:m | n番のコマンドの各単語 | 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