Приглашение и команды
Команда оболочки состоит из трёх частей: имя программы, необязательные флаги, меняющие поведение, и аргументы, указывающие, над чем работать. Освоив эту грамматику, ты сможешь читать любой инструмент командной строки.
Каждая команда оболочки следует одной и той же грамматике: имя, затем переключатели, затем цели. Как только ты увидишь этот паттерн, любая новая команда становится читаемой с первого взгляда — даже та, которую ты никогда не видел раньше. До этого щелчка команды выглядят как помехи на линии.
К концу урока ты сможешь разобрать любую команду на имя программы, флаги и аргументы, и объяснить, что делают ls, ls -l и ls -la.
После этого урока ты сможешь определить три части команды оболочки (программа, флаги, аргументы), прочитать вывод ls -l и составлять простые варианты команд, комбинируя флаги.
Команда оболочки начинается с имени программы. Когда ты вводишь ls и нажимаешь Enter, оболочка ищет программу с именем ls в системе, запускает её и выводит результат. Первое слово в строке команды — всегда программа (или встроенная команда оболочки) для выполнения. Всё, что идёт следом, изменяет или направляет эту программу.
lsls без аргументов выводит имена файлов и каталогов в текущем каталоге в алфавитном порядке.
Флаги (опции) меняют поведение программы. Флаг — это короткое слово, начинающееся с - (один дефис для однобуквенных флагов) или -- (два дефиса для длинных флагов). Флаги идут после имени программы, перед аргументами. Они необязательны: без них команда использует настройки по умолчанию.
ls -lФлаг -l («long», длинный) говорит ls показывать по одной записи на строку с дополнительными подробностями: права доступа, владелец, размер и дата изменения. Имя программы (ls) не меняется; флаг изменяет формат вывода.
Несколько однобуквенных флагов можно объединить после одного дефиса. Вместо -l -a можно написать -la. Порядок внутри группы обычно не важен.
ls -la-a означает «all» (все) — включать скрытые файлы (файлы, имена которых начинаются с .). В сочетании -la даёт длинный формат и показывает скрытые файлы. Ты увидишь записи вроде .bashrc и .ssh, которые обычный ls молча пропускает.
Аргументы говорят программе, над чем работать. Аргумент — это путь, имя файла или любая другая цель, которая идёт после флагов. Без аргумента многие команды по умолчанию работают с текущим каталогом.
ls -l /etcЗдесь /etc — аргумент: показать содержимое /etc в длинном формате вместо текущего каталога. Команда может принимать ноль, один или несколько аргументов в зависимости от программы.
Чтение вывода ls -la.
Запуск ls -la в домашнем каталоге может дать:
total 48
drwxr-xr-x 6 alice alice 4096 Jun 20 09:14 .
drwxr-xr-x 32 root root 4096 Jun 18 17:00 ..
-rw-r--r-- 1 alice alice 220 Jun 18 17:00 .bash_logout
-rw-r--r-- 1 alice alice 3526 Jun 18 17:00 .bashrc
drwxrwxr-x 2 alice alice 4096 Jun 20 08:55 projectsЧитаем одну строку: -rw-r--r-- 1 alice alice 3526 Jun 18 17:00 .bashrc
-rw-r--r--— права доступа: ведущий-означает обычный файл;rw-= владелец может читать и писать;r--= группа может читать;r--= остальные могут читать.1— количество жёстких ссылок.alice alice— владелец и группа.3526— размер в байтах.Jun 18 17:00— дата и время последнего изменения..bashrc— имя файла (начинается с., поэтому скрыт от обычногоls).
▸Почему это работает
Стандарт POSIX определяет соглашение: однобуквенные флаги используют один дефис (-l), длинные описательные флаги — два дефиса (--long). Большинство Linux-команд следуют этому. Некоторые старые или не-POSIX инструменты (например, find) используют один дефис для длинных флагов (-name). Когда команда сбивает с толку, запусти man ls (страница руководства) или ls --help, чтобы увидеть точный синтаксис флагов.
▸Частая ошибка
Пробел внутри группы флагов ломает её: -l -a — верно; -l -a с лишним пробелом между ними тоже верно; но -l a (без дефиса перед a) передаёт строку a как аргумент команде ls, а не как флаг — и ls попытается вывести файл с именем a.
Какая команда выводит все файлы (включая скрытые) в длинном формате для каталога /var/log?
Каждая команда оболочки следует одной грамматике: имя программы, затем флаги (один дефис однобуквенные -l, два дефиса длинные --all), затем аргументы (пути или цели). ls выводит текущий каталог; ls -l добавляет подробности по каждому файлу; ls -la также показывает скрытые файлы. Флаги можно объединять (-la = -l -a). Как только ты увидел эту грамматику, любая новая команда — это просто новое имя программы; паттерн флагов и аргументов остаётся тем же.
Практика
Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.
Что-то непонятно?
Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.