DEV Community

Cover image for "Мобильная" разработка. [Операционные системы и терминал]
Arthur Kh
Arthur Kh

Posted on • Edited on • Originally published at masterarthur.xyz

"Мобильная" разработка. [Операционные системы и терминал]

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

А зачем нам вообще этот терминал и Bash?

Дело в том, что когда мы занимаемся разработкой на ПК, у нас есть огромный выбор IDE (Integrated Development Environment - интегрированная среда разработки) и текстовых редакторов, которые упрощают работу с утилитами, предназначенными для анализа кода и его выполнения, до нажатия лишь пары кнопок.
В Android такого разнообразия нет (а навык работы с терминалом и Bash будет полезен даже на ПК), поэтому мы будем использовать терминал для выполнения нужных нам команд: установки зависимостей, управления проектом, запуска кода и др.

Основные ОС

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

В мире операционных систем существует несколько крупных игроков: Windows от Microsoft; Linux, представляющий собой множество дистрибутивов на базе одноимённого ядра (например Android, Ubuntu, Arch и др.); macOS от Apple. Один из ключевых аспектов, определяющих работу и эффективность операционных систем - это файловая система.

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

Unix

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

  1. Терминал Unix:
    • Основы. Терминал в Unix - это интерфейс для взаимодействия с операционной системой через текстовые команды. Он предоставляет пользователю возможность запускать программы, управлять файловой системой и выполнять другие задачи без графического интерфейса.
    • Философия. Одной из ключевых концепций Unix является принцип: "Делай одно дело и делай его хорошо". Большинство инструментов терминала предназначены для выполнения конкретной задачи, и их можно комбинировать для создания сложных рабочих процессов.
    • Примеры команд. ls (список файлов), grep (поиск текста), chmod (изменение прав доступа к файлам).
  2. Файловая система Unix:
    • Иерархия. Файловая система Unix организована в иерархической структуре, начиная с корневого каталога /. От корня распространяются различные каталоги, такие как /bin (базовые команды), /etc (конфигурационные файлы) и /home (домашние каталоги пользователей).
    • Всё является файлом. В 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 и её схожести с другими операционными системами.

  1. Android и Unix:
    • Основы. Android базируется на ядре Linux, которое, в свою очередь, является Unix-подобной операционной системой. Это означает, что многие особенности и принципы Unix также присутствуют в Android.
    • Безопасность. Принципы безопасности Unix, такие как разделение привилегий и права доступа к файлам, также используются в Android для обеспечения безопасности данных и приложений.
  2. Терминал Android:
    • Доступ. В Android по умолчанию нет терминала, как в традиционных Unix-системах. Однако существует множество сторонних приложений (например, Termux, который мы будем использовать далее), предоставляющих терминальный интерфейс для продвинутых пользователей и разработчиков.
    • Команды. С использованием терминала в Android можно выполнять многие из команд Unix. Однако некоторые команды или инструменты могут отсутствовать или быть изменёнными в зависимости от конкретной сборки Android и установленных ограничений.
  3. Файловая система Android:
    • Основы. Файловая система Android, также как и Unix, организована в иерархической структуре. Однако есть некоторые уникальные каталоги и особенности, характерные только для Android.
    • Доступ. По умолчанию Android ограничивает доступ к некоторым частям файловой системы для обеспечения безопасности. Однако с правами суперпользователя (root) можно получить полный доступ ко всем файлам и каталогам.

Обязательно подписывайтесь на мой аккаунт dev.to и Telegram-канал, скоро будет ещё больше контента: https://t.me/MainArthur

Top comments (0)