概要
自分はshellにfishを使っています。
ある対応をしていて、git stashを使いたい場面に遭遇して使ってみると
git stash list
stash@{0}: On `ブランチ名`: `stash message`
git stash pop stash@{0}
error: stash@0 is not a valid reference
なぜ!?
ブレース展開
答えはブレース展開にありました。
fishでは{}の動きが他のshellとは違っています。
- bash
echo {1..10}
1 2 3 4 5 6 7 8 9 10
このような使い方をしますが、
- fish
echo input.{c,h,txt}
input.c input.h input.txt
fishではこのような動きになり、{}展開という動きになります。
git stashしたい
ではどうすればいいのかというと、エスケープしてあげます。
git stash pop stash@\{0\}
バックスラッシュで{と}をエスケープし、展開させないようにします。
最後に
このような対応で無事できましたが、タブ補完でもエスケープしてくれました。。。
fish賢いですね〜