Создание псевдонима bash, заканчивающегося одинарной кавычкой - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть строка командной строки:

ls | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' '

, которая выводит имена файлов в текущей папке в одну строку, заключенную в кавычки.

Я попытался добавить это в свой .bash_profile как псевдоним, однако я думаю, что одинарные кавычки вызывают проблему, и я не могу заставить его работать.

Я попробовал это без удачи:

alias='ls | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' ''

Как можно было бы создать псевдоним для вышеупомянутого?

Заранее спасибо всем, кто может помочь с этим вопросом, и я ценю ваше время :)

Приветствия,

Стивен.

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Объедините всю команду в двойные кавычки и экранируйте двойные кавычки внутри команды с обратной косой чертой:

alias a="ls | sed -e 's/^/\"/g' -e 's/$/\"/g' | tr '\n' ' '"

или используйте функцию

a() {
    ls | sed -e 's/^/"/g' -e 's/$/"/g' | tr '\n' ' '
}

Кстати: парсинг ls плохая практика.Было бы безопаснее и проще использовать globs и printf:

printf '"%s" ' *

или, если вы хотите правильно цитату для использования аргументов внутри eval или что-то подобное

printf '%q ' *
0 голосов
/ 22 ноября 2018

Псевдоним должен заключать командную строку в ' И каждый из уже существующих ' должен быть экранирован с помощью '\''

Попробуйте это:

alias lsquoted='ls | sed -e '\''s/^/"/g'\'' -e '\''s/$/"/g'\'' | tr '\''\n'\'' '\'' '\'''
0 голосов
/ 22 ноября 2018

работа здесь с использованием \ "

alias X="ls | sed -e 's/^/\"/g' -e 's/$/\"/g' | tr '\n' ' '"
...