エンジニアが英語できるようになりたい

正月だし shell と仲良くなる

Created: 2018-01-01

正月だし sh と bash の違いでも確認しようかとおもったのですが、 その辺の Tips 寄せ集めという形になりました。

Shell スクリプトとか Linux コマンド系は少しずつ覚えていって、できることが増えていくのが本当に楽しいですよね。

複数のファイルへリダイレクト

$ echo hoge | tee file1 file2

とすればよい。さらにアペンドしたいときは以下のように -a をつければよい。

$ echo hoge | tee -a file1 file2

zsh のフォースリダイレクト

zsh つかってて以下のエラーがよく出ていたんだけど

$ cat hoge.sh > piyo.sh
zsh: file exists: piyo.sh

これは >! を使えばよい。

dash だと [[ は使えない

昔はまった。

[[ "a" = "a" ]]

上は bash なら大丈夫だけど dash だとエラーになる。AWS EC2 の Ubuntu とか入ると、

$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Feb 17  2016 /bin/sh -> dash*

となっていて、うかつに sh をつかうと dash なので、上のコードでつまずくことができる。 ちなみに、 echo $SHELLbash だったので、どうしてもそっちの機能が使いたい時は bash で呼べばよいと思う。

sh と bash の違い

. ./not_found
echo hello

これは、どちらも一行目でエラーになるけど、 bash の場合は hello が出力される。 sh はされない。