2.2 レッスン 1
Certificate: |
Linux Essentials |
---|---|
Version: |
1.6 |
Topic: |
2 Linuxでのやり方を見つける |
Objective: |
2.2 コマンドラインでヘルプを見る |
Lesson: |
1 of 1 |
はじめに
コマンドラインは、非常に複雑なツールです。コマンドにはそれぞれ独自のオプションがあるので、Linuxシステムで作業する場合はドキュメントが重要です。多くのドキュメントが保存されている /usr/share/doc/
ディレクトリの他にも、さまざまなツールがLinuxコマンドの利用に関する情報を提供しています。このレッスンでは、ヘルプを見るために、さまざまなドキュメントにアクセスする方法を説明します。
Linuxコマンドラインでヘルプを参照するには、 man
、 help
、 info
などのコマンドをはじめ、さまざまな方法があります。Linux Essentialsの場合、 man
コマンドと info
コマンドがヘルプを取得するために最も一般的に使用するツールであるため、これらに焦点を当てます。
この章のもう一つのトピックは、ファイルの検索です。主に locate
コマンドを使います。
コマンドラインでヘルプを見る
組み込まれたヘルプ
ほとんどのコマンドは、--help
オプションを最初に指定すると、コマンドの使用方法に関する簡単な説明を表示します。すべてのコマンドがこのオプションを提供しているわけではありませんが、コマンドのパラメーターについて学ぶための最初のステップとして適当です。--help
による説明は、このレッスンの残りの部分で説明する他のドキュメントの内容に比較して、かなり簡略化されていることに注意しましょう。
Man(マン)ページ
ほとんどのコマンドは、man(マン)ページと呼ばれるマニュアルを提供しています。このドキュメントは通常、ソフトウェアと共にインストールされ、 man
コマンドでアクセスできます。 manページを表示したいコマンド名を、 man
コマンドの引数に指定します。
$ man mkdir
このコマンドは、 mkdir
コマンドのmanページを開きます。上下の矢印キーまたはスペースキーを使用して、manページを移動できます。manページを終了するには、 Q を押します。
それぞれのmanページは、最大で11のセクションに分かれていますが、これらのセクションの多くは必須ではありません。
セクション | 説明 |
---|---|
NAME(名前) |
コマンド名と概要 |
SYNOPSIS(要約) |
コマンド書式の説明 |
DESCRIPTION(説明) |
コマンドの効用(動作内容)の説明 |
OPTIONS(オプション) |
使用可能なオプション |
ARGUMENTS(引数) |
使用可能な引数 |
FILES(ファイル) |
関連するファイル |
EXAMPLES(例) |
コマンドラインでの使用例 |
SEE ALSO(参考) |
関連するトピックへの参照 |
DIAGNOSTICS(診断) |
警告やエラーメッセージ |
COPYRIGHT(著作者) |
コマンドの作者 |
BUGS(バグ) |
既知のバグや制限 |
実際の所、ほとんどmanページにすべての項目が含まれているわけではありません。
manページは、主に1〜8の8つのカテゴリー(セクション)に分類されています。
セクション番号 | 説明 |
---|---|
1 |
一般ユーザー用のコマンド |
2 |
システムコール |
3 |
C言語ライブラリの関数 |
4 |
デバイスなどの特殊ファイル |
5 |
設定ファイルとその書式 |
6 |
ゲーム |
7 |
その他の内容 |
8 |
システム管理者用のコマンド |
9 |
カーネル関数(非標準) |
それぞれのmanページは、1つのセクションに属します。ただし、複数のセクションに同じ名前のmanページが存在することがあります。例として passwd
コマンドを見てみましょう。このコマンドを使用すると、ユーザーのパスワードを変更できます。 passwd
は一般ユーザー用のコマンドなので、そのmanページはセクション1にあります。 passwd
コマンドに加えて、パスワードデータベースファイル /etc/passwd
にも passwd
という名前のmanページがあります。このファイルは設定ファイルであるため、セクション5に属します。manページを参照する場合、それぞれのmanページを区別するために、 passwd(1)
や passwd(5)
のように、カテゴリをmanページの名前の後に追記します。
デフォルトでは、 man passwd
は利用できる最初のmanページを表示します。この場合は passwd(1)
です。見たいmanページのカテゴリを、 man 1 passwd
や man 5 passwd
のようにコマンドで指定できます。
manページをナビゲートする方法とコマンドラインに戻る方法をすでに説明しました。内部的に、man
は less
コマンドを使用して、manページの内容を表示します。 less
を使用すると、manページ内のテキストを検索できます。 linux
という単語を検索するには、ページ上の現在の位置から /linux
で前方検索するか、 ?linux
で後方検索を開始します。この操作で、一致するすべての結果が強調表示され、最初に強調表示された箇所にページが移動します。どちらの場合も、Nを入力して次の一致箇所にジャンプできます。これらの機能に関する詳細情報を見るには、Hを押してすべての情報を含むメニューを表示します。
Infoページ
Linuxシステムでの作業中に役立つもう1つのツールは、infoページです。infoページは通常、manページよりも詳細で、インターネット上のWebページと同様にハイパーテキストで編成されています。
以下の方法で、infoページを表示できます:
$ info mkdir
infoコマンドは、それぞれのノードを木構造に構造化した、infoページごとのファイルを読み取ります。各ノードには単純なトピックが含まれており、infoコマンドはあるノードから別のノードに移動するためのハイパーリンクを処理します。行頭のアスタリスクの1つにカーソルを置いてEnterキーを押すと、リンク先にアクセスできます。
man
と同様に、info
ツールにもページナビゲーションコマンドがあります。infoページで ? を押すと、これらのコマンドの詳細を確認できます。ページをナビゲートするだけではなく、ノードにアクセスしたり、ノードツリー内を移動するツールが備えられています。
/usr/share/doc/
ディレクトリ
前に述べたように、 /usr/share/doc/
ディレクトリに、システムが使用しているコマンドのほとんどのドキュメントが保存されています。このディレクトリには、システムにインストールされているほとんどのパッケージ毎のディレクトリが含まれています。通常、ディレクトリの名前はパッケージの名前と同じであり、そのバージョンが含まれていることもあります。それぞれのディレクトリには、パッケージの最も基本的なドキュメントである README
または readme.txt
ファイルが含まれています。フォルダーには、 README
ファイルだけでなく、プログラムの詳細な更新履歴を含むcangelogや、パッケージの構成ファイル例などのドキュメントファイルが含まれていることもあります。
README
ファイルの内容はパッケージごとに異なります。すべてのファイルはプレーンテキストで書かれているので、好みのテキストエディターで読み取ることができます。ファイルの数や種類は、パッケージによって異なります。いくつかのディレクトリをチェックして、それらの内容を概観しておきましょう。
ファイルを探す
locate
コマンド
Linuxシステムは、多数のディレクトリとファイルから構築されています。 Linuxには、システムから特定のファイルを見つけるための多くのツールがあります。最も速いのは locate
コマンドです。
locate
はデータベースを検索して、指定の文字列に一致するすべての名前を出力します。
$ locate note /lib/udev/keymaps/zepto-znote /usr/bin/zipnote /usr/share/doc/initramfs-tools/maintainer-notes.html /usr/share/man/man1/zipnote.1.gz
locate
コマンドはワイルドカードと正規表現をサポートしているので、検索文字列が目的のファイル名全体と一致する必要はありません。正規表現の詳細については後の章で説明します。
デフォルトでは、 locate
はパターンがアスタリスクで囲まれているように動作するため、locate パターン
は locate *PATTERN*
と同じです。つまり、正確なファイル名ではなく、部分文字列を指定するだけで済みます。この動作は、 locate
のmanページで説明されているさまざまなオプションで変更できます。
locate
は(ファイル名のリストを)データベースから読み込んでいるため、作成したばかりのファイルが見つからないことがあります。データベースは updatedb
という名前のプログラムによって管理されています。通常は定期的に実行されますが、データベースを直ちに更新する必要がある場合は、root権限が必要ですが updatedb
コマンドをいつでも実行できます。
find
コマンド
find
コマンドも、ファイルの検索に使用される非常に人気のあるツールです。 find
コマンドは、 locate
コマンドとは異なり、サブディレクトリを含むディレクトリツリーを再帰的に検索します。 find
は実行のたびにそのような検索を行い、 locate
のようなデータベースを使いません。 locate
と同様に、 find
もワイルドカードと正規表現をサポートしています。
find
では、検索の起点となるパスを指定します。さらに、表示するファイルのフィルター条件を、式を使って指定できます。たとえば、 -name
式は指定した名前のファイルを検索します。
~$ cd Downloads ~/Downloads $ find . -name thesis.pdf ./thesis.pdf ~/Downloads $ find ~ -name thesis.pdf /home/carol/Downloads/thesis.pdf
最初の find
コマンドは現在の Downloads
ディレクトリ内のファイルを検索し、2番目のコマンドはユーザーのホームディレクトリ内のファイルを検索します。
find
コマンドは非常に複雑であるため、Linux Essentials試験では取り上げませんが、現場では特に便利で強力なツールです。
演習
-
man
コマンドを使って、以下のコマンドのドキュメントを参照してみましょう:コマンド 説明 ls
ディレクトリの中身をリスト表示する
cat
cut
cd
cp
mv
mkdir
touch
wc
passwd
rm
rmdir
more
less
whereis
head
tail
sort
tr
chmod
grep
-
ls
のinfoページを開いて、メニューを表示しましょう。-
どのようなオプションがありますか?
-
更新時刻で並び替えるオプションは何ですか?
-
-
man
コマンドでlocate
コマンドオプションを調べて、最初の3つのREADME
ファイルのみを表示してみましょう。 -
ホームディレクトリに
test
と言うファイルを作成しましょう。locate
コマンドで、その絶対パスを表示しましょう。 -
すぐに表示できましたか?
locate
コマンドで見つかるようにするには、何をすればよいですか? -
find
コマンドを使って、先ほど作った testファイルを探してみましょう。どのような書式が必要でしょうか? また、絶対パスは何でしたか?
発展演習
-
実は、上記の表(manページを参照する問題)には、
man
ページがないコマンドが1つだけあります。それがどれで、なぜマニュアルがないと考えますか? -
上記の表を見ながら、次に示すファイル構造を作ってみましょう。大文字で始まる名前はディレクトリで、小文字で始まる名前はファイルとします。
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
-
サブディレクトリを含めて、現在の作業ディレクトリ以下を画面に表示してみましょう。
-
木構造から、名前が数字で終わるファイルをすべて探してみましょう。
-
1つのコマンドでディレクトリ全体を削除するにはどうしますか?
まとめ
このレッスンでは、以下の事柄を学習しました:
-
ヘルプの見方
-
man
コマンドの使い方 -
man
コマンドの操作方法 -
man
ページにおけるセクションの相違 -
info
コマンドの使い方 -
ノード間を行き来する方法
-
システムからファイルを探す方法
演習で使用したコマンド:
man
-
manページを表示する。
info
-
infoページを表示する。
locate
-
指定した名前を持つファイルを、
locate
データベースから検索する。 find
-
一連の選択要件に一致する名前を、ファイルシステムから検索する。
updatedb
-
locate
データベースを更新する。
演習の解答
-
man
コマンドを使って、以下のコマンドのドキュメントを参照してみましょう:コマンド 説明 ls
ディレクトリの中身をリスト表示する
cat
テキストファイルを連結して出力する
cut
テキストファイルから選択部分を取り除く
cd
作業ディレクトリを変更する
cp
ファイルをコピーする
mv
ファイルを移動する(名前の変更にも用いる)
mkdir
新しいディレクトリを作成する
touch
ファイルを作成する、ないしは、既存のファイルの更新時刻を変更する
wc
ファイルのワード数、行数、文字数をカウントする
passwd
ユーザーのパスワードを変更する
rm
ファイルを削除する
rmdir
ディレクトリを削除する
more
テキストファイルを1画面ずつ表示する
less
テキストファイルを表示し、行ないしページ単位で上下にスクロールする
whereis
指定したプログラムとそのマニュアルのパスを表示する
head
ファイルの最初の数行を表示する
tail
ファイルの最後の数行を表示する
sort
ファイルを数値順ないしアルファベット順に並べ替える
tr
ファイルの文字を変換する、ないしは削除する
chmod
ファイルのパーミッションを変更する
grep
ファイルの内容を検索する
-
ls
のinfoページを開いて、メニューを表示しましょう。-
どのようなオプションがありますか?
-
どのファイルをリストするか
-
何の情報をリストするか
-
出力順の並び替え
-
バージョンによる並び替え
-
出力の書式
-
ファイルのタイムスタンプの出力形式
-
ファイル名の出力形式F
-
-
更新時刻で並び替えるオプションは何ですか?
-t
ないし--sort=time
-
-
man
コマンドでlocate
コマンドオプションを調べて、最初の3つのREADME
ファイルのみを表示してみましょう。$ locate -l 3 README /etc/alternatives/README /etc/init.d/README /etc/rc0.d/README
-
ホームディレクトリに
test
と言うファイルを作成しましょう。locate
コマンドで、その絶対パスを表示してみましょう。$ touch test $ locate test /home/user/test
-
すぐに表示できましたか?
locate
コマンドで見つかるようにするには、何をすればよいですか?$ sudo updatedb
作成されたばかりのファイルは、データベースに記録されていません。
-
find
コマンドを使って、先ほど作った testファイルを探してみましょう。どのような書式が必要でしょうか? また、絶対パスは何でしたか?$ find ~ -name test
または
$ find . -name test /home/user/test
発展演習の解答
-
実は、上記の表(manページを参照する問題)には、
man
ページがないコマンドが1つだけあります。それがどれで、なぜマニュアルがないと考えますか?cd
コマンドです。このコマンドは、シェルの組み込みコマンドなので、manページがありません。 -
上記の表を見ながら、次に示すファイル構造を作ってみましょう。大文字で始まる名前はディレクトリで、小文字で始まる名前はファイルとします。
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
mkdir
コマンドとtouch
コマンドを使って行います。 -
サブディレクトリを含めて、現在の作業ディレクトリ以下を画面に表示してみましょう。
$ ls -R
-
木構造から、名前が数字で終わるファイルをすべて探してみましょう。
$ find ~ -name "*[0-9]" $ locate "*[0-9]"
-
1つのコマンドでディレクトリ全体を削除するにはどうしますか?
$ rm -r Documents Downloads Test test