HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Представьте, что вы изучаете новую для себя программу. Вы запускаете ее, читаете названия пунктов меню, нажимаете на разные кнопки и получаете какой-нибудь результат. В этот момент вы взаимодействуете с<strong>графическим интерфейсом</strong>- так же его называют<em>GUI</em>или<em>Graphical User Interface</em>.</p>
1 <p>Представьте, что вы изучаете новую для себя программу. Вы запускаете ее, читаете названия пунктов меню, нажимаете на разные кнопки и получаете какой-нибудь результат. В этот момент вы взаимодействуете с<strong>графическим интерфейсом</strong>- так же его называют<em>GUI</em>или<em>Graphical User Interface</em>.</p>
2 <p>Но GUI - это не единственный существующий интерфейс. В этом уроке мы изучим<strong>интерфейс командной строки</strong>(<em>CLI</em>или<em>Command Line Interface</em>). Такой интерфейс может показаться непривычным, ведь в нем нет ничего, кроме названия программы.</p>
2 <p>Но GUI - это не единственный существующий интерфейс. В этом уроке мы изучим<strong>интерфейс командной строки</strong>(<em>CLI</em>или<em>Command Line Interface</em>). Такой интерфейс может показаться непривычным, ведь в нем нет ничего, кроме названия программы.</p>
3 <h2>Аргументы и опции</h2>
3 <h2>Аргументы и опции</h2>
4 <p>Чем чаще вы будете использовать командную строку, тем больше различных программ вам встретится. Многие из них станут повседневными инструментами. Например, вы часто будете пользоваться программой ls, которая выводит на экран список файлов и директорий.</p>
4 <p>Чем чаще вы будете использовать командную строку, тем больше различных программ вам встретится. Многие из них станут повседневными инструментами. Например, вы часто будете пользоваться программой ls, которая выводит на экран список файлов и директорий.</p>
5 <p>Здесь все просто. Достаточно набрать название программы и нажать Enter:</p>
5 <p>Здесь все просто. Достаточно набрать название программы и нажать Enter:</p>
6 <p>Еще мы можем посмотреть скрытые файлы и директории. В *nix-системах они начинаются с точки: .profile.</p>
6 <p>Еще мы можем посмотреть скрытые файлы и директории. В *nix-системах они начинаются с точки: .profile.</p>
7 <p>Тогда необходимо набрать ls -a:</p>
7 <p>Тогда необходимо набрать ls -a:</p>
8 <p>А если захотим посмотреть содержимое каталога Public? Тогда мы воспользуемся командой ls с аргументом:</p>
8 <p>А если захотим посмотреть содержимое каталога Public? Тогда мы воспользуемся командой ls с аргументом:</p>
9 <p>Некоторые программы сложно конфигурируются, поэтому их бывает трудно использовать. Посмотрим на такой неочевидный пример:</p>
9 <p>Некоторые программы сложно конфигурируются, поэтому их бывает трудно использовать. Посмотрим на такой неочевидный пример:</p>
10 <p>В этом уроке нам пока не нужно детально разбираться во всех подробностях таких сложных примеров. Главное - увидеть закономерности в использовании консольных программ.</p>
10 <p>В этом уроке нам пока не нужно детально разбираться во всех подробностях таких сложных примеров. Главное - увидеть закономерности в использовании консольных программ.</p>
11 <p>Хорошая новость в том, что закономерности есть. Плохая новость - не все четко следуют им.</p>
11 <p>Хорошая новость в том, что закономерности есть. Плохая новость - не все четко следуют им.</p>
12 <p>Практически любую команду можно дополнить двумя способами:</p>
12 <p>Практически любую команду можно дополнить двумя способами:</p>
13 <p>Способ 1 - это<strong>аргументы</strong>. Для примера рассмотрим команду ls Music, которая содержит аргумент Music</p>
13 <p>Способ 1 - это<strong>аргументы</strong>. Для примера рассмотрим команду ls Music, которая содержит аргумент Music</p>
14 <p>Способ 2 - это<strong>опции</strong>, еще их иногда называют флагами. Например, команда ls -a содержит в себе опцию -a</p>
14 <p>Способ 2 - это<strong>опции</strong>, еще их иногда называют флагами. Например, команда ls -a содержит в себе опцию -a</p>
15 <h2>Опции</h2>
15 <h2>Опции</h2>
16 <p>Поговорим подробнее об опциях. Они всегда начинаются с одного или двух дефисов. Одна из часто используемых опций для просмотра списка файлов - -l. Она выводит дополнительную информацию по каждому файлу:</p>
16 <p>Поговорим подробнее об опциях. Они всегда начинаются с одного или двух дефисов. Одна из часто используемых опций для просмотра списка файлов - -l. Она выводит дополнительную информацию по каждому файлу:</p>
17 <p>Опции можно комбинировать. Представим, что мы хотим увидеть список всех файлов, включая скрытые, причем с подробным описанием. В таком случае нужно набрать команду ls -a -l. Можно объединить эти опции и записать ту же команду вот так:</p>
17 <p>Опции можно комбинировать. Представим, что мы хотим увидеть список всех файлов, включая скрытые, причем с подробным описанием. В таком случае нужно набрать команду ls -a -l. Можно объединить эти опции и записать ту же команду вот так:</p>
18 <ul><li>ls -al</li>
18 <ul><li>ls -al</li>
19 <li>ls -la</li>
19 <li>ls -la</li>
20 </ul><p>При работе с опциями не забывайте ставить -. Без него вы получите команду ls la в которой la - это аргумент, а не опция. В таком случае командная оболочка покажет содержимое директории la.</p>
20 </ul><p>При работе с опциями не забывайте ставить -. Без него вы получите команду ls la в которой la - это аргумент, а не опция. В таком случае командная оболочка покажет содержимое директории la.</p>
21 <p>Еще мы можем использовать опции и аргументы одновременно, хотя все зависит от программы. В случае с ls можно использовать одновременно и то, и другое. Чтобы просмотреть полное содержимое директории Music с информацией о каждом файле, можно набрать команду ls -la Music:</p>
21 <p>Еще мы можем использовать опции и аргументы одновременно, хотя все зависит от программы. В случае с ls можно использовать одновременно и то, и другое. Чтобы просмотреть полное содержимое директории Music с информацией о каждом файле, можно набрать команду ls -la Music:</p>
22 <p>Как видно из примера выше, опции указываются слева от аргументов. Но иногда бывают ситуации, когда они используются справа, такое чаще встречается в сложных утилитах со вложенными командами. Их мы сейчас не рассматриваем.</p>
22 <p>Как видно из примера выше, опции указываются слева от аргументов. Но иногда бывают ситуации, когда они используются справа, такое чаще встречается в сложных утилитах со вложенными командами. Их мы сейчас не рассматриваем.</p>
23 <p>Иногда сложно понять подобные записи: -tupa. Не совсем понятно, что это:</p>
23 <p>Иногда сложно понять подобные записи: -tupa. Не совсем понятно, что это:</p>
24 <ul><li>Одна опция tupa</li>
24 <ul><li>Одна опция tupa</li>
25 <li>Четыре опции t, u, p и a, объединенные в одну цепочку</li>
25 <li>Четыре опции t, u, p и a, объединенные в одну цепочку</li>
26 </ul><p>В таких ситуациях нужно смотреть документацию соответствующей программы. Это можно сделать с помощью команды man (сокращение от<em>manual</em>). Достаточно набрать man &lt;имя команды&gt; - и мы попадем в режим чтения документации.</p>
26 </ul><p>В таких ситуациях нужно смотреть документацию соответствующей программы. Это можно сделать с помощью команды man (сокращение от<em>manual</em>). Достаточно набрать man &lt;имя команды&gt; - и мы попадем в режим чтения документации.</p>
27 <p>В мануале содержится описание утилиты в целом, формат ее вызова, все возможные опции, примеры вызовов и много другой полезной информации:</p>
27 <p>В мануале содержится описание утилиты в целом, формат ее вызова, все возможные опции, примеры вызовов и много другой полезной информации:</p>
28 <p>Попробуйте прямо сейчас посмотреть мануал программы ls, набрав в терминале man ls. Перемещаться внутри мануала можно так:</p>
28 <p>Попробуйте прямо сейчас посмотреть мануал программы ls, набрав в терминале man ls. Перемещаться внутри мануала можно так:</p>
29 <ul><li>Промотать вперед - f (forward)</li>
29 <ul><li>Промотать вперед - f (forward)</li>
30 <li>Промотать назад - b (backward)</li>
30 <li>Промотать назад - b (backward)</li>
31 <li>Выход из режима просмотра - q (quit)</li>
31 <li>Выход из режима просмотра - q (quit)</li>
32 </ul><p>Еще полезен сайт<a>explainshell</a>. На нем можно вбить любую команду и посмотреть удобное интерактивное описание:</p>
32 </ul><p>Еще полезен сайт<a>explainshell</a>. На нем можно вбить любую команду и посмотреть удобное интерактивное описание:</p>
33 <h2>Варианты опций</h2>
33 <h2>Варианты опций</h2>
34 <p>У большинства утилит есть два варианта одной и той же опции - длинная и короткая версия. Например, в PHP есть -v и --version:</p>
34 <p>У большинства утилит есть два варианта одной и той же опции - длинная и короткая версия. Например, в PHP есть -v и --version:</p>
35 <p>Длинные и короткие версии опций используются в разных ситуациях:</p>
35 <p>Длинные и короткие версии опций используются в разных ситуациях:</p>
36 <ul><li>Когда мы работаем в терминале, важно набирать быстро - там удобны короткие опции</li>
36 <ul><li>Когда мы работаем в терминале, важно набирать быстро - там удобны короткие опции</li>
37 <li>Когда мы пишем скрипт из разных команд, важно писать понятно - лучше использовать длинные опции. Так с первого взгляда очевидно, что означает каждая опция</li>
37 <li>Когда мы пишем скрипт из разных команд, важно писать понятно - лучше использовать длинные опции. Так с первого взгляда очевидно, что означает каждая опция</li>
38 </ul><p>Надо отметить, что обычно длинные опции предваряются двумя дефисами, но некоторые программы нарушают это правило и используют один, что вносит путаницу.</p>
38 </ul><p>Надо отметить, что обычно длинные опции предваряются двумя дефисами, но некоторые программы нарушают это правило и используют один, что вносит путаницу.</p>
39 <p>Опции, которые мы рассматривали выше, не имеют параметров. Но нередко встречаются опции, которые недостаточно просто указать.</p>
39 <p>Опции, которые мы рассматривали выше, не имеют параметров. Но нередко встречаются опции, которые недостаточно просто указать.</p>
40 <p>Например, в macOS есть встроенная утилита say. Если просто передать ей какой-то текст, то она его произнесет. Можно пойти дальше и записать произнесенный текст в файл.</p>
40 <p>Например, в macOS есть встроенная утилита say. Если просто передать ей какой-то текст, то она его произнесет. Можно пойти дальше и записать произнесенный текст в файл.</p>
41 <p>Чтобы это сделать, надо указать опцию -o и записать путь до файла:</p>
41 <p>Чтобы это сделать, надо указать опцию -o и записать путь до файла:</p>
42 <p>В этом примере путь до файла - это<strong>значение опции</strong>, обычно оно указывается через пробел от самой опции.</p>
42 <p>В этом примере путь до файла - это<strong>значение опции</strong>, обычно оно указывается через пробел от самой опции.</p>
43 <p>Если значение опции содержит в себе специальные или пробельные символы, то его нужно оборачивать в кавычки, двойные или одинарные:</p>
43 <p>Если значение опции содержит в себе специальные или пробельные символы, то его нужно оборачивать в кавычки, двойные или одинарные:</p>
44 <p>Некоторые программы допускают использование знака = вместо пробела:</p>
44 <p>Некоторые программы допускают использование знака = вместо пробела:</p>
45 <p>Кроме того, say позволяет указать входной файл, который нужно прочитать. Если он указан, то say проигнорирует передаваемый текст как аргумент:</p>
45 <p>Кроме того, say позволяет указать входной файл, который нужно прочитать. Если он указан, то say проигнорирует передаваемый текст как аргумент:</p>
46 <p>Теперь посмотрим на документацию программы say, а именно в раздел<strong>SYNOPSIS</strong>. Там мы увидим все доступные возможности:</p>
46 <p>Теперь посмотрим на документацию программы say, а именно в раздел<strong>SYNOPSIS</strong>. Там мы увидим все доступные возможности:</p>
47 <p>Такое подробное описание есть практически у любой утилиты. Описания построены по одному и тому же принципу:</p>
47 <p>Такое подробное описание есть практически у любой утилиты. Описания построены по одному и тому же принципу:</p>
48 <ul><li>Квадратные скобки [] обозначают необязательность. Например, опция -v необязательна, то же самое касается и любых других опций этой программы</li>
48 <ul><li>Квадратные скобки [] обозначают необязательность. Например, опция -v необязательна, то же самое касается и любых других опций этой программы</li>
49 <li>Вертикальная черта | обозначает операцию "исключающее или". Посмотрите на последний блок [-f file | string ...]. Он означает, что say может либо произносить текст из файла, либо произносить строчку, переданную как аргумент. Сделать оба варианта одновременно не получится</li>
49 <li>Вертикальная черта | обозначает операцию "исключающее или". Посмотрите на последний блок [-f file | string ...]. Он означает, что say может либо произносить текст из файла, либо произносить строчку, переданную как аргумент. Сделать оба варианта одновременно не получится</li>
50 </ul><p>Бывают и другие вариации описания способов вызова: значение по умолчанию, выбор из конкретных элементов, отрицание.</p>
50 </ul><p>Бывают и другие вариации описания способов вызова: значение по умолчанию, выбор из конкретных элементов, отрицание.</p>
51 <p>Здесь мы разобрали только самые базовые моменты, с которыми вам предстоит столкнуться. Не стоит переживать, если вы не чувствуете, что все это запомнили. Опции требуют практики и опыта, а не заучивания теории. Теперь вы понимаете общие принципы и можете смотреть документацию, далее дело за экспериментами.</p>
51 <p>Здесь мы разобрали только самые базовые моменты, с которыми вам предстоит столкнуться. Не стоит переживать, если вы не чувствуете, что все это запомнили. Опции требуют практики и опыта, а не заучивания теории. Теперь вы понимаете общие принципы и можете смотреть документацию, далее дело за экспериментами.</p>