Рейтинг:0

псевдоним не работает должным образом

флаг ph

я пытаюсь получить типы файлов используя псевдоним. Я использую:

alias file-types="find . -type f | perl -ne 'напечатать $1, если m/\.([^.\/]+)$/' | sort -u"

Однако он не работает:

Когда я набираю команду в терминале, она показывает (это именно то, что я хочу):

азв
азв3
бз2
чм
epub
пдф

но когда я использую псевдоним, он показывает что-то вроде:

./x.epub
./г.pdf
./z.pdf
.....

Что я могу сделать, чтобы сделать эту команду псевдонимом.

24601 avatar
флаг in
Ваша ссылка от SO. Почему бы не задать вопрос там? Общие вопросы программирования обычно решаются там хорошо, и если Ubuntu не указывает лучший ресурс для использования.
флаг cn
Бит Perl может быть короче (возможно, проще?) -- `perl -ne 's/.+\.// && print'`
Рейтинг:3
флаг hr

Это потому, что внешние двойные кавычки позволяют $1 оцениваться оболочкой, когда псевдоним определен, поэтому распечатать $1 становится простым Распечатать :

$ alias file-types="find . -type f | perl -ne 'напечатать $1, если m/\.([^.\/]+)$/' | sort -u"
$ псевдонимы типов файлов
псевдонимы типов файлов = 'найти . -тип f | perl -ne '\''печатать, если m/\.([^.\/]+)$/'\'' | сортировать -у'

Вероятно, самый простой способ исправить цитирование — экранировать символ обратной косой чертой. $:

выведите \$1, если m/\.([^.\/]+)$/

Однако Я бы рекомендовал использовать функцию оболочки вместо псевдонима для таких случаев - см., например В Bash, когда для псевдонима, когда для сценария и когда для написания функции?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.