基礎からのLinuxを読みなおしてみた(1)
概要
卒研の論文提出の締切が迫ってきて、いつもの現実逃避癖が発動、何年か前に買って少ししか読んでいなかった"基礎からのLinux"を読破することに決め、読み進めてみて、今までなんとなく使っていたコマンドの意味や知らなかったオプションの再発見などがいろいろあって勉強になったので、メモることにした。
知らなかった忘れていた オプション・コマンド
- cp -i,-pオプション
- rm -i,-vオプション
- mkdir ,rmdir -pオプション
- ls -i,-F,-t,-rオプション
- stat コマンド
- file コマンド
- free コマンド
- du コマンド
- df コマンド
- whatis コマンド
確認環境(OSのみ)
- CentOS release 5.5 (Final)
基本操作系
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 番号) をファイル名の出力の前に置く。
- -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
$ 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
のように。
まとめ
本当はもっと一杯あったのだが、記事を書くのに疲れてきたので、シリーズ化にしようと思い、ここで断念。次回はアーカイブ・圧縮・解凍、検索系あたりかな。
でも、昔読んだ入門書をもう一度サラッとおさらいするっていうのもいい勉強になると感じた。当時は理解できずに"おまじない"・"呪文"だとスルーしていたことも、読み返してみると意外と簡単に理解できるようになってスラスラと読めるので、そんなに苦じゃないし、楽しい。ひたすらインプットしていたい。