はじめに
Linuxのman
コマンドを利用時に、終了前の画面がクリアされないようにする方法の一つを紹介する記事です。
環境
$ uname -rs
Linux 3.10.0-1160.31.1.el7.x86_64
$cat /etc/centos-release
CentOS Linux release 7.9.2009(Core)
$
$ bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
〜以下略〜
man
コマンドで困ったこと
man
コマンドは、あらゆるコマンドの引数の取り方やオプションについて説明があり、大変有用なコマンドです。
皆さんも日々お世話になっているかと思います。
そんなman
コマンドですが、私は以前から一点不満がありました。
それは、q
で終了した際に、終了前の画面がクリアされてしまうという点です。
例えば、sl
コマンドについてオプションを調べたいとします。
$ man sl
とすると、以下のようにマニュアルページが展開されます。
SL(1) SL(1)
NAME
sl - cure your bad habit of mistyping
SYNOPSIS
sl [ -alFc ]
DESCRIPTION
sl is a highly advanced animation program for curing your bad habit of mistyping.
-a An accident is occurring. People cry for help.
-l Little version
-F It flies like the galaxy express 999.
-c C51 appears instead of D51.
SEE ALSO
ls(1)
BUGS
It sometimes lists directory contents.
AUTHOR
Toyoda Masashi (mtoyoda@acm.org)
March 31, 2014 SL(1)
このマニュアルを見て、次のように思ったとしましょう。
「なるほど、-a
や-F
といったオプションがあるのか...ここに書いてあるオプション全部つけて実行したらどうなるかな?」
思ったら即実行!ということで、q
でマニュアルを閉じ、オプションを全部つけて実行しようとしました。
しかし、勢いよく打ち始めたはいいものの、途中で手が止まってしまいます。
「-a
と-l
と......あれ、次は-f
だったかな-F
だったかな...?」
「4つあったはずだけど、最後のオプションってなんだったっけ?」
このようになってしまったのは、マニュアルをq
で閉じた際にマニュアルの画面がクリアされて、次のようになってしまっているからです。
$ man sl
$
画面上にさっきのマニュアルページの内容が残ってくれていると、迷わずコマンドが打てたはずです。
クリアされないように、環境変数MANPAGER
を変更する
さて、前述のような悩みを解決するために今回紹介するのは、環境変数MANPAGER
を変更するという方法です。
結論から述べると、以下のようにするとman
コマンドの終了前の画面が残るようになります。
$ export MANPAGER="/usr/bin/less -X"
MANPAGER
とは、その名の通り、man
コマンド使用時に利用されるページャを設定する環境変数です。
デフォルトでは/usr/bin/less
となっています。(man
のマニュアルに記載されています)
つまり、man
コマンドはデフォルトでless
コマンドに何もオプションをつけないで実行した時と同じ画面表示を行います。
上記の環境変数設定は、less
のデフォルトの挙動に画面をクリアしないオプション(-X
)をつける設定となり、これをman
コマンドで利用されるようにしています。
この設定により、man sl
からq
でマニュアルを閉じるまでの画面が、以下のように変わります。
$ man sl
SL(1) SL(1)
NAME
sl - cure your bad habit of mistyping
SYNOPSIS
sl [ -alFc ]
DESCRIPTION
sl is a highly advanced animation program for curing your bad habit of mistyping.
-a An accident is occurring. People cry for help.
-l Little version
-F It flies like the galaxy express 999.
-c C51 appears instead of D51.
SEE ALSO
ls(1)
BUGS
It sometimes lists directory contents.
AUTHOR
Toyoda Masashi (mtoyoda@acm.org)
March 31, 2014 SL(1)
$
//↑画面上に終了前のマニュアルの内容が残った状態でプロンプトが表示される
次のコマンドを打つ画面上に、マニュアル画面がクリアされないまま残っています。
これで、先程のようにオプションで迷うことなくコマンドが打てますね。
晴れてsl
にオプションをフルでつけて実行させることができました。
最後に
以上、manコマンドで終了前の画面がクリアされないようにする方法でした。
他にも方法はあるようですが、一旦はこの方法で問題ないかなと思います。
最後にもう一度設定を掲載しておきます。
$ export MANPAGER="/usr/bin/less -X"
お役に立てれば幸いです。