sh

ファイル名の交換コマンド: mvswap

最近,シェル上でファイル名を交換することが多くなってきた.こんなコマンドをよく打つ. % mv hoge hoge.tmp % mv fuga hoge % mv hoge.tmp fuga指が疲れるし,誤って操作をする確率も高くなる. そこでこんなシェルスクリプトを書いて,~/binにぶちこんで…

シェルスクリプトは文字通りの逐次実行

sh

知り合いに気になったことを指摘された. 「シェルスクリプトは実行中にスクリプトを変更すると,変更されたスクリプト通りに動く」というものである. んなことあるかい,スクリプトは実行時にメモリに読み込まれるんでい!と思い込んでいたので,早速調べ…

文字列の一致とif文におけるOR

sh

そういえば文字列の一致を取る方法を知らなかった.更に条件文(test)の中でORを取る方法を知らなかった.というわけでふたつを取り入れたサンプルプログラム for str in hoge fuga piyo do if [ "$str" = "hoge" -o "$str" = "piyo" ]; then echo "hoge or p…

実例で学ぶ脱初心者のためのシェルスクリプト(パラメータ置換編)

sh

一度習得すると重宝するシェルスクリプトだが,慣れないうちはこれほど不便なものはないと思ってしまう.PerlやRubyなどのスクリプト言語の方が使う機会が多いので,そっちで書けばいいじゃん,と思っていた.自分の場合はコマンドラインスクリプトも全てPer…

算術比較

sh

ようやくshスクリプトが便利だということがわかってきた. 今回はデータのある値が定数以上出現するファイル以外を削除する,ということをやろうとした.普通にPerlスクリプトを書こうとしたが,shで書けるということに気がついた. #!/bin/sh # 引数が0の場…

ファイルを読み込んで処理

sh

プログラムの引数に与える文字列等をファイルに保存している場合,それを読み込んで行を読み込んでプログラムを実行というプログラムを書きたい.shスクリプトを書くようになってからも,ファイルを読み込むものはPerlプログラムで書いていた. いちいちopen…

複数のファイルをまとめて操作する

sh

陥りがちなミス $ convert *.bmp *.jpgこれでは思い通りの効果は期待できない. たとえば,カレントディレクトリの.bmpをすべて.pngに書き換える場合は以下のとおり $ for f in *.bmp; do convert $f ${f%.bmp}.png; doneこの記事が大変参考になりました.書…