Unescaped содержимое командной строки в оболочке рыбы

245
blackwing

Есть ли способ получить неэкранированный контент командной строки в рыбе? Я имею в виду, если командная строка похожа на ...

$ ls 'foo' "bar" 

... желаемый результат будет ls 'foo' "bar".

Команда commandlinefish возвращает командную строку, но она автоматически выходит за пределы содержимого. то есть ls foo bar.

В руководстве я не нашел никаких переключателей, чтобы подавить это поведение.

Контекст: я пытаюсь эмулировать bash, ctrl-x ctrl-eкоторый позволяет редактировать содержимое командной строки в редакторе. Для этого мне нужен неэкранированный контент командной строки.

Любая помощь будет оценена.

0

2 ответа на вопрос

1
blackwing

Turns out fish 2.3 fixes the printing behavior and leaves the command-line unescaped. In fish 2.3 commandline -b prints the command-line unescaped.

0
glenn jackman

This does not answer your question I think, but I found this online somewhere

function bind_edit_commandline set -l tmp (mktemp /tmp/fish-fc.XXXXXX) commandline > $tmp eval $EDITOR $tmp commandline -r "" cat $tmp | while read -l cmd; commandline -a "$cmd" ""; end rm $tmp end 

And I like Altv, so

bind \ev bind_edit_commandline 
Спасибо, но, как вы упомянули, это не решает проблему побега. blackwing 7 лет назад 0
Я не смотрел на исходный код, но меня не удивит, если эта проблема не может быть решена так, как вы хотите. glenn jackman 7 лет назад 0

Похожие вопросы