В качестве разделителей между словами в оболочке обычно используются пробелы. Например, чтобы вызвать команду с тремя аргументами, между ними ставится пробел
$ cat file1 file2 file3
Но, иногда, необходимо, чтобы оболочка различала пробелы как символы, а не разделители. Например, если у нас имеется файл с именем ‘Interesting file.doc’. Если вы обратитесь к такому файлу в командной строке, то ваша команда, скорее всего, завершится с ошибкой.
$ cat Interesting file.doc
cat: Interesting: Нет такого файла или каталога
cat: file.doc: Нет такого файла или каталога
Это происходит по тому, что оболочка интерпретирует пробелы, как разделители.
Чтобы заставить оболочку рассматривать пробелы, как часть имени файла, существует три варианта — одинарные кавычки, двойные кавычки и обратная косая черта:
$ cat 'Interesting file.doc'
$ cat "Interesting file.doc"
$ cat Interesting\ file.doc
Одинарные кавычки.
Одинарные кавычки сообщают командной оболочке, что каждый символ между ними следует обрабатывать буквально. Даже, если этот символ зарезервирован в системе как особенный, как например знак доллара ‘$‘
$ echo '$HOME'
$HOME
Двойные кавычки.
Двойные кавычки указывают системе, что каждый символ должен восприниматься буквально. Но в отличии от одинарных такие символы, как ‘$‘ и некоторые другие символы — не игнорируются.
$ echo "Ваш домашний каталог - $HOME"
Ваш домашний каталог - /home/user
$ echo 'Переменная домашеного каталога - $HOME'
Переменная домашеного каталога - $HOME
Обратная косая черта.
Обратная косая черта «\«, также называемая экранирующим символом, указывает оболочке воспринимать буквально символ, находящийся после нее.
$ echo \$HOME
$HOME
Обратная косая черта действует как экранирующий символ в двойных кавычках:
$ echo "Значение переменной \$HOME - $HOME"
Значение переменной $HOME - /home/user
Но не в одинарных
$ echo 'Значение переменной \$HOME - $HOME'
Значение переменной \$HOME - $HOME
Можно использовать обратную косую черту, чтобы экранировать символ двойных кавычек внутри двойных кавычек:
$ echo "сайт \"ROADIT\"-интересный сайт"
сайт "ROADIT"-интересный сайт
Обратная косая черта в конце строки отключает функцию невидимого символа новой строки, позволяя командам оболочки занимать несколько строк:
$ echo "Это очень, ну очень, длинная предлинная \
строка"
Это очень, ну очень, длинная предлинная строка
При таком использовании обратную косую черту, еще называют символом продолжения строки.
Обратная косая черта, установленная перед псевдонимом экранирует его, заставляя оболочку искать команду с тем же именем. Затенение при этом игнорируется.
$ alias less="less -c"
$ \less file.txt
Благодаря обратной косой черте, запуститься не установленный псевдоним ‘less -c‘, а стандартная для оболочки команда ‘less‘.
Was this helpful?
0 / 0