連載
» 2019年12月05日 05時00分 公開

Linux基本コマンドTips(360):【 fc 】コマンド――コマンドラインの履歴を編集して実行する、一覧表示する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンドラインの履歴を編集して実行したり、一覧表示したりするbashの「fc」コマンドです。

[西村めぐみ,@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンドラインの履歴を編集して実行したり、一覧表示したりするbashの「fc」コマンドです。

fcコマンドとは?

 「fc」はコマンドライン入力の履歴(ヒストリー)を編集して実行するコマンドです。ヒストリーを一覧表示したり、特定のヒストリーを表示したりすることもできます。

 fcコマンドはbashのビルトインコマンド(内部コマンド、シェルコマンド)です。このため、manコマンドではなく、helpコマンドや「man bash」で詳細を確認します。

 なお、同名のコマンド(/usr/bin/fc)もあり、bashと同じオプションが使用可能です(※1)。

※1 ビルトインコマンドについては、連載第153回連載第224回を参照。



 fcコマンドと似た働きをする簡潔なコマンドとして、「history」コマンド(連載第154回)があります。



コマンドの書式

fc [オプション] [開始] [終了]

fc -s [置換前=置換後] [対象]

※開始や終了、対象は、ヒストリー番号またはコマンドラインの先頭文字列で指定。[ ]は省略可能な引数を示しています。




fcの主なオプション

短いオプション 意味
-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件分を表示する)


画面1 画面1 コマンドラインのヒストリーを表示したところ


ヒストリーの一部を置き換えて実行する

 「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」に置き換えてから実行する)


画面2 画面2 コマンドラインの一部を置換して再実行しているところ


最後に実行したコマンドを再度実行する

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。