Linuxコマンドの基礎

3.4.5 Linuxのコマンド(のごく一部)

Linux上で頻繁に用いるコマンドの一部を以下に示す。 使い方の詳細は man コマンド等で調べること。

1.   基本操作

コマンド 意味
ls [オプション] 現在のディレクトリのファイル一覧を表示する
    -l ファイルの属性等詳しい情報も表示
    -a '.'から始まる隠しファイルも表示
    -R サブディレクトリにあるファイルも再帰的に表示
rm [オプション] <ファイル名> ファイル削除
    -r 指定ディレクトリと、その下にあるファイル全てを再帰的に削除
cp <ソース(コピーしたいファイル)> <コピー先ファイル> ファイル・ディレクトリのコピー
mv <ソース> <移動先ファイル または ディレクトリ名> ファイル・ディレクトリの移動(名前変更)

2.   ディレクトリ関連

コマンド 意味
cd <directory 名> ディレクトリ移動(上に行くときは cd ..)
cd - 一つ前にいたディレクトリに移動
mkdir <directory 名> ディレクトリをつくる
rmdir <directory 名> ディレクトリを消す
pwd 現在いるディレクトリ名を表示

3.   ファイル閲覧・ファイルの情報取得

コマンド 意味
cat <ファイル名1> <ファイル名2> ... ファイルをつなげて標準出力に表示
less <ファイル名> ファイルの中身を表示
  ('f' or 'Space':次ページ, 'b':前ページ, 'q':終了, 'h':ヘルプ)
more <ファイル名> ファイルの中身を表示(最後まで表示すると自動的に終了する。終了以外はlessと同じ操作。)
tail [-<行数>]<ファイル名> ファイルの下から10行を表示
-20 下から20行を表示('-'に続いて行数を指定できる)
wc <ファイル名> ファイルの文字数、ワード数、行数 を表示
touch <ファイル名> ファイルのタイムスタンプを更新する。もし指定 した名前のファイルがなければ、大きさ0のファイルをつくる。
grep [-r] <キーワード> <ファイル名> 指定ファイルから、キーワードを 含む行を検索する。
    -r サブディレクトリ以下のファイルも再帰的に検索する。
sort <ファイル名> ファイルを行単位でソート(アルファベット順)した結果を出力する。
diff <ファイル1> <ファイル2> ファイル1とファイル2の違いを表示する

4.   プロセス管理(ps, top, kill)

Linux上では同時に様々なプログラム(ジョブ)が走っている。 現在走っている全てのジョブを知りたいときには、

$ ps aux

でわかる。自分が走らせてるジョブだけ知りたいときには単に ps で良い。(ps のオプションは、jman psで調べること。)


また、コマンドtopを使うと、CPU使用率やメモリ使用率でソートされた結果が表示される。(topコマンドの終了は'q', 使い方が分からな いときには'h'を押す。)


この、ps や top の出力を見ると、プロセスID(PID)という項目がある。 このように各ジョブにはそれぞれ識別番号がついている。あるジョブが暴走して 止まらなくなった時には、そのジョブのPIDを調べて、 以下を実行すれば、そのジョブを停止することができる。


$ kill <PID>

これでも停止しないときには、オプション-9をつける。 

$ kill -9 <PID>

ジョブの停止は top 画面上からも出来る. PIDを確認したら 'k' をタイプし、 続いてPIDを入力すればよい。

5.   ファイル圧縮(gzip, bzip2)

ハードディスクやフロッピー等の限られた容量内に、多くのファイルを置くため には、あまり使わないファイルは圧縮しておくとよい。 UNIXでよく使われる圧縮ツールには gzip や bzip2 がある。 圧縮率の高さでは bzip2 が定評があるが、gzip に比べて圧縮に時間がかかるの が欠点である。

コマンド 意味
gzip <ファイル名> 指定ファイルを圧縮する。(<ファイル名>.gz というファイルになる)
gunzip <ファイル名> 圧縮されているファイル(*.gz)をもとに戻す。
bp2 <ファイル名> 指定ファイルを圧縮する。(<ファイル名>.bz2 というファイルになる)
bunzip2 <ファイル名> 圧縮されているファイル(*.bz2)をもとに戻す。


圧縮されていても、ドキュメントファイルは less コマンドで中を見ることがで きる。
個々のファイルではなく、ディレクトリごとgzipで圧縮するには以下のようにする。


$ tar czvf <ディレクトリ名>.tar.gz <ディレクトリ名>


これにより、指定ディレクトリを圧縮した、<ディレクトリ名>.tar.gz という一つの圧縮 
ファイルができる。
bzip2 を用いる場合には、

$ tar Izvf <ディレクトリ名>.tar.gz <ディレクトリ名>

とすれば良い。
もとに戻すには、以下を実行する。

$ tar xzvf <tar.gz ファイル or tar.bz2 ファイル>

また、もとに戻さず単にtar.gzファイルの中にどのようなファイルが含まれてい るか知りたいときには、 


$ tar tzvf <tar.gz ファイル or tar.bz2 ファイル>

とする。

なお、Vine Linux では、ディレクトリの圧縮のために、gzipdir, bzip2dirとい うコマンドも用意されている。


$ gzipdir <ディレクトリ名>
$ bzip2dir <ディレクトリ名>

6.   ネットワーク関連のコマンド

コマンド 意味
ping <IPアドレス or ホスト名> 指定したホストとネットワークで接続され ているかを確認
finger @<IPアドレス or ホスト名> 指定したホストに誰がログインしてい るかを確認
finger <ユーザ名>@<IPアドレス or ホスト名> 指定したホストに指定ユー ザがログインしているかを確認
chfn finger で表示される自分に関する情報を変更する
ssh <IPアドレス or ホスト名> 指定したホストにログイン(通信は暗号化)
ssh <ユーザ名>@<IPアドレス or ホスト名> 指定したホストに指定ユーザ名でログイン(通信は暗号化)
scp <IPアドレス or ホスト名>:<ファイル> <ファイル名> 指定したホストのファイルを、指定ファイル名でコピー(通信は暗号化)
rsh <IPアドレス or ホスト名> 指定したホストにログイン
rsh -l <ユーザ名> <IPアドレス or ホスト名> 指定したホストに指定ユーザ名でログイン
rcp <IPアドレス or ホスト名>:<ファイル> <ファイル名> 指定したホストのファイルを、指定ファイル名でコピー

あるマシンの動作がおかしくなったなどに、そのマシンがネットワークにつながっ ているかを確認するには、ping コマンドを用います。

$ ping venus
PING venus.hogehoge.ac.jp (133.62.236.100) from 133.62.236.98 : 56(84) bytes of data.
64 bytes from venus.hogehoge.ac.jp (133.62.236.100): icmp_seq=0 ttl=255 time=0.4 ms
64 bytes from venus.hogehoge.ac.jp (133.62.236.100):
icmp_seq=1 ttl=255 time=0.3 ms


-- venus.hogehoge.ac.jp ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.3/0.3/0.4 ms

上の例では、venus.hogehoge.ac.jp ネットワークにつながっていることがわか ります。

あるホストに誰がログインしているか確認するには、finger コマンドを用いま す。


$ finger @venus.hogehoge.ac.jp
Login     Name       Tty   Idle  Login Time   Office     Office Phone
chaplin   C. Chaplin  p1      1d  Aug  8 22:43 (:0.0)    001-01-234-5678
monroe                p1      27  Aug 10 10:54 (:0.0)
 

上の例では venus.hogehoge.ac.jp に ログイン名 chaplin がAug 8 にログイン しているが、 一日マシンを操作した形跡(Idle 1d)がないこと、 ログイン名 monroe は Aug 10 にログインして、27 分前まで操作していたこと がわかります。 また、chaplin の名前は C. Chaplin, 電話は 001-01-234-5678 であることも わかります。一方 monroe のほうは、名前も電話もわかりません。

ログイン名を指定することによって、さらに詳しい情報を入手することもできま す。


$ finger chaplin@venus.hogehoge.ac.jp
[venus.hogehoge.ac.jp]
Login: chaplin                          Name: C. Chaplin
Directory: /home/chaplin                Shell: /bin/bash2
Office: Chaplin organization
On since Tue Aug  8 22:43 (JST) on ttyp1 from :0.0
   1 day 13 hours idle
No mail.
Project:
zzz... zzz... zzz.......
Plan:
I'm sleeping day and night.

このように表示される自分の名前、Office 名、電話番号はコマンドchfn を実行すると変更できます。 また、Plan や Project として表示されるメッセージは、それぞれ "/.plan", "/.project"というファイルに書き込んでおけば、 表示されます。

ネットワークにつながっているマシンにログインして、さまざまな操作を行うには、ssh や rsh がよく使われます。ただし、ssh による通信は暗号化されますが、rsh での通信はパスワードも含め暗号化されないので、通信内容を盗聴されるとすぐにパスワードが漏洩してしまい危険です。一方 ssh は対応しているホスト がまだ少ないのが欠点ですが、できるかぎり ssh を使うようにしましょう。

以下の例は ssh で venus.hogehoge.ac.jp に接続した例です。


$ ssh jun@venus.hogehoge.ac.jp
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes



このように、あるホストに始めてsshで接続するときには、 "そのホストには接続したことがないけど、本当に接続しますか?" と質問がありますが、"yes"と答えると以下のようにログインを行えます。

Host 'venus' added to the list of known hosts.
jun@venus's password: 
Last login: Thu Aug 10 11:47:30 2000 from muse.hogehoge.ac.jp

リモートホストにあるファイルを自分が操作しているローカルホスト上にコピー したい時には、scp を用います。


$ scp venus.hogehoge.ac.jp:doc/memo .


上の例は、venus.hogehoge.ac.jp 上の  /doc/memo を手元にコピーするための コマンドです。指定ファイル名には、ワイルドカード(後述)も使えます。

7.   その他

コマンド 意味
man <コマンド> システムにインストールされてるコマンドの説明表示
jman <コマンド> man と同じだが、可能な限り日本語で表示される
  例) $ jman ls
df ディスク使用量を知る。