bash
cronから立ち上げられたbashはきちんと.bash_profileをきちん読み込んでいる 以下その解説 $ cat .bash_profile A=xxx $ crontab -l * * * * * bash --login -c 'echo `date` "->" $A >> /tmp/a.txt' $ tail -f /tmp/a.txt 2008年 1月 30日 水曜日 16:14:01 …
任意のフォルダにあるデジカメでとった写真を再帰検索しつつ順次連番をふりながら別フォルダにコピーするには以下を実行する。 $ i=1;for s in `find . -name "*.JPG"|sort` ; do ss=` printf "%04d" $i` ; cp $s ../photo2/SANY$ss.JPG ;set i=$((i++));done
最初からバックグラウンドと思っているとき nohup nohup aaa & 途中でバックグラウンドにしたいとき disown その1 $ aaa (C-z押) $ bg $ disown %1 $ exitその2 (-CONTの付け忘れに注意(笑)) $ aaa (C-z押) $ disown %1 $ ps ax | grep aaa 9250 ....…
bashでエスケープシーケンスを使う為には echo -en "\033[..."でよいたとえば3行上は以下の通り $ echo -en "1\n2\n3\n4\n5\n\033[3A" 1 2 $ 4 5というように本来5の下に出るはずのカーソル($)が3の所に行っているのでカーソルが動いているのがわかる。 ht…
bashで無限ループするためには while :; do ... ; done
16進の表示をhdに近づける。 - 計算機と戯れる日々のその後od -tx1 でいい。 $ od -tx1 sendmail.rb | head -5 0000000 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 0a 0000020 72 65 71 75 69 72 65 20 27 6e 65 74 2f 73 6d 74 0000040 70 27 0a 0a 4…
$ wget -q -O - http://www.google.co.jp/intl/ja/images/google_sm.gif | convert -quality 30 -resize 200x200 - jpeg:- > a.jpgこれで良い。さらにパイプに回してMIMEエンコードできる。 $ wget -q -O - http://www.google.co.jp/intl/ja/images/google_s…
以下のようにする。 export http_proxy=http://[user[:password]@]host[:port]/wget w3mで参照する HTTP_PROXYだとrubyのopen-uriが駄目なので小文字で統一する
まあ、おぼえているからいいんだけど、なんとなく。 ついでにファイル内のメタタグも変更しておく $ for i in *.html ; do nkf -wd $i|sed s/euc-jp/UTF-8/ > ../doc/$i ; done
RANDOM このパラメータが参照される度に、 0 から 32767 までのランダムな整数が生成されます。 RANDOM に値を代入すると、乱数の列を初期化できます。 RANDOM を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。…
追記2008/02/07:キャッシュフォルダでなく/tmpでFlash*がflvなのでこいつを持ってきた方がはやい。 $ i=100;for s in `ls -t /tmp/Flash*`; do ffmpeg -y -re -vcodec mpeg4 -mbd 2 -trell -aic -s 320x240 -deinterlace -r 29.97 -me full -g 240 -sgop -cg…
先頭数行を除くには+オプション tail +2 skill_sort.csvこれと同じうごきをする変なもんを作ってしまった。マニュアルって大事だな。 tail -$((`wc -l skill_sort.csv|sed 's/ .*$//'`-1)) skill_sort.csv欲しいと思ったときにはマニュアルは読むべきか。 ま…
元ファイルを残すように^Mを消していく。 $ for i in `grep -rl "^M" *`; do mv $i $i.org;nkf -d $i.org>$i ;done
なんてことだ、引数が0個の時 "$*"がそのまま対象となるコマンドにわたされてる。 ひとつ余計なifが必要かな。 と、おもったら"$@"ならOKだった。 * (1 から始まる) 全ての位置パラメータに展開されます。 ダブルクォートの内部で展開が行われたときは、 そ…
単に "$*" でよかった。以下の実験により理解。 function中で代入される引数の""を外さないようにしたかった。 $ echo "aaa bbb" ccc aaa bbb ccc $ function a() { echo $*; }; a "aaa bbb" ccc aaa bbb ccc $ function a() { echo "$*"; }; a "aaa bbb" cc…
unsetじゃ駄目だったんだ。 $ function ls { unset ls; echo "This is ls";ls; }; ls ;declare -f ls This is ls gosh_wrap gosh_wrap.clsが消えてしまっている。別の関数を使えば以下のように解決できる。でもかっこわるい。 $ function ls { ls2; } ; func…
.bashrcに以下を書く function gosh(){ if [ $# -ge 1 ] && [ $1 == '-e' ]; then echo "$2">$$.scm;shift 2;`which gosh` $$.scm "$@";rm $$.scm; else rlwrap `which gosh` "$@";fi } function runghc(){ if [ $# -ge 1 ] && [ $1 == '-e' ]; then echo "$…
リダイレクト きちんと全てのコマンドを同じファイルディスクリプタにつないでるんだな。丁寧だ。 おそらくexecする前につないでるだけなんだろうがねらい通りの動きをするってすごいな。 $ echo "aaa";echo "bbb"> a.txt aaa $ function a { echo "aaa";ech…
上のエントリとまったく同じノリ。なので引数も同じ問題点を抱えてる。 $ function runghci { if [ $# -ge 1 ] && [ $1 == '-e' ]; then echo $2>$$.hs;shift;shift;runghc $$.hs $*;rm $$.hs;else runghc $@;fi; } $ runghci -e 'import System;main=do{a<-…
仕様:-eオプションは最初に置いたときのみ有効利用方法:以下を.bashrcに叩き込む。 function goshi { if [ $# -ge 1 ] && [ $1 == '-e' ]; then echo $2>$$.scm;shift;shift;gosh $$.scm $*;rm $$.scm;else rlwrap gosh $*;fi; }function書いたの初めてで…
$ find `pwd` -name '*.c' -print /home/○○/work/rungcc/rungcc.c
$ a="/b/c:d/e/f:g/h/i" ; echo $a ; echo "${a%%:*}" /b/c:d/e/f:g/h/i /b/c $ a="/b/c:d/e/f:g/h/i" ; echo $a ; echo "${a#*:}" /b/c:d/e/f:g/h/i d/e/f:g/h/iどちらかというとshift,unshiftみたいだな。
$ a=":a/b/c:d/e/f:g/h/i"; echo ${a%:*} :a/b/c:d/e/f a=":a/b/c:d/e/f:g/h/i"; echo ${a##:*:} g/h/i
for i in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 ; do echo -n "filesv$i " ; ssh filesv$i.oa2004.jjj.co.jp 'ps ax | grep smbd | wc -l'; done