fishでbash/zshのgrouping commands相当のことをやる


fish小ネタ

任意のディレクトリを別ディレクトリに丸ごとコピーする方法は色々ありますが、bourne shell一派を使ってた頃は以下のように書いてました。

> tar cf - ./nantoka | ( cd /dokoka; tar xf -)

grouping commandsというやつです(gnu本家だと"grouping commands"で、手元でbash(1)見ると"group command"になってますね・・・)
そんなん後段のtarで-C指定すりゃいいじゃねえかという話で全くそのとおりなんですが、もう手癖なんでしょうがないんです。
tar以外のコマンドも入れたくなっちゃうことありますし。

癖なのでfishの場合も同じように書きたいんですが、()や{}は使えません。敢えて似たようなことをやろうとすると以下の感じになるようです。

> tar cf - ./nantoka | begin
                         cd /dokoka
                         tar xf -
                       end

begin - start a new block of code

どうしてもone lineで書きたい場合は";"で逃げればよいです。

小ネタでした。