Я пытаюсь запустить эту командную строку в Fish.Как я могу заставить эту оболочку bash работать в Fish?
git show $(git log --pretty=oneline | fzf | cut -d ' ' -f1)
Что должно произойти, это git log --pretty=oneline | fzf | cut -d ' ' -f1
позволяет выбрать фиксацию в интерактивном режиме из git log
, а затем возвращает фиксации хэш, который передается в git show
.
Я думал, что рыба использует круглые скобки для «подкоманд», но это не работает.
git show (git log --pretty=oneline | fzf | cut -d ' ' -f1)
Он идет прямо к выходу по умолчанию git show
, который является главой фиксации.
Я подозреваю, что моя идея о том, как работает оболочка, неверна. Любая помощь оценивается.
UPDATE
Это выход из трубопровода
$ git log --pretty=oneline | fzf | cut -d ' ' -f1 3eb7a8fa09ac94cf4a76109b896f7ba58959f5a8
UPDATE 2
Как ответил @faho, это ошибка в Рыбе.
Вы можете обойти сейчас, используя временный файл
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
ли этот трубопровод возвращает более одной строки вывода? –
Он вызывает 'fzf', который вы выбираете из списка с помощью клавиши ввода, и возвращает один хэш. Я обновил вопрос. – jordelver
этот синтаксис выглядит правильно. Попробуйте 'set lines (git log ...); echo (count $ lines); git показать $ lines' –