Результаты перед "fd" с "~ /" для fzf. Сед жалуется "совпадений не найдено" - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать функцию для fzf в zsh.

Я хочу перечислить все каталоги и файлы в моей домашней папке в fzf, добавить их с помощью «~ /» и затем в конечном итоге сохранить мой выбор в качестве переменной.

Пока у меня есть это:

myVar=$(fd -t d -t f . ~ | xargs realpath --relative-to=$HOME | sed s/^/~\// | fzf)

Когда я просто запускаю код в оболочке, он делает то, что я хочу (кроме от жалобы xargs: unmatched single quote;....

Однако, когда я помещаю ее в функцию и получаю файл, содержащий ее, sed жалуется на no matches found: s/^/~//

Как заставить функцию вести себя так же, как когда код запускается в интерактивной оболочке? И в чем причина такого поведения?

1 Ответ

1 голос
/ 20 января 2020

zsh пытается выполнить генерацию пути для аргумента перед передачей результата в sed. По умолчанию zsh обрабатывает несоответствующий шаблон как ошибку, а не оставляет его как буквальную строку, как bash по умолчанию.

Решение состоит в том, чтобы просто заключить в кавычки то, что вы хотите zsh оставить в покое.

myVar=$(fd -t d -t f . ~ | xargs realpath --relative-to=$HOME | sed <b>"</b>s/^/~\//<b>"</b> | fzf)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...