скорее, чем:

вой части моего вопроса я предоставлю некоторую справочную информацию в качестве услуги для сообщества. Вторая часть содержит актуальный вопрос.

Часть I

Предположим, я создал следующий псевдоним:

alias ls='ls -r'

Я знаю, как временно удалить псевдонимы (то есть переопределить этот псевдоним) следующими способами, используя:

1) полный путь к команде:/bin/ls

2) подстановка команды:$(which ls)

3) встроенная команда: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):

«Обратная косая черта без кавычек‘ \ ’является escape-символом Bash. Она сохраняет буквальное значение следующего последующего символа, за исключением символа новой строки».

(Кстати, разве «следующий персонаж, который следует» немного переборщил?)

Возможным ответом может быть то, что эта ситуация не такая уж особенная: она похожа на несколько случаев в цитировании ANSI-C, например,\nnn, Тем не менее, это все еще избегаетодин персонаж (восьмибитный символ, значение которого является восьмеричным значением nnn), а не последовательность символов.

Ответы на вопрос(1)

Ваш ответ на вопрос