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