Для того чтобы разобраться в Bash и терминале, необходимо сначала провести небольшой экскурс в основные операционные системы, их файловые системы, а также немного поговорить об истории.
А зачем нам вообще этот терминал и Bash?
Дело в том, что когда мы занимаемся разработкой на ПК, у нас есть огромный выбор IDE (Integrated Development Environment - интегрированная среда разработки) и текстовых редакторов, которые упрощают работу с утилитами, предназначенными для анализа кода и его выполнения, до нажатия лишь пары кнопок.
В Android такого разнообразия нет (а навык работы с терминалом и Bash будет полезен даже на ПК), поэтому мы будем использовать терминал для выполнения нужных нам команд: установки зависимостей, управления проектом, запуска кода и др.
Основные ОС
Операционные системы - это основные программные платформы, на которых работают наши компьютеры. Хотя между ними есть множество различий, многие операционные системы имеют общие корни и идеи. Особое внимание в этом контексте нам стоит уделить системе Unix, поскольку этот исторический стандарт оказал огромное влияние на все современные системы.
В мире операционных систем существует несколько крупных игроков: Windows от Microsoft; Linux, представляющий собой множество дистрибутивов на базе одноимённого ядра (например Android, Ubuntu, Arch и др.); macOS от Apple. Один из ключевых аспектов, определяющих работу и эффективность операционных систем - это файловая система.
Файловая система - это способ, с помощью которого ОС хранит и организует данные на диске, получает к ним доступ. В этой статье мы рассмотрим основные файловые системы, используемые в каждой из этих ОС.
Unix
Unix - это не только операционная система, но и культурное наследие, заложившее основы для многих современных ОС. Два ключевых элемента, которые демонстрируют философию Unix: терминал (или командная строка) и файловая система.
-
Терминал Unix:
- Основы. Терминал в Unix - это интерфейс для взаимодействия с операционной системой через текстовые команды. Он предоставляет пользователю возможность запускать программы, управлять файловой системой и выполнять другие задачи без графического интерфейса.
- Философия. Одной из ключевых концепций Unix является принцип: "Делай одно дело и делай его хорошо". Большинство инструментов терминала предназначены для выполнения конкретной задачи, и их можно комбинировать для создания сложных рабочих процессов.
-
Примеры команд.
ls
(список файлов),grep
(поиск текста),chmod
(изменение прав доступа к файлам).
-
Файловая система Unix:
-
Иерархия. Файловая система Unix организована в иерархической структуре, начиная с корневого каталога
/
. От корня распространяются различные каталоги, такие как/bin
(базовые команды),/etc
(конфигурационные файлы) и/home
(домашние каталоги пользователей). - Всё является файлом. В Unix принято считать, что "всё является файлом". Это означает, что устройства, сокеты и даже процессы можно представить в виде файлов в файловой системе.
- Права доступа. В Unix каждый файл и каталог имеют набор прав доступа, который определяет, кто может читать, писать или выполнять данный файл. Это обеспечивает гибкое управление безопасностью.
-
Иерархия. Файловая система Unix организована в иерархической структуре, начиная с корневого каталога
А теперь посмотрим, каким именно образом Unix повлиял на все основные ОС, их файловые системы и использование в них терминала.
Linux и Unix
- Совместимость с Unix. Linux прямо произошел из Unix-подобных систем и во многом соответствует стандартам Unix. Это означает, что большинство команд и интерфейсов, характерных для Unix, также применимы в Linux.
- Терминал. Терминал Linux практически идентичен терминалу Unix. Здесь можно использовать широкий спектр инструментов и команд Unix.
- Файловая система. Файловая система Linux (например, ext4) вдохновлена файловой системой Unix. Иерархическая структура директорий начинается с корневого каталога (/), что схоже с Unix.
macOS и Unix
- Совместимость с Unix. macOS основан на Darwin, который, в свою очередь, произошёл от NeXTSTEP и BSD Unix. Таким образом, macOS наследует многие черты Unix.
- Терминал. Терминал macOS предоставляет доступ к большинству стандартных Unix-команд благодаря его происхождению от BSD.
- Файловая система. HFS+ и APFS - основные файловые системы для macOS. Они уникальны для Apple, но сохраняют многие Unix-подобные атрибуты, такие как права доступа и символические ссылки.
Windows и Unix
- Совместимость с Unix. Изначально Windows не имел прямых наследований от Unix, но с дальнейшим его развитием, особенно с внедрением подсистемы Windows для Linux (WSL), появилась возможность работы с Unix-подобными инструментами.
- Терминал. Стандартный командный интерпретатор Windows (cmd) сильно отличается от Unix-терминала. Однако с внедрением WSL пользователи смогли запускать полноценный Linux-терминал в Windows.
- Файловая система. NTFS - основная файловая система Windows. Она имеет множество отличий от Unix-подобных систем, хотя с внедрением WSL добавилась поддержка файловых систем Linux.
Android
Android - это операционная система, в первую очередь известная как платформа для мобильных устройств. Но что многие не осознают, так это тот факт, что своими корнями она как раз тесно связана Unix, потому что в Android практически всё взаимодействие организовано через готовые программы для упрощения использования смартфонов. Исследование этой связи раскроет нам интересные детали работы Android и её схожести с другими операционными системами.
-
Android и Unix:
- Основы. Android базируется на ядре Linux, которое, в свою очередь, является Unix-подобной операционной системой. Это означает, что многие особенности и принципы Unix также присутствуют в Android.
- Безопасность. Принципы безопасности Unix, такие как разделение привилегий и права доступа к файлам, также используются в Android для обеспечения безопасности данных и приложений.
-
Терминал Android:
- Доступ. В Android по умолчанию нет терминала, как в традиционных Unix-системах. Однако существует множество сторонних приложений (например, Termux, который мы будем использовать далее), предоставляющих терминальный интерфейс для продвинутых пользователей и разработчиков.
- Команды. С использованием терминала в Android можно выполнять многие из команд Unix. Однако некоторые команды или инструменты могут отсутствовать или быть изменёнными в зависимости от конкретной сборки Android и установленных ограничений.
-
Файловая система Android:
- Основы. Файловая система Android, также как и Unix, организована в иерархической структуре. Однако есть некоторые уникальные каталоги и особенности, характерные только для Android.
- Доступ. По умолчанию Android ограничивает доступ к некоторым частям файловой системы для обеспечения безопасности. Однако с правами суперпользователя (root) можно получить полный доступ ко всем файлам и каталогам.
Обязательно подписывайтесь на мой аккаунт dev.to и Telegram-канал, скоро будет ещё больше контента: https://t.me/MainArthur
Top comments (0)