本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンドラインの履歴を編集して実行したり、一覧表示したりするbashの「fc」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンドラインの履歴を編集して実行したり、一覧表示したりするbashの「fc」コマンドです。
「fc」はコマンドライン入力の履歴(ヒストリー)を編集して実行するコマンドです。ヒストリーを一覧表示したり、特定のヒストリーを表示したりすることもできます。
fcコマンドはbashのビルトインコマンド(内部コマンド、シェルコマンド)です。このため、manコマンドではなく、helpコマンドや「man bash」で詳細を確認します。
なお、同名のコマンド(/usr/bin/fc)もあり、bashと同じオプションが使用可能です(※1)。
fcコマンドと似た働きをする簡潔なコマンドとして、「history」コマンド(連載第154回)があります。
fc [オプション] [開始] [終了]
fc -s [置換前=置換後] [対象]
※開始や終了、対象は、ヒストリー番号またはコマンドラインの先頭文字列で指定。[ ]は省略可能な引数を示しています。
短いオプション | 意味 |
---|---|
-l | ヒストリーを一覧表示する(編集は行わない、本文を参照) |
-n | 一覧表示の際に行番号を表示しない |
-r | 一覧表示を逆順にする |
-s 置換前=置換後 対象 | ヒストリーを「置換前=置換後」に従って置き換えてから実行する。「対象」を指定しなかった場合は最後に実行したコマンドが対象となる(本文を参照) |
-e エディタ | 使用するエディタを指定する(デフォルトは、環境変数FCEDIT、次にEDITOR、最後に「vi」コマンドの順に適用) |
「fc -l」で、ヒストリーのうち、最新の16件分を一覧表示します(画面1)。
「fc -l 開始」あるいは「fc -l 開始 終了」で表示する範囲をヒストリーの番号やコマンドラインの先頭部分の文字列で指定できます。また、「fc -l -件数」で表示件数を指定できます。
fc -l
(最新16件分のヒストリーを一覧表示する)
fc -l 開始 終了
(範囲を指定してヒストリーを一覧表示する)
fc -l 300
(300番以降のヒストリーを一覧表示する)
fc -l ls
(「最後に実行した『ls』で始まるコマンドライン」以降を一覧表示する)
fc -l 300 305
(300〜305番のヒストリーを一覧表示する)
fc -l -5
(ヒストリーの最新5件分を表示する)
「fc -s 置換前=置換後」で、最後に実行したコマンドラインのうち、「置換前」で指定した文字列を「置換後」で置き換えてから実行します(画面2)。
さらに「fc -s 置換前=置換後 対象」で、ヒストリー番号またはコマンドラインの先頭文字列を指定して、対象を絞り込むことも可能です。
【訂正:2019年12月11日午後14時30分】本記事の初出時、「fc -s 置換前=置換後」に対して「『shopt -s histverify』でシェルオプション『histverify』を有効にしておくと、実行前にこれから実行するコマンドラインを確認できる」としておりましたが、正しくは「!」で展開した内容のみを表示します。お詫びして訂正いたします。該当箇所は既に修正済みです(編集部)。
fc -s 置換前=置換後 対象
(対象のコマンドラインにある指定した文字列を置き換えてから実行する。対象を指定しなかった場合は最後に実行したコマンドが対象となる)
fc -s co.jp=com 342
(ヒストリー番号342のコマンドラインのうち、「co.jp」の部分を「com」に置き換えてから実行する)(画面2)
fc -s co.jp=com ping
(最後に実行した「ping」から始まるコマンドラインのうち、「co.jp」の部分を「com」に置き換えてから実行する)
Copyright © ITmedia, Inc. All Rights Reserved.