Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Двойные кавычки

Первый тип цитирования, который мы рассмотрим, это двойные кавычки. Если мы помещаем текст в двойные кавычки, все специальные символы, используемые оболочкой, теряют свое особое значение и рассматриваются как обычные символы. Исключения составляют «$», «\» (обратная косая черта) и «» (обратная кавычка). Это означает, что разделение слов, расширение имени пути, раскрытие тильды и раскрытие фигурных скобок подавляется, но расширение параметров, арифметическое расширение и подстановка команд по-прежнему выполняются. Используя двойные кавычки, мы можем справиться с именами файлов, содержащими встроенные пробелы. Допустим, мы стали несчастной жертвой файла под названием два слова.txt. Если мы попытаемся использовать это в командной строке, разделение слов приведет к тому, что это будет обрабатываться как два отдельных аргумента, а не как желаемый единственный аргумент:



[я @ linuxbox ~] $ ls -l два слова.txt

ls: невозможно получить доступ к двум: нет такого файла или каталога

ls: нет доступа к words.txt: нет такого файла или каталога

[я @ linuxbox ~] $ ls -l два слова.txt

ls: невозможно получить доступ к двум: нет такого файла или каталога

ls: нет доступа к words.txt: нет такого файла или каталога


Используя двойные кавычки, мы останавливаем разделение слов и получаем желаемый результат; в дальнейшем мы даже можем исправить повреждение:



[я @ linuxbox ~] $ ls -l "два слова.txt"

-rw-rw-r-- 1 я меня 18 2016 02:20 two words.txt [me @ linuxbox ~] $ mv "два слова.txt" two_words.txt

[я @ linuxbox ~] $ ls -l "два слова.txt"

-rw-rw-r-- 1 я меня 18 2016 02:20 two words.txt [me @ linuxbox ~] $ mv "два слова.txt" two_words.txt


Там! Теперь нам не нужно набирать надоедливые двойные кавычки.

Помните, что расширение параметров, арифметическое расширение и подстановка команд по-прежнему выполняются в двойных кавычках:


изображение

[я @ linuxbox ~] $ echo "$ USER $ ((2 + 2)) $ (кал)"

мне 4 февраля 2016


Su

Mo

Tu

We

Th

Fr

Sa

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29


Нам следует уделить время тому, чтобы взглянуть на влияние двойных кавычек на подстановку команд. Сначала давайте посмотрим немного глубже, как работает разбиение слов. В нашем предыдущем примере мы видели, как появляется разделение слов для удаления лишних пробелов в нашем тексте:


[я @ linuxbox ~] $ эхо это

Это тест

тестXNUMX

[я @ linuxbox ~] $ эхо это

Это тест


изображение

По умолчанию при разделении слов выполняется поиск пробелов, табуляции и новых строк (символов перевода строки) и рассматривается как разделители между словами. Это означает, что не заключенные в кавычки области, табуляции и символы новой строки не считаются частью текста. Они служат только разделителями. Поскольку они разделяют слова на разные аргументы, в нашем примере командная строка содержит команду, за которой следуют четыре разных аргумента. Если мы добавим двойные кавычки:


[я @ linuxbox ~] $ эхо "это

тест"

[я @ linuxbox ~] $ эхо "это


Это тест

Это тест


изображение

разделение слов подавляется, а встроенные пробелы не рассматриваются как разделители, а становятся частью аргумента. После добавления двойных кавычек наша командная строка содержит команду, за которой следует единственный аргумент.

Тот факт, что новые строки считаются разделителями с помощью механизма разделения слов, вызывает интересный, хотя и тонкий, эффект на подстановку команд. Учтите следующее:


изображение

[я @ linuxbox ~] $ эхо $ (кал)

Февраль 2016 Вс Пн Вт Ср Чт Пт Сб 1 2 3 4 5 6 7 8 9 10 11 12 13 14

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

[я @ linuxbox ~] $ эхо "$ (кал)"

Февраль 2016


Su

Mo

Tu

We

Th

Fr

Sa

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29


В первом случае подстановка команд без кавычек привела к тому, что командная строка содержала 38 аргументов. Во втором - командная строка с одним аргументом, который включает встроенные пробелы и символы новой строки.


Лучшие облачные вычисления для ОС в OnWorks: