bash

cronから立ち上げられた--loginオプション付きのbashのは.bash_profileをきちんと参照する

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 …

bashでデジカメでとった写真を順次連番をふりながら別フォルダにコピーするには

任意のフォルダにあるデジカメでとった写真を再帰検索しつつ順次連番をふりながら別フォルダにコピーするには以下を実行する。 $ i=1;for s in `find . -name "*.JPG"|sort` ; do ss=` printf "%04d" $i` ; cp $s ../photo2/SANY$ss.JPG ;set i=$((i++));done

bashでバックグラウンドで動かす。

最初からバックグラウンドと思っているとき 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でエスケープシーケンス

bashでエスケープシーケンスを使う為には echo -en "\033[..."でよいたとえば3行上は以下の通り $ echo -en "1\n2\n3\n4\n5\n\033[3A" 1 2 $ 4 5というように本来5の下に出るはずのカーソル($)が3の所に行っているのでカーソルが動いているのがわかる。 ht…

bashで無限ループ

bashで無限ループするためには while :; do ... ; done

バイナリ表示ODを16進数1バイトで表示する。

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とconvertを同時に使う

$ 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…

環境変数HTTP_PROXYの設定

以下のようにする。 export http_proxy=http://[user[:password]@]host[:port]/wget w3mで参照する HTTP_PROXYだとrubyのopen-uriが駄目なので小文字で統一する

bashでディレクトリ内のhtmlファイルの文字コードを一挙に変更する

まあ、おぼえているからいいんだけど、なんとなく。 ついでにファイル内のメタタグも変更しておく $ for i in *.html ; do nkf -wd $i|sed s/euc-jp/UTF-8/ > ../doc/$i ; done

変な環境変数RANDOM

RANDOM このパラメータが参照される度に、 0 から 32767 までのランダムな整数が生成されます。 RANDOM に値を代入すると、乱数の列を初期化できます。 RANDOM を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。…

コマンドラインにて一発でfirefox上のflash videoキャッシュを携帯電話用に変換する

追記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のオプション

先頭数行を除くには+オプション tail +2 skill_sort.csvこれと同じうごきをする変なもんを作ってしまった。マニュアルって大事だな。 tail -$((`wc -l skill_sort.csv|sed 's/ .*$//'`-1)) skill_sort.csv欲しいと思ったときにはマニュアルは読むべきか。 ま…

フォルダを再帰的に探索し^Mを消す。

元ファイルを残すように^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…

functionでaliasを実装する。

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…

各コマンドの-eオプションをそろえる

.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 "$…

function

リダイレクト きちんと全てのコマンドを同じファイルディスクリプタにつないでるんだな。丁寧だ。 おそらくexecする前につないでるだけなんだろうがねらい通りの動きをするってすごいな。 $ echo "aaa";echo "bbb"> a.txt aaa $ function a { echo "aaa";ech…

runghcに-eオプションを無理矢理付ける

上のエントリとまったく同じノリ。なので引数も同じ問題点を抱えてる。 $ 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<-…

gaucheの-eオプションをその辺のLLと同じにする。

仕様:-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

環境変数でスタックその2

$ 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

16台のシステムからsmbdのプロセス数を確認する

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 &#39;ps ax | grep smbd | wc -l&#39;; done