Unescaped содержимое командной строки в оболочке рыбы
Есть ли способ получить неэкранированный контент командной строки в рыбе? Я имею в виду, если командная строка похожа...
$ ls 'foo' "bar"
... желаемый результат будет ls 'foo' "bar"
,
commandline
Команда fish возвращает командную строку, но она автоматически выходит за пределы содержимого. т.е. ls foo bar
,
В руководстве я не нашел никаких переключателей, чтобы подавить это поведение.
Контекст: я пытаюсь подражать Bash's ctrl-x ctrl-e
который позволяет редактировать содержимое командной строки в редакторе. Для этого мне нужен неэкранированный контент командной строки.
Любая помощь будет оценена.
2 ответа
Оказывается, fish 2.3 исправляет поведение при печати и оставляет командную строку без экранирования. В рыбе 2.3 commandline -b
печатает командную строку без экранирования
Это не отвечает на ваш вопрос, я думаю, но я нашел это где-то в Интернете
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
И мне нравится Altv, так
bind \ev bind_edit_commandline