基礎からのLinuxを読みなおしてみた(1)

概要





卒研の論文提出の締切が迫ってきて、いつもの現実逃避癖が発動、何年か前に買って少ししか読んでいなかった"基礎からのLinux"を読破することに決め、読み進めてみて、今までなんとなく使っていたコマンドの意味や知らなかったオプションの再発見などがいろいろあって勉強になったので、メモることにした。



知らなかった忘れていた オプション・コマンド

  • cp -i,-pオプション
  • rm -i,-vオプション
  • mkdir ,rmdir -pオプション
  • ls -i,-F,-t,-rオプション
  • stat コマンド
  • file コマンド
  • free コマンド
  • du コマンド
  • df コマンド
  • whatis コマンド



確認環境(OSのみ)

基本操作系

cp -i,-pオプション

-i
コピー先に既に存在するファイルを上書きするかを問い合わせてくる。 (問い合わせは標準エラーに書かれ、返答は標準入力から読まれる。上書きを肯定する返答があった場合のみコピーされる。)
$ ls
a.txt  b.txt

こんな感じのディレクトリ内で作業。

$ cp -i a.txt b.txt
cp: `b.txt' を上書きしてもよろしいですか(yes/no)?

安心コピーができる。

-p
オリジナルファイルの所有者・グループ・アクセス権・アクセス時刻を保存する (以下の --preserve を参照)。
$ ls -l
合計 0
-rw-rw-r-- 1 root      kshi 0  1月 20 01:10 a.txt

作業ディレクトリ内。

$ cp -p a.txt copy.txt
$ ls -l
合計 0
-rw-rw-r-- 1 root      kshi 0  1月 20 01:10 a.txt
-rw-rw-r-- 1 kshi      kshi 0  1月 20 01:10 copy.txt

一般ユーザkshiで-pを指定してcopyしてみてもroot所有者の情報は引き継げない。

$ sudo -p a.txt copy.txt
$ ls -l
合計 0
-rw-rw-r-- 1 root kshi 0  1月 20 01:10 a.txt
-rw-rw-r-- 1 root kshi 0  1月 20 01:10 copy.txt

root権限で実行すればOK。このように、-pオプションを実行するときはコマンドを実行するユーザがどんな権限を持っているのか注意を払う必要がある。


rm -i,-vオプション

-i
削除の確認の問い合わせをする。 (-f と -i が両方とも指定された場合、後から指定された方のオプションが有効になる。)
-v
削除する前にそれぞれのファイル名を出力する。
$ rm -iv a.txt
rm: remove 通常の空ファイル `a.txt'? y
removed `a.txt'


mkdir,rmdir -pオプション

-p
引き数に指定した各々の directory で、存在しない親ディレクトリも含めて作成する。作成された親ディレクトリのアクセス権は、 umask の値に ‘u+wx’ としたものが設定される。すでに存在するディレクトリに対応する引き数は無視される。 (従って、ディレクトリ /a が存在する場合に ‘mkdir /a’ とするとエラーとなるが、 ‘mkdir -p /a’ とするとエラーにならない。)
$ tree
.

0 directories, 0 files

空のディレクトリ。

$ mkdir -p a/b/c/d/f

ディレクトリを一気に作成

$ tree
.
`-- a
    `-- b
        `-- c
            `-- d
                `-- f

5 directories, 0 files

ディレクトリまとめて作成される。

$ rmdir -p a/b/c/d/f

次は消す作業。

$ tree
.

0 directories, 0 files

消えた。


要はまとめてディレクトリを作ってくれる。rmdirはrmでなんとかなるから使ってないけど、このオプションは便利なのに、いつも忘れてしまう。



ファイル情報取得系

ls -i,-F,-t,-rオプション

-i
ファイルのシリアル番号 (i-node 番号) をファイル名の出力の前に置く。
-F
ディレクトリ名の後に ‘/’ を、FIFO の名前の後に ‘|’ を、実行可能なファイル名の後に‘*’ をそれぞれ付加する。
-t
表示されるタイムスタンプでソートする。
-r
ソートの順序を逆にする。
$ ls -lt

で更新が新しい順に表示.

$ ls -ltr

で更新が古い順に表示。


stat : display file or file system status

$ stat library/
  File: `library/'
  Size: 4096            Blocks: 8          IO Block: 4096   ディレクトリ
Device: fd00h/64768d    Inode: 11567274    Links: 4
Access: (0775/drwxrwxr-x)  Uid: (  500/koshikawa)   Gid: (  500/koshikawa)
Access: 2011-01-20 01:01:38.000000000 +0900
Modify: 2011-01-18 02:57:28.000000000 +0900
Change: 2011-01-18 02:57:28.000000000 +0900

指定したファイル・ディレクトリの詳しい情報を取得できる。


file : ファイルタイプを判定する


$ file library/
library/: directory

ディレクト

$ file get_aspect.py
get_aspect.py: a /usr/local/bin/python script text executable

Pythonスクリプト

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

コマンドの情報


ハードに関わる情報取得系

free : システムの空きメモリと利用メモリの量を表示する

$ free
             total       used       free     shared    buffers     cached
Mem:        991408     956620      34788          0     117896     510280
-/+ buffers/cache:     328444     662964
Swap:      1998840          0    1998840

現在のメモリーの情報をさらっと確認できる。スペックが知りたいときは`/proc/meminfo`を見ればいいが、今現在のメモリー状態をサクっと知りたいときに便利なのかな。


du : ファイルのディスク使用量を見積もる

$ du -ah
4.0K    ./CaboChaData.py
4.0K    ./MeCabFeature.pyc
4.0K    ./.svn/tmp/text-base
4.0K    ./.svn/tmp/prop-base
4.0K    ./.svn/tmp/props
16K     ./.svn/tmp
...略...
-a
ディレクトリだけでなく、全てのファイルについて容量を表示する。
-h
それぞれのサイズに、例えばメガバイトなら M のようなサイズ文字を付加する。 10 の累乗ではなく 2 の累乗を用いるので、 M は 1,048,576バイトを表す。

基本はディレクトリの容量のみ表示する。


df : ファイルシステムのディスク容量の使用状況を表示する

$ df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup01-LogVol00
                       71G  5.5G   62G   9% /
/dev/sda1              99M   18M   76M  20% /boot
tmpfs                 485M     0  485M   0% /dev/shm


その他

whatis : データベースから完全な単語を検索する

$ whatis ls
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents

使い道はmanを用いる前にどのくらいコマンドの説明があるか確認するくらいしか思いつかない。

$ man 1p ls

のように。



まとめ


本当はもっと一杯あったのだが、記事を書くのに疲れてきたので、シリーズ化にしようと思い、ここで断念。次回はアーカイブ・圧縮・解凍、検索系あたりかな。
でも、昔読んだ入門書をもう一度サラッとおさらいするっていうのもいい勉強になると感じた。当時は理解できずに"おまじない"・"呪文"だとスルーしていたことも、読み返してみると意外と簡単に理解できるようになってスラスラと読めるので、そんなに苦じゃないし、楽しい。ひたすらインプットしていたい。