тл;д-р: Чтобы заключить специальный символ в кавычки, либо экранируйте его с помощью обратной косой черты \
или заключите его в двойную " "
или одинарные кавычки ' '
. Tab ↹ Завершение заботится о правильном цитировании.
То, о чем вы просите, называется Цитирование:
Кавычки используются для удаления особого значения определенных символов или слов из командной строки. (...) Существует три механизма цитирования: экранирующий символ, одинарные кавычки, и двойные кавычки. [цитаты взяты из man bash
]
Цитирование с помощью экранирующего символа \
Обратная косая черта без кавычек (\
) - это экранирующий символ. Он сохраняет буквальное значение следующего следующего символа, за исключением <newline>
.
Поэтому, чтобы ввести каталог или файл со специальным символом, экранируйте последний с помощью \
, например:
cd space\ dir # change into directory called “space dir”cat space\ file # print the content of file “space file”echo content > \\ # print “content” into file “\”cat \( # print the content of file “(”ls -l \? # list file “?”
bash
'с Программируемое Завершение (он же Tab ↹ Завершение) автоматически экранирует специальные символы с помощью escape-символа \
.
Кавычки в двойных кавычках " "
Заключение символов в двойные кавычки сохраняет буквальное значение всех символов в кавычках, за исключением $
, `
, \
, и, когда включено расширение истории, !
.
Поэтому, чтобы ввести каталог или файл со специальным символом, экранируйте по крайней мере последнюю или большую часть вашего имени файла или пути с помощью двойных кавычек, например:
cd space" "dir # change into directory called “space dir”cd spac"e di"r # equallycd "space dir" # equallycat "space file" # print the content of file “space file”cat "(" # print the content of file “(”ls -l "?" # list file “?”
Как $
, `
и !
держите их особое значение в двойных кавычках, Расширение параметров, Замена команд, Арифметическое разложение и Расширение истории выполняются для строк, заключенных в двойные кавычки.
Цитирование с помощью одинарных кавычек ' '
Заключая символы в одинарные кавычки, сохраняется буквальное значение каждого символа в кавычках. Одинарная кавычка может не встречаться между одинарными кавычками, даже если перед ними стоит обратная косая черта.
Поэтому, чтобы ввести каталог или файл со специальным символом, экранируйте по крайней мере последнюю или большую часть вашего имени файла или пути с помощью двойных кавычек, например:
cd space' 'dir # change into directory called “space dir”cd spac'e di'r # equalcd 'space dir' # equalcat 'space file' # print the content of file “space file”cat '(' # print the content of file “(”ls -l '?' # list file “?”echo content > '\' # print “content” into file “\”
Вы можете узнать больше о цитировании в man bash
/ЦИТИРОВАНИЕ, на wiki.bash-hackers.org и дальше tldp.org.