「小ネタ」の編集履歴(バックアップ)一覧に戻る

小ネタ - (2010/09/16 (木) 11:54:15) のソース

** ファイルパスからファイル名だけを取り出す
>$ basename /home/test/package/test.sh
>test.sh

** 不要なファイルを除いてtarコマンドでアーカイブする
 tarでディレクトリ配下をまとめてアーカイブする際に、特定のファイル/ディレクトリを除いてアーカイブするには以下のようにする。
 tar zcvf filename.tar.gz ./dirname --exclude ".svn"
 ライブラリ管理にSubversionを使っているが、チェックアウト時に.svnというディレクトリが作れてしまい、チェックアウトしたファイルだけをtarでアーカイブしたいのに、この.svnまでアーカイブされて困っていた。上記のように --exclude オプションの後に除外したいファイル名(.svn)を書くと、該当のファイルやディレクトリを除外してくれる。
 複数のファイル名を除外したい場合は、以下のように --exclude を複数書くか 「--exclude-from 除外ファイル名リストファイル」を使うとできます。
 tar zcvf filename.tar.gz ./dirname --exclude ".svn" --exclude "test"
または
 tar zcvf filename.tar.gz ./dirname --exclude-from exclude-list-file
   exclude-list-file内は、除外するファイル名を改行して書きならべる


** 乱数を使う
 bash専用だが、&bold(){&color(red){RANDOM}}という、毎回0〜32767 までのランダムな整数を返すシェル変数がある。
>$ echo $RANDOM
>4158

 X〜(Y-1)の範囲の乱数が必要な場合は、'$RANDOM % (Y-X) + X'で生成できます。例えば100〜200の
>$ echo $(( $RANDOM % 101 + 100 ))
>195

 shでも使える乱数としては、/dev/random、/dev/urandomがあります。
 以下のサイトが参考になります。
 [[http://www.cyberciti.biz/faq/bash-shell-script-generating-random-numbers/]]

** マウントせずにISOイメージ内を見る
>$ isoinfo -l -i pclinuxos-2009.1-jp.iso   <ーー -l により、'ls -lR'の出力結果が見える。

** awkを使って指定ファイルの合計サイズを求める
 $ ls -l /var/log/syslog.* | awk '{i+=$5}END{print i}'
 692654
 $ ls -l /var/log/syslog.*
 -rw-r----- 1 syslog adm 355144 2010-06-26 08:54 /var/log/syslog.1
 -rw-r----- 1 syslog adm  21054 2010-06-25 01:01 /var/log/syslog.2.gz
 -rw-r----- 1 syslog adm  21030 2010-06-23 20:05 /var/log/syslog.3.gz
 -rw-r----- 1 syslog adm  39582 2010-06-22 23:51 /var/log/syslog.4.gz
 -rw-r----- 1 syslog adm 116482 2010-06-21 23:26 /var/log/syslog.5.gz
 -rw-r----- 1 syslog adm  79329 2010-06-20 08:43 /var/log/syslog.6.gz
 -rw-r----- 1 syslog adm  60033 2010-06-19 09:33 /var/log/syslog.7.gz


----
#comment()

----