tariel.ge › Полезное: бесплатные книги › Программирование: от нулей и единиц до PythonБесплатно · автор Тариел Бежанидзе
← Учебник по программированию ЛИСТ 09БЛОК 2 — КОМАНДНАЯ СТРОКАРЕВ. 1
Глава 09 · Командная строка: три системы

Терминал macOS: Bash/Zsh, файловая система, базовые команды

macOS изнутри — Unix-система (ядро Darwin), тот же корень, что и у Linux, а значит и её командная строка — прямой наследник той же традиции, что породила язык C в главе 08.

Оболочка (shell) — что это вообще такое

Приложение "Терминал" в macOS — это окно, в котором работает оболочка (shell) — программа, принимающая текстовые команды и передающая их операционной системе на исполнение. Долгое время оболочкой по умолчанию в macOS была Bash, с 2019 года (macOS Catalina) — Zsh. Для базовых команд, которые встретятся в этой главе, разница между ними почти незаметна — синтаксис совпадает, различия проявляются в более продвинутом скриптинге и настройке.

Файловая система: где ты находишься и как перемещаться

$ pwd # показать текущую папку (print working directory)
$ ls # список файлов и папок в текущей директории
$ ls -l # подробный список — с правами доступа, размером, датой
$ cd Documents # перейти в папку Documents (относительный путь)
$ cd /Users/tariel/Documents # перейти по полному (абсолютному) пути
$ cd ~ # перейти в домашнюю папку
$ cd .. # перейти на уровень выше (в родительскую папку)
$ cd . # текущая папка (используется реже отдельно, но важна в путях)
Абсолютный путь vs относительный

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

Базовая карта файловой системы

ПапкаНазначение
/UsersДомашние папки пользователей
/ApplicationsУстановленные приложения
/SystemСистемные файлы самой macOS — трогать без крайней необходимости не стоит
/LibraryОбщесистемные настройки и данные приложений

Операции с файлами

$ cp file.txt copy.txt # скопировать файл
$ mv old.txt new.txt # переместить или переименовать
$ rm file.txt # удалить файл
$ mkdir new_folder # создать папку
$ touch new_file.txt # создать пустой файл
rm не отправляет файлы в корзину

В отличие от удаления файла через Finder, команда rm удаляет файл безвозвратно, минуя корзину — восстановить его штатными средствами после этого нельзя. Особую осторожность стоит проявлять с флагом -r (рекурсивное удаление папок) и особенно с шаблонами вроде rm -rf * — ошибка в пути, набранная в спешке, может удалить не то, что планировалось, и без возможности отмены.

Просмотр содержимого файлов

$ cat file.txt # вывести содержимое файла целиком
$ less file.txt # постраничный просмотр — удобно для больших файлов
$ head file.txt # первые строки файла
$ tail file.txt # последние строки файла

Права доступа — теперь в символьной записи (возврат к главе 02)

Вывод ls -l показывает права доступа строкой вида -rwxr-xr-x — это символьная запись тех же самых прав, что в главе 02 разбирались в восьмеричной форме (например, "755"). Первый символ — тип объекта (- для файла, d для папки), дальше три группы по три символа: права владельца, группы, остальных — r (чтение), w (запись), x (выполнение), в том же порядке значений 4-2-1, что и в восьмеричном представлении. Символ "-" на месте буквы означает отсутствие этого конкретного права.

Перенаправление и конвейер — мощная идея

$ ls > list.txt # записать вывод команды в файл (перезаписав его)
$ ls >> list.txt # добавить вывод в конец файла, не стирая старое содержимое
$ cat file.txt | less # передать вывод одной команды на вход другой

Символ | (конвейер, pipe) — одна из самых мощных идей командной строки: вывод одной команды становится входом для следующей, позволяя строить цепочки обработки данных из простых команд, каждая из которых делает одну вещь хорошо — вместо одной большой сложной программы. Эта же философия много раз прозвучит в блоке 3 применительно к построению Python-скриптов из небольших переиспользуемых функций (глава 16).

sudo — повышенные привилегии, с осторожностью

Команда sudo перед любой другой командой выполняет её с правами администратора — необходимо для некоторых системных операций, но требует осторожности: команда, выполненная с sudo, может изменить или удалить то, что обычный пользователь без таких прав изменить бы не смог, включая системные файлы. Не используй sudo "на всякий случай", если команда без него уже работает.

Что дальше

Следующая глава — та же в целом задача (работа с файлами и системой из командной строки), но на Windows: CMD, с непохожим синтаксисом, но узнаваемо той же внутренней логикой.

Глава09 — Терминал macOS
Блок2 — Командная строка
Далее10 — Windows CMD
СтатусГотово · рев. 1
Предыдущая глава ← 08 · От C к современности Следующая глава 10 · Windows CMD →

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.