Синтаксис командной строки linux

Основной синтаксис командной строки Linux

Основой интерфейса командной строки UNIX является командный интерпретатор (КИ), являющийся первой и главной программой, запускаемой в сеансе пользователя.

Двусторонний попеременный диалог с командным интерпретатором начинается с приглашения, в ответ на которое пользователь вводит команду, отправляя ее на выполнение управляющим символом LF 0х0А, получает результат ее исполнения на терминале и новое приглашение, сигнализирующее о готовности КИ к исполнению очередной команды.

$ command -х [-у] -z optarg < — l | —long-option>arg1 arg2 . . .

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

Базовый синтаксис (подчиняющийся второй части стандарта W: [POSIX]) языка любого командного интерпретатора на самом деле достаточно прост и напоминает язык, близкий к естественному.

Например, rm -f -R Изображения Музыка переводится на человеческий как «удалить (rm) без шума и пыли (-f) и со всеми потрохами (-R) каталоги Изображения и Музыка».

Принято говорить, что команда состоит из лексем (лексических элементов), разделенных пробельными символами — пробелами SP 0x20 и табуляциями HT 0x09 — в любом количестве и сочетании.

Первая лексема — это название команды, за которой следуют ее параметры: сначала опции (они же — ключи, они же — модификаторы) без аргументов (-х [-у]) и (—long-option) или с аргументами (optarg ), а в конце— аргументы ( arg1 arg2) самой команды.

Название команды — это глагол, указывающий ЧТО делать; опции — это наречия и прочие части речи, объясняющие КАК это делать; и наконец, аргументы задают то, с ЧЕМ это делать. В разнообразной документации при описании синтаксиса команды, ее опций и аргументов принято использовать квадратные скобки для указания необязательности опции или аргумента, фигурные скобки и вертикальную черту для указания выбора из вариантов и многоточие для указания повторяемости.

Читайте также:  Linux operating system all versions

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

Утилиты which и type

ls является алиасом для ‘ls —color=auto’

which является /usr/bin/which

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

Подстановка псевдонимов

Is является алиасом для ‘ls —color=auto’

итого 36
12 examples.desktop 4 .bashrc 4 .profile 4 .lesshst
4 .cache 4 .bash_history 4 .bash_logout

В примере с командой m лексема -R означает опцию, требующую выполнить рекурсию (recursion), но не аргумент — объект, подлежащий удалению. В примере с командой m лексема -R означает опцию, требующую выполнить рекурсию (recursion), но не аргумент — объект, подлежащий удалению.

Опции командной строки

В истории развития операционной системы UNIX программы использовали разные способы задания своих опций:
♦ односимвольные, например ls -а -l (что эквивалентно ls -l -а или ls -al или ls -la);
♦ многосимвольные, например find /var -xdev;
♦ длинные, например ps —help;
♦ с аргументами, например kill -n 15 1, или kill -n15 1, или du -В M, или du -BM,

или find /etc -type d, или даже ls —sort=slze;

♦ «нестандартные», например set +x, tar czf tar.tgz ~ или dd if=/dev/dvd of=dvd.iso.

Знак «минус», предваряющий опции, естественно используется для того, чтобы отличать их от аргументов. Среди прочих, он был выбран потому, что редко встречается как первый символ в аргументах команд (в качестве которых зачастую выступают имена файлов).

И еще потому, что на терминале классической UNIX набор более логичного знака «плюс» (что могло бы означать «включить»,«активировать») требовал достаточных усилий по нажатию клавиши SHIFT. В результате получилось, что, например, в команде set опция х (execution trace) в форме -х включает, а +х выключает трассировку выполнения команд.

Читайте также:  Компиляция файла си в линукс

В тех редких случаях, когда аргумент команды все же начинается с символа «минус» и тем самым похож на опцию (представим, что нужно выполнить действие над файлом с именем -=filenames=-), специальная опция — сигнализирует о конце списка опций, за которым следуют лексемы, обязанные расцениваться как аргументы, вне зависимости от их написания.

Конец списка опций

stat: неверный ключ — «=»
Попробуйте «stat —help» для получения более подробного описания.

Файл: «-=filename=-»
Размер: 0 Блоков: 0 Блок B/B: 4096 пустой обычный файл
Устройство: fc00h/64512d Inode: 26870044 Ссылки: 1
Доступ: (0600/-rw -) Uid: ( 1000/ john) Gid: ( 1000/ john)
Доступ: 2018-08-24 01:37:21.574640275 +0300

Модифицирован: 2018-08-24 01:37:21.574640275 +0300

Изменён: 2018-08-24 01:37:21.574640275 +0300

Короткие, односимвольные опции (например -l -а) без своих аргументов издревле можно было объединять в группы (-lа или -al), однако их в этом случае сложно отличать от многосимвольных (-xdev) или односимвольных, склеенных со своими аргументами (-ВМ).

Поэтому позже появились длинные (в так называемом GNU-стиле) опции, обозначаемые двумя знаками «минус», позволяющие навести некоторый порядок в виде —block-size=M вместо -ВМ или, предположим,

—dont-descent вместо -xdev.

Командный интерфейс Linux

Командный интерфейс Linux, каким бы «страшным» не казался, в реальности удивительно функционален для решения массы разнообразных задач, хотя он и не решает абсолютно все задачи одинаково эффективно. Например, его невероятно сложно и неудобно использовать для обработки графической информации, когда при взаимодействии с пользователем требуется ввести колоссальное количество «графических» данных, например, указать обтравочный контур. В этом случае графический интерфейс с «непосредственным» манипулированием подойдет гораздо лучше.

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

Читайте также:  Создать пользователя linux bash

Естественные языки, которые используют люди для взаимодействия между собой, на порядок сложнее формального командного языка операционной системы. Однако использование глаголов (команд), существительных (аргументов) и наречий (опций) родного языка мало у кого вызывает чувство неудобства. Наоборот, странным покажется тот человеческий индивидуум, который попытается в обществе использовать непосредственное манипулирование, например, указывая (щелкая) пальцем в магазине на товары (значки) и мыча что-то нечленораздельное. Скорее всего, мы примем его за иностранца (или это будет ребенок), еще не в полной мере владеющего языком.

Именно командный интерфейс в современном виде — аудиоформе — больше не является уделом художественных фантастических произведений, где капитаны межгалактических кораблей командуют кораблям «включить защитное поле». Теперь мы все можем при помощи командного аудиоинтерфейса смартфона найти ближайшую пиццерию или маршрут к нужному месту. Надеюсь, что и алфавитно-цифровая форма командного интерфейса, доставшаяся «в наследство» от UNIX из 70-х годов прошлого века, вас тоже не особо испугает. Ok, Google?

Источник

Оцените статью
Adblock
detector