Честно говоря, к тому времени, когда команда становится настолько большой, я превращаю ее в сценарий, а не в псевдоним. Одним из преимуществ скрипта является то, что вы заставляете его работать с большим количеством файлов, чем просто «access.logs».
Эта последовательность команд включает в себя одинарные кавычки и обратные кавычки - это всегда добавляет веселья. Как правило, лучше использовать $(command args)
вместо обратных кавычек.
Когда вы используете двойные кавычки вокруг псевдонима, команды с обратными кавычками выполняются при создании псевдонима - если только оболочка не имеет другого способа интерпретации вещей, когда они определяют псевдоним. Кроме того, $var
выражения оцениваются в двойных кавычках, поэтому ваши awk
ошибки показывают, что у вас нет аргументов в текущей оболочке.
Таким образом, если вы должны использовать псевдоним, то вам, вероятно, нужно использовать одинарные кавычки вокруг всего выражения, а также для каждого отдельного предложения, которое появляется в выражении, заменить его последовательностью котировка-обратной косой кавычки кавычки: '\''
. Первая кавычка завершает текущую строку в кавычках; кавычка с обратной косой чертой представляет собой буквальную кавычку; окончательная цитата перезапускает цитируемую строку.
Это приводит к:
alias downloads='grep `date '\''+%d/%b/%Y'\''` access.logs | egrep 2765330645ae47d292c9ceac725d744e.py | awk '\'''\'' | sort | uniq -c -w15 | sort -n'