В первой части моего вопроса я предоставлю некоторую справочную информацию в качестве обслуживание сообщества. Вторая часть содержит фактический вопрос.
Часть I
Предположим, что я создал следующий псевдоним:
alias ls='ls -r'
Я знаю, как временно уналы (т.е. переопределять этот псевдоним) в следующем способами, используя:
1) полный путь к команде: /bin/ls
2) подстановка команды: $(which ls)
3) команда builtin: command ls
4) двойные кавычки: "ls"
5) одинарные кавычки: 'ls'
6) символ обратной косой черты: \ls
Случай 1 очевиден, а случай 2 - просто вариация. Команда, встроенная в случае 3, была разработана для игнорирования функций оболочки, но, по-видимому, она также работает для обхода псевдонимов. Наконец, случаи 4 и 5 согласуются как с стандартом POSIX (2.3.1):
"получившееся слово, которое идентифицировано для имени команды простая команда должна быть проверена на определить, является ли это некорректным, действительное имя псевдонима."
и Bash Справочное руководство (6.6):
"Первое слово каждого простого команда, если она не указана, проверяется на посмотрите, есть ли у него псевдоним."
Часть II
Вот вопрос: почему случай 6 (переопределяя псевдоним, сказав \ls
)
считается цитирование слова? В соответствии со стилем этого вопроса я ищу ссылки на официальную документацию.
В документации говорится, что обратная косая черта избегает следующих характер, в отличие от одиночных и двойных кавычек, которые цитируют последовательность символов. стандарт POSIX (2.2.1):
"Обратная косая черта, которая не цитируется, должна сохранить буквальное значение следующий символ, с исключение <newline> "
Bash Справочное руководство (3.1.2.1):
"Неконкретная обратная косая черта '\ является Bash escape-символ. Он сохраняет буквальное значение следующего характер, который следует, с исключение новой строки."
(BTW, не "следующий символ, который следует" немного перебор?)
Возможный ответ может заключаться в том, что эта ситуация не такая особенная:
аналогично нескольким случаям в цитировании ANSI-C, например. \nnn
. Однако это все еще
избегая одного символа (восьмибитовый символ, значение которого является восьмеричным
значение nnn), а не последовательность символов.