Операционная система Linux




Слова и разделители


При разборе командной строки shell использует понятие разделитель (delimiter). Разделитель - это символ, разделяющий слова; таким образом, командная строка - это последовательность слов (которые имеют значение) и разделителей (которые значения не имеют). Для shell разделителями являются символ пробела, символ табуляции и символ перевода строки (который все-таки может попасть между словами способом, описанным в лекциях 6 и 7). Количество разделителей между двумя соседними словами значения не имеет.

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

[methody@localhost methody]$ echo One Two Three One Two Three [methody@localhost methody]$ echo One "Two Three" One Two Three [methody@localhost methody]$ echo 'One > > Ой. И что дальше? > А, кавычки забыл!' One Ой. И что дальше? А, кавычки забыл! [methody@localhost methody]$

Пример 2.20. Закавычивание в командной строке

В первом случае команде echo было передано три параметра - "One", "Two" и "Three". Она их и вывела, разделяя пробелом. Во втором случае параметров было два: "One" и "Two Three". В результате эти два параметра были также выведены через пробел. В третьем случае параметр был всего один - от открывающего апострофа "One'" до закрывающего ...забыл!'". Все время ввода bash услужливо выдавал Мефодию подсказку "> " - в знак того, что набор командной строки продолжается, но в режиме ввода содержимого кавычек.

  1)

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

  2)

  По-французки "apropos" означает "кстати", а "what is" - по-английски "что такое".

  3)

  Кстати, с незапамятных времён who поддержиает один нестандартный набор параметров: who am i делает то же, что и who -m.




Содержание  Назад  Вперед