bash
#!/bin/sh DIR=$1 DLIST=`find $DIR -type d` for D in $DLIST; do COUNT=`find $D -maxdepth 1 -iname "*.csv"|wc -l` if [ "$COUNT" -gt 0 ]; then echo $D:$COUNT fi done
ApacheでPHPスクリプト起動してるけど、モジュール版なら大丈夫っぽい。 Apacheの設定 AddHandler cgi-script .cgi AddHandler php5-script .php.cgi は環境変数を全部もらえるので、bash(system関数)呼出時に今回の脆弱性に引っかかる。 .php はsystem関数…
@echo off set PATH=D:\cygwin\bin;%PATH% set Password=hogehoge set OutputFolder=D:\MyDoc\download set InputFile=%1 set OutputFile=%OutputFolder%\%~n1 bash -c 'echo %Password% | gpg --batch --yes --passphrase-fd 0 -o %OutputFile% %InputFile%'
コマンドhogeが、実行できるかどうかをチェックする つまり、実行ファイルか エイリアスか 関数か を判定する hogeが実行ファイルかどうかを判定する $ which hoge /usr/local/bin/hogewhichコマンドでチェックする。 成功すれば、何が実行されるかパスを表…
IFS='=' read A B < /tmp/piyo.txt echo $A=$B http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html
A=$(printf "%.23s" "$(date +'%Y-%m-%d %H:%M:%S.%N')") http://d.hatena.ne.jp/iww/20120616/date
標準エラー出力を赤く表示するコマンド bash: print stderr in red color - Server Fault ここの color というコマンドがスーパー超便利 コード .bashrcにでも書いとく color() { set -o pipefail; "$@" 2>&1>&3|sed $'s,.*,\e[31m&\e[m,'>&2; } 3>&1 使い方…
今使用中のシェルを調べる方法。 ログインシェルではなく、そのスクリプトを実行するときに使われてるシェルを知りたい。 とりあえず、シェバングにdash書いたら dashと表示させたい。 $SHELLを使う SHELLはログインシェルなので、今使われているシェルを表…
inotifywait はエッジトリガなので、待ち始める直前にファイルを作られると詰む。 inotifyfilewait (){ FILENAME="$1" DIRNAME=`dirname $FILENAME`/ while [ ! -f $FILENAME ]; do inotifywait -q -e CREATE -t 1 $DIRNAME >/dev/null done } 使い方:指定…
遅いし1行じゃない VAL=`cat /tmp/hoge.txt` 速いし1行だけ読める read VAL </tmp/hoge.txt ループの中はできるだけ内部コマンドだけで頑張りたい readコマンドを使うとき、ファイルが開けない等のエラーが発生したときのエラーメッセージを 2>/dev/null では非表示に出来ないので、事前にちゃんとファイルチェックをおこないそもそもエラーが発生しないよう気を使うこと
いろんなサイトのコピペ。 印刷して壁に貼っとく用。あとでどんどん追記する。 数値系 真の条件 備考 "$A" -eq "$B" A==B "$A" -ne "$B" A!=B "$A" -lt "$B" A 小なり "$A" -le "$B" A "$A" -gt "$B" A > B 大なり "$A" -ge "$B" A>=B 文字列系 真の条件 備…
$ [ "A" < "B" ] && echo OK -bash: B: そのようなファイルやディレクトリはありません $ if [ "A" < "B" ]; then echo OK; fi -bash: B: そのようなファイルやディレクトリはありません [ はコマンドなので、大なり > や小なり 思ったとおり動作させさいと…
Tips - JD for Linux Wiki - JD for Linux - OSDN これだと消し忘れが残るので一応全部消すように変更した #!/bin/sh DIR=${JD_CACHE:-~/.jd} find $DIR -type f -regex ".*/info/[0-9]+\.info$" \ | xargs grep -H "status =" \ | perl -nle '/^(.*)\/info\…
bash3.2.25とbash4.1.5で実験 参考:http://mlog.euqset.org/archives/linux-users/106994.html システム変数PIPESTATUSを使う $ (exit 1) | (exit 0) | (exit 3) | (exit 0) $ echo ${PIPESTATUS[@]} 1 0 3 0 PIPESTATUSという配列に、最後にパイプ使ったと…
./a.out abc あいうえお '' 山田みたいなのをコマンドラインで渡したときの引数の取り方と、取れ方 java public class hoge { public static void main(String[] args) { System.out.println( "args.length=" + args.length ); for (int i=0; i
本当はオリジナルのタイムスタンプを復元したいんだけど、それは失われるらしい http://stackoverflow.com/questions/2179722/checking-out-old-file-with-original-create-modified-timestamps このスクリプトが何用かわからなかったので、改造して使えるよ…
2012-10-03 16:33:58 みたいに出力する perl my ($S,$M,$H,$d,$m,$Y,$x) = localtime(); my $date = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $Y+1900,$m+1,$d,$H,$M,$S ); print "$date\n"; use POSIX qw(strftime); $date = strftime( "%Y-%m-%d %H:%M:…
a b みたいな文字列を作りたい。 bashの制御コードの置換機能をつかう $'\t' とかで、制御コードを置換できる $ echo a$'\t'b a b $ A=a$'\t'b $ echo "$A" a b $ A=$'a\tb' $ echo "$A" a b
EZ-NET: シェルスクリプトでファイル名や拡張子名を取得する - Linux シェルスクリプト プログラミング に書いてあるとおりに実施 #!/bin/sh FILENAME=$1 DIRNAME=`dirname "$FILENAME"` EXTNAME=`echo ${FILENAME##*.} | tr a-z A-Z` FILENAME_WITHOUT_EXT=…
普通はパッケージにするから無用な技術だけど こういう構成にすればLinuxでも自己解凍するインストーラとかが作れる
bashにはブレース展開がある $ cat brace.sh for i in {1..4}; do echo $i; done $ bash brace.sh 1 2 3 4 $ dash brace.sh {1..4} squeezeだかlennyの頃から/bin/shがdashになっているので、この罠にかかると死ぬ。
#!/bin/dash set -e function hoge { echo hoge } hoge $ ./hoge.sh ./hoge.sh: 5: function: not founddashには function が無い。 なるほど。ふざけんな。 関数定義はbashでも動作するように hoge () { でおこなうこと。 あと、dashはecho文でエスケープシ…
バージョン管理システム CVS を使う http://vox.nishimotz.com/cvs/taglist.txt これを改造して出力をちょっとコンパクトにする。 #!/bin/sh # tag の名前を引数で指定すると、そのファイル名で # 構成するファイルのバージョン一覧を出力する・改 if [ $# -…
echo $((`cat /tmp/hoge 2>/dev/null`+1)) > /tmp/hogeファイルが無いときは1を書く
/usr/bin/perl でも /bin/shでも、なんであれ bad interpreter の原因の95%は改行コードの誤り。