2010年11月7日日曜日

今更聞けないUNIXコマンド (1)

shellの操作も実は素人なもので、覚えたものを随時書いて行きます。

リンク作成

リンクにはディスク内の同じ領域を指し示す「ハードリンク」と元のファイルのパスを記憶する「シンボリックリング」があります。

シンボリックリンクの作成は

ln -s hoge.txt tmp/hoge_sl.txt

のようにlnコマンドに-sオプションをつけて、リンク先、リンク元の順に記述で作成。
注意点としては、相対パスで記述する場合、リンクファイルからの相対パスでできること。
絶対パスで記述すればこういった心配はありませんが...

ハードリンクの場合はオプションをつけずに

ln hoge.txt tmp/hoge_hl.txt

のように記述。

圧縮、解凍

ファイル圧縮
$ gzip test.txt
$ ls
drwxr-xr-x   7 tatsuaki  staff   238 11  7 14:25 .
drwxr-xr-x+ 39 tatsuaki  staff  1326 11  6 11:19 ..
-rw-r--r--@  1 tatsuaki  staff  6148 11  1 23:36 .DS_Store
-rw-r--r--   1 tatsuaki  staff    37 10 11 19:20 test.txt.gz

gzipファイル解凍
gunzip test.txt.gz

これらはファイルに対しての圧縮。
次はアーカイブに対しての圧縮。


圧縮アーカイブ作成
$ tar cvzf test.tgz test
a test
a test/.test.txt.swp

今度は中身を見る
tar tvzf test.tgz

そして展開
tar xvzf test.tgz

ディレクトリを指定したいなら
tar xvzf test.tgz -C tmp/

のように-Cオプション+展開先を指定できます。

ファイル検索

findコマンド
find Documents -name test -type f
Documentsフォルダ内から、名前がtestを探す。-type fでファイルだけを対象にする。

その他オプションは

  • -type:  d (ディレクトリ) f (ファイル) l (シンボリックリンク) 等
  • -mtime N : 最終修正日 +NでN日前より前, -NでN日前より後 
  • -mmin N : N分
  • -size : +-で以上以下
  • -user : ファイルオーナー指定
  • -empty : 空ファイルを探す

-execコマンド
$ find ~ -name *.txt -exec ls -lh {} \;
-rw-r--r--  1 tatsuaki  staff   134B 10 22 16:19 /Users/tatsuaki/test.txt

こんな感じで、-exec コマンド {} ¥;とするとfind結果を引数にしてコマンドできる。
上記例はtxtファイルを探して、それはls -lhしたもの。

lacateコマンド

findは検索に時間がかかるので、あらかじめ全てのファイル/ディレクトリのパスを
登録したlacateコマンドデータベースがあって、そこから検索するほうが早いらしい。

まずはこれを使うためにデータベースを更新。

$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
com.apple.locate: Already loaded
と思ったらすでに更新済み。手動でやるなら
sudo /usr/libexec/locate.updatedb
結構時間かかる…

しかし検索は激速

とりあえず一回目はこんな感じで。
おさらい

  • ln : リンク作成
  • tar : アーカイブ圧縮(cvzf)、解凍(xvzf)コマンド。中身はtvzfで閲覧
  • find : 検索。-execオプションで他のコマンドと組み合わせて便利
  • locate : 専用データベースから検策

0 件のコメント:

コメントを投稿