まあ、これはマンページを読むための私の非常に個人的な方法です:
マンページャー
man
コマンドを使用してマンページを開くと、出力はless
or more
コマンド、またはページャー(manpager)として設定される他のコマンドによって表示/レンダリングされます。
Linuxを使用している場合は、おそらく/usr/bin/less -is
(最小限のディストリビューションをインストールしていない限り)として既に使用するように構成されたmanインフラストラクチャが提供されます。man(1)
オプションセクションで説明します。
-P pager
Specify which pager to use. This option overrides the MANPAGER environment variable,
which in turn overrides the PAGER variable. By default, man uses /usr/bin/less -is.
FreeBSDおよびOpenBSD では、MANPAGER
ほとんどがを使用するため、環境変数を編集するだけで、more
検索やテキストの強調表示などの一部の機能が欠落する可能性があります。
そこどのような違いの質問に対する良い答えはmore
、less
とmost
しているここに(使用されることはありませんmost
)。マンページを閲覧するときは、またはで(または、バインディングとを使用して)Space行ごとに、または両方の方法でページを後方にスクロールし、前方にスクロールする機能が不可欠です。使用中に押すと、使用可能なコマンドの概要が表示されます。↓↑vi
jkhless
そして、それが私がless
あなたのman pagerとして使うことを勧める理由です。less
この回答中に使用されるいくつかの重要な機能があります。
コマンドはどのようにフォーマットされますか?
ユーティリティ規約:Open Group Base Specifications Issue 7-IEEE Std 1003.1、2013 Edition。マンページを理解する前に、そのリンクにアクセスする必要があります。このオンラインリファレンスでは、標準ユーティリティの引数構文について説明し、ユーティリティによって処理される引数を説明するためにPOSIX.1-2017全体で使用される用語を紹介します。これにより、パラメータ、引数、引数オプションなどの単語の本当の意味について間接的に更新されます...
ユーティリティ規約の表記法を理解すると、マンページの頭がわかりにくくなります。
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
何をしたいかを念頭に置いてください。
あなたの研究を行うとき、xargs
あなたはそれを目的のためにしたのですか?標準出力を読み取り、その出力に基づいてコマンドを実行する特定のニーズがありました。
しかし、どのコマンドが欲しいのかわからないときは?
使用するman -k
か、apropos
(彼らは同じです)。ファイルの検索方法がわからない場合:man -k file | grep search
。説明を読み、ニーズに合ったものを見つけてください。例:
apropos -r '^report'
bashbug (1) - report a bug in bash
df (1) - report file system disk space usage
e2freefrag (8) - report free space fragmentation information
filefrag (8) - report on file fragmentation
iwgetid (8) - Report ESSID, NWID or AP/Cell Address of wireless network
kbd_mode (1) - report or set the keyboard mode
lastlog (8) - reports the most recent login of all users or of a given user
pmap (1) - report memory map of a process
ps (1) - report a snapshot of the current processes.
pwdx (1) - report current working directory of a process
uniq (1) - report or omit repeated lines
vmstat (8) - Report virtual memory statistics
Aproposはデフォルトで正規表現で動作します(man apropos
、説明を読んで何-r
が起こるかを調べます)。この例では、説明が「レポート」で始まるすべてのマンページを探しています。
標準入出力処理の読み取りとxargs
可能なオプションとしてのリーチに関連する情報を検索するには:
man -k command| grep input
xargs (1) - build and execute command lines from standard input
DESCRIPTION
開始前に必ずお読みください
時間をかけて説明を読んでください。xargs
コマンドの説明を読むだけで、次のことがわかります。
xargs
STDINから読み取り、必要なコマンドを実行します。これはまた、標準入力がどのように機能するか、パイプを介してコマンドをチェーンするためにそれを操作する方法についての知識が必要であることを意味します
- デフォルトの動作はのように動作します
/bin/echo
。これにより、複数のチェーンxargs
を作成する必要がある場合に、エコーを使用して印刷する必要がないというちょっとしたヒントが得られます。
- また、Unixファイル名には空白と改行が含まれることがあり、これが問題になる可能性があり、引数
-0
はヌル文字セパレーターを使用して物事が爆発するのを防ぐ方法であることも学びました。この説明は、入力として使用されるコマンドもこの機能をサポートする必要があること、およびGNUがfind
サポートすることを警告しています。すばらしいです。で多くのfindを使用しxargs
ます。
xargs
終了ステータス255に達すると停止します。
一部の説明は非常に短く、それは一般的にソフトウェアが非常に簡単な方法で動作するためです。マンページのこの部分をスキップすることさえ考えないでください ;)
その他の注意事項...
を使用してファイルを検索できることを知っていますfind
。たくさんのオプションがあり、を見るだけで、SYNOPSIS
それらに圧倒されます。それは氷山の一角にすぎません。、、およびを除くNAME
とSYNOPSIS
、DESCRIPTION
次のセクションがあります。
AUTHORS
:コマンドの作成を作成または支援した人々。
BUGS
:既知の欠陥をリストします。実装の制限のみである可能性があります。
ENVIRONMENT
:コマンドまたは使用される変数の影響を受ける可能性のあるシェルの側面。
EXAMPLES
またはNOTES
:自明。
REPORTING BUGS
:このツールまたはドキュメントにバグを見つけた場合に連絡する必要がある人。
COPYRIGHT
:ソフトウェアの作成者および免責事項。すべては、ソフトウェア自体のライセンスに関連しています。
SEE ALSO
:他のコマンド、ツール、またはこのコマンドに関連し、他のセクションには当てはまらない作業面。
ほとんどの場合、ツールに必要な側面に関する興味深い情報は、例/メモのセクションで見つけることができます。
例
以下の手順では、説明するfind
よりも概念が「単純」であるxargs
ため、例として取り上げます(1つのコマンドがファイルを検出し、他のコマンドがstdinと他のコマンド出力のパイプライン実行を処理します)。このコマンドについて何も知らない(またはほとんど知らない)ふりをしましょう。
特定の問題があります:.jpg
拡張子があり、500KiB(KiB = 1024バイト、一般にkibibyteと呼ばれる)、またはFTPサーバーフォルダー内のサイズ以上のすべてのファイルを検索する必要があります。
まず、マニュアルを開きますman find
。SYNOPSIS
スリムです。マニュアル内の項目を検索してみましょう。タイプ/と必要な単語(size
)を入力します。-size
特定のサイズをカウントする多くのエントリにインデックスを付けます。捕まってしまった。指定されたサイズを「以上」または「未満」で検索する方法がわからないので、男性はそれを私に見せません。
試してみて、を押して見つかった次のエントリを検索してみましょうn。OK。面白いものが見つかりました:find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
。たぶんこの例は-size +100M
、100MB以上のファイルを見つけることを示しています。どうすれば確認できますか?マンページの先頭に移動して、他の単語を検索します。
繰り返しますが、単語を試してみましょうgreater
。押すgと、マンページの先頭に移動します。/greater
、最初のエントリは次のとおりです。
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
いいね。マニュアルのこのブロックは、私たちが疑ったことを確認したようです。ただし、これはファイルサイズにのみ適用されません。これはn
、このマンページに記載されているものすべてに適用されます(「数値引数は次のように指定できます」というフレーズにあるとおり)。
良い。名前でフィルタリングする方法を見つけましょう:g /insensitive
。どうして?鈍感?WTF?私たちは、「そのほかのOS」人々はとしての拡張子を持つファイル名を与えることができる架空のftpサーバ、持っている.jpg
、.JPG
、を.JpG
。これにより、次のことが可能になります。
-ilname pattern
Like -lname, but the match is case insensitive. If the -L
option or the -follow option is in effect, this test returns
false unless the symbolic link is broken.
ただし、lname
検索すると、シンボリックリンクのみが検索されることがわかります。実際のファイルが必要です。次のエントリ:
-iname pattern
Like -name, but the match is case insensitive. For example, the
patterns `fo*' and `F??' match the file names `Foo', `FOO',
`foo', `fOo', etc. In these patterns, unlike filename expan‐
sion by the shell, an initial '.' can be matched by `*'. That
is, find -name *bar will match the file `.foobar'. Please note
that you should quote patterns as a matter of course, otherwise
the shell will expand any wildcard characters in them.
すばらしいです。この引数の大文字と小文字を区別しないバージョンであるかどうか-name
を確認する必要はありません-iname
。コマンドを組み立てましょう:
コマンド: find /ftp/dir/ -size +500k -iname "*.jpg"
ここで暗示されるのは、ワイルドカード?
が「単一の位置にある任意の文字」を*
表し、「任意の文字のゼロ個以上」を表すという知識。-name
パラメータは、あなたにこの知識の概要を提供します。
すべてのコマンドに適用されるヒント
いくつかのオプション、ニーモニック、および「構文スタイル」はすべてのコマンドを介して移動するため、マンページをまったく開かずに時間を節約できます。これらは実践によって学習され、最も一般的なものは次のとおりです。
- 一般的に、
-v
詳細を意味します。-vvv
一部のソフトウェアでは「非常に冗長」なバリエーションです。
- POSIX標準に従って、通常、1つのダッシュ引数をスタックできます。例:
tar -xzvf
、 cp -Rv
。
- 一般的に
-R
および/または-r
再帰を意味します。
- ほとんどすべてのコマンドには、
--help
オプションに関する簡単なヘルプがあります。
--version
ソフトウェアのバージョンを示します。
-p
、コピーまたは移動ユーティリティでは、「権限を保持する」ことを意味します。
-y
はい、またはほとんどの場合「確認なしで続行」を意味します。
ただし、上記は常に正しいとは限らないことに注意してください。たとえば、-r
スイッチはソフトウェアごとに非常に異なることを意味する場合があります。コマンドが危険になる可能性がある場合は常に確認して確認することをお勧めしますが、これらは一般的なデフォルトです。
コマンドのデフォルト値。
この答えのページャーチャンクで、それless -is
がのページャーであることがわかりましたman
。コマンドのデフォルトの動作は、マンページの別のセクションや、一番上にあるセクションに常に表示されるとは限りません。
デフォルトを見つけるにはオプションを読む必要があります。運が良ければ、入力/pager
するとその情報が表示されます。また、これはページャー(マンページをスクロールするソフトウェア)の概念を知っている必要があり、これは多くのマンページを読んだ後にのみ取得するものです。
なぜそれが重要なのですか?これにより、たとえばman(1)
Linux(less -is
pager)またはFreeBSD man(1)
での読み取り中にスクロールと色の動作に違いが見つかった場合、認識が広がります。
そして、SYNOPSIS
構文はどうですか?
コマンドの実行に必要なすべての情報を取得した後、オプション、オプション引数、およびオペランドをインラインで組み合わせて、ジョブを完了させることができます。概念の概要:
- オプションは、コマンドの動作を指示するスイッチです。「これを行う」「これをしない」または「このように行動する」。多くの場合、スイッチと呼ばれます。
- オプション引数は
-t
、ファイルシステムのタイプを指定するオプション(マウント時など)がバイナリ(オン/オフ)でない場合、ほとんどの場合に使用されます(-t iso9660
、-t ext2
)。「目を閉じてこれを行う」または「動物に餌をやるが、ライオンのみに餌をやる」。引数とも呼ばれます。
- オペランドは、そのコマンドに作用するものです。を使用する
cat file.txt
場合、オペランドは現在のディレクトリ内のファイルであり、その内容はに表示されSTDOUT
ます。ls
オペランドがオプションのコマンドです。オペランドの後の3つのドットcat
は、同時に複数のオペランド(ファイル)に作用できることを暗黙的に示しています。一部のコマンドでは、使用するオペランドのタイプが設定されていることに気付くかもしれません。例:cat [OPTION] [FILE]...
関連する概要:
この方法はいつ機能しませんか?
- 例のないマンページ
- オプションの簡単な説明があるマンページ
and
、to
などの汎用キーワードをfor
マンページ内で使用する場合
- インストールされていないマンページ。明らかなようですが、
lftp
(およびそのマンページ)をインストールしていない場合は、それがより洗練されたftpクライアントとして適切なオプションであることがわかりませんman -k ftp
場合によっては、例は非常に単純であり、テストするためにコマンドを実行する必要があります。最悪の場合は、Googleを実行する必要があります。
その他:プログラミング言語とそのモジュール:
プログラミングまたはスクリプトを作成する場合、一部の言語にはperl
(perldocs
)、python(pydocs
)などの独自のマンページシステムがあり、メソッド/関数、変数、動作、およびモジュールに関するその他の重要な情報に関する特定の情報を保持していることに注意してください使用して学習しようとしています。これは、perl Mail::IMAPClient
モジュールを使用して未読のIMAP電子メールをダウンロードするスクリプトを作成していたときに役立ちました。
man -k
オンラインで使用または検索して、これらの特定のマンページを把握する必要があります。例:
[root@host ~]# man -k doc | grep perl
perldoc (1) - Look up Perl documentation in Pod format
[root@host ~]# perldoc Mail::IMAPClient
IMAPCLIENT(1) User Contributed Perl Documentation IMAPCLIENT(1)
NAME
Mail::IMAPClient - An IMAP Client API
SYNOPSIS
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => ’localhost’,
User => ’username’,
Password => ’password’,
Ssl => 1,
Uid => 1,
);
...ここには、通常のマンページのようなセクションを持つ他の多くのものがあります...
Pythonの場合:
[root@host ~]# pydoc sys
Help on built-in module sys:
NAME
sys
FILE
(built-in)
MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html
DESCRIPTION
This module provides access to some objects used or maintained by the
interpreter and to functions that interact strongly with the interpreter.
...again, another full-featured manpage with interesting info...
または、help()
オブジェクトの詳細を読みたい場合は、Pythonシェル内の関数:
nwildner@host:~$ python3.6
Python 3.6.7 (default, Oct 21 2018, 08:08:16)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(round)
Help on built-in function round in module builtins:
round(...)
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
ボーナス:このwtf
コマンドは頭字語で役立ちます。whatis
データベースの頭字語が見つからないかのように機能しますが、検索対象はmanデータベースの一部です。Debianでは、このコマンドはbsdgames
パッケージの一部です。例:
nwildner@host:~$ wtf rtfm
RTFM: read the fine/fucking manual
nwildner@host:~$ wtf afaik
AFAIK: as far as I know
nwildner@host:~$ wtf afak
Gee... I don't know what afak means...
nwildner@host:~$ wtf tcp
tcp: tcp (7) - TCP protocol.
nwildner@host:~$ wtf systemd
systemd: systemd (1) - systemd system and service manager