LoginSignup
2
2

More than 1 year has passed since last update.

【Linux】manコマンドで終了前の画面がクリアされないようにする

Posted at

はじめに

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にオプションをフルでつけて実行させることができました。
F5EBE848-95BF-44CA-9D71-47C00F839851.jpeg

最後に

以上、manコマンドで終了前の画面がクリアされないようにする方法でした。
他にも方法はあるようですが、一旦はこの方法で問題ないかなと思います。

最後にもう一度設定を掲載しておきます。

$ export MANPAGER="/usr/bin/less -X"

お役に立てれば幸いです。

2
2
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
2
2