0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2020-02-19

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

はじめに

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?