shell
重い腰を上げてWindowsマシンでCygwin環境を構築することにしたとき、やはり気になるのがシェル環境です。 As-is Starship プリセット プロンプト設定の何が嬉しいのか 設定 As-is 僕のメインPCであるMacでは、以下のようなプロンプトを使っていました。 Pow…
Terraform で State を分割すると、たくさんの root module ができます。 ある root module が別 module の remote state 参照を持つとき、module 間に依存関係が生じます。 僕たちはこの依存順に terraform を apply しなければなりませんし、その逆順に de…
カレントディレクト配下にある全ディレクトリで同じ操作をする時って多いのではないでしょうか。 例えば作っている terraform 群が要求する Provider のバージョンをあげて、全部 terraform init して回らないといけなくなったりとか。 find と xargs を組み…
declare とか typeset、local まわりの使い方について。 まず、declare と typeset は、シノニムなので、この 2 つの差異は考えなくて良いと思います。このため、ここでは declare でひとまとめにして扱いたいと思います。 そういうわけで、declare と local…
ときどき、シェルスクリプトで文字列の 3 文字目から 4 文字を切り出したいみたいなユースケースがあって、これまでずっと cut でやってた。 $ echo $str 1234567890 $ echo $str | cut -c3-6 3456 これ、じつは文字列操作でできる。 $ echo ${str:3:4} 4567…
シェルスクリプトで条件分岐を書くとき、[ を使ったり [[ を使ったりすることになると思います。 POSIX の test にも記載がありあすが、[ は test と同じ機能を持つことになっており、同じ実装であることも多いです (ただし、[ として実行されるか、test と…
前に Bash の Glob に関するエントリを書きました。 他にも Glob には様々な応用があります。 あまり知られていないような使い方も多いので、それらをご紹介していくコーナーです。 extglob Glob で正規表現と not 条件を表現できるようになる。 詳細につい…
bash には glob というものがあります。glob ってなによっていう人も ls *.sh とかを展開する bash の機能ですよっていうと分かるかと思います。 この glob の機能って多用されますがあまりマニュアルとか読んだ人もいないと思うので、簡単にまとめてみます…
シェルスクリプトでシグナルをトラップするには、みたいなことを考えることがあって、そういえば trap という日頃なかなか思い出されない不憫なビルトインがあることを思い出しました。trap は bash のビルトインとして存在する便利なヤツですが、忘れられが…
シェルスクリプトで、テンプレート処理を行いたいというケースがあります。 ここでいうテンプレート処理について、以下のようなテンプレート(ここでは template.tt と呼びます)があった場合を例示します。 property1=${hoge} property2=${fuga} 以下のように…
まぁ、ipcalc 使いましょう。initscripts に含まれてるので、基本つかえるとおもいます。 |tcsh| $ rpm -qf which ipcalc initscripts-9.03.40-2.el6.centos.1.x86_64 ||< ブロードキャストアドレスやネットワークアドレスは次のようにして計算できます。 |t…
シェルスクリプトでバッチ組んだけど性能が出ません、止まってるように見えます、みたいな相談を受けた。 大量のデータを扱うバッチだったので DB 処理待ちになっているもんだと思っていたのだけれど、状況を調べてみると DB サーバ側の負荷はまったくなく、…
Bash にはプロセス置換という便利な機能があります。しかしこの機能、あまり知名度が高くない。 ぼくは毎日の労働に疲れ果てているし、日本学生支援機構という組織から毎月金を請求され、しまいには信用情報機関に登録される寸前までいくような生活を送って…
時々、スクリプトを見ていると ${1+"$@"} なんて記述にでくわす。例えば、これは Perl スクリプトだけれど、cpanm の実装では |perl| !/Users/kiririmode/perl5/perlbrew/perls/perl-5.14.1/bin/perl eval 'exec /Users/kiririmode/perl5/perlbrew/perls/per…
オシャレかどうかは個人の趣向によるのだけれど、あんまし大した条件分岐でもないのに if/else 文を書くというのは行き過ぎだろと思うときが結構ある。こういうときは短絡評価させる、みたいな方が分かりやすくて良いかなと思っていた。 単純な例を書く。 # …
**こんなのつくる. |zsh| !/bin/bash cat myfile | while read line do exit 2 done echo "out of loop" ||< **myfile はこんな感じ |zsh| $ perl -e 'print map { "$_\n" } "a" .. "z"' > myfile ||< **実行する |zsh| $ ./test.sh out of loop ||< おーー…