我怎样才能让这个 bash sub shell 在 Fish 中工作?
How can I get this bash sub shell to work in Fish?
我正在尝试让这个命令行在 Fish 中工作。
git show $(git log --pretty=oneline | fzf | cut -d ' ' -f1)
应该发生的是 git log --pretty=oneline | fzf | cut -d ' ' -f1
让你 select 从 git log
交互地提交,然后 returns 传递给 [=19= 的提交散列].
我以为 Fish 对“子命令”使用括号,但这不起作用。
git show (git log --pretty=oneline | fzf | cut -d ' ' -f1)
它直接进入 git show
的默认输出,即 HEAD 提交。
我怀疑我对 shell 工作原理的看法不正确。任何帮助表示赞赏。
更新
这是管道的输出
$ git log --pretty=oneline | fzf | cut -d ' ' -f1
3eb7a8fa09ac94cf4a76109b896f7ba58959f5a8
更新 2
正如@faho 的回答,这是 Fish 中的一个错误。
您现在可以使用临时文件解决问题
git log --pretty=oneline | fzf | cut -d ' ' -f1 > $TMPDIR/fzf.result; and git show (cat $TMPDIR/fzf.result)`
或者,更简洁地使用 xargs
git log --pretty=oneline | fzf | cut -d ' ' -f1 | xargs -o git show
这是鱼的问题#1362, which is also mentioned in fzf's readme。
有一个简单的解决方法:不使用命令替换,而是使用 read
,例如
git log --pretty=oneline | fzf | cut -d ' ' -f 1 | read -l answer
git show $answer
(fzf 目前在其 fish 绑定中使用临时文件,但我正在努力纠正)
我正在尝试让这个命令行在 Fish 中工作。
git show $(git log --pretty=oneline | fzf | cut -d ' ' -f1)
应该发生的是 git log --pretty=oneline | fzf | cut -d ' ' -f1
让你 select 从 git log
交互地提交,然后 returns 传递给 [=19= 的提交散列].
我以为 Fish 对“子命令”使用括号,但这不起作用。
git show (git log --pretty=oneline | fzf | cut -d ' ' -f1)
它直接进入 git show
的默认输出,即 HEAD 提交。
我怀疑我对 shell 工作原理的看法不正确。任何帮助表示赞赏。
更新
这是管道的输出
$ git log --pretty=oneline | fzf | cut -d ' ' -f1
3eb7a8fa09ac94cf4a76109b896f7ba58959f5a8
更新 2
正如@faho 的回答,这是 Fish 中的一个错误。
您现在可以使用临时文件解决问题
git log --pretty=oneline | fzf | cut -d ' ' -f1 > $TMPDIR/fzf.result; and git show (cat $TMPDIR/fzf.result)`
或者,更简洁地使用 xargs
git log --pretty=oneline | fzf | cut -d ' ' -f1 | xargs -o git show
这是鱼的问题#1362, which is also mentioned in fzf's readme。
有一个简单的解决方法:不使用命令替换,而是使用 read
,例如
git log --pretty=oneline | fzf | cut -d ' ' -f 1 | read -l answer
git show $answer
(fzf 目前在其 fish 绑定中使用临时文件,但我正在努力纠正)