6.1.4 Вступление в Linux и основные команды

Linux — это операционная система, которая, как и Windows или macOS, управляет компьютером. Однако она имеет свои особенности, которые делают её подходящей для различных задач — от серверов до встраиваемых устройств и даже для настольных ПК. Главное отличие Linux от большинства других операционных систем заключается в том, что она является открытым программным обеспечением, то есть исходный код доступен для изучения и изменений.

Она основана на UNIX — операционной системе, которая была разработана в 1960-х годах и оказала большое влияние на создание других систем. Linux существует в разных дистрибутивах, таких как Ubuntu, Debian, CentOS, Fedora и многих других. Каждый из них немного отличается, но базовые принципы остаются одинаковыми.

Вариативность дистрибутивов Linux – что выбрать?

Одним из ключевых аспектов Linux является наличие множества дистрибутивов. Каждый дистрибутив Linux имеет свои особенности и предназначен для различных целей, от простоты в использовании до максимальной кастомизации и оптимизации для серверов. Выбор дистрибутива зависит от потребностей пользователя и его уровня знаний.

Основные дистрибутивы:

  • Ubuntu и его производные (Linux Mint, Zorin OS и т.д.) — наиболее популярные и удобные для начинающих. Они ориентированы на пользователя, обеспечивая простой интерфейс и доступность пакетов через менеджеры пакетов.
  • Debian — более стабильный и подходящий для тех, кто ценит безопасность и долговечность, но требует большего времени на настройку.
  • Fedora — дистрибутив, ориентированный на новейшие технологии и сообщество разработчиков. Он более “свежий” по сравнению с Ubuntu, но может быть менее стабильным.
  • Arch Linux — для опытных пользователей. Arch предлагает полную кастомизацию, и установка на нем напоминает настройку системы с нуля.
  • CentOS/RHEL — ориентированы на серверное использование и предлагают высокую стабильность, что делает их идеальными для серверов и организаций.
  • Kali Linux — дистрибутив, специализирующийся на безопасности и тестировании на проникновение.

Для новичков рекомендуется в первую очередь Ubuntu или Mint или Zorin OS (для обучения), так как они предлагают максимально удобный интерфейс и простоту настройки.

Выбор зависит от вашего опыта и того, какие задачи вам нужно решать. Linux позволяет пользователям гибко настроить систему, но для новичков важна простота и поддержка.

Основные различия

Если вы привыкли работать с Windows, переход в Linux может показаться непривычным. Вот несколько ключевых отличий:

  • Командная строка — в отличие от Windows, где интерфейс и все действия выполняются в основном через графическое окружение, Linux широко использует командную строку. В Windows тоже можно работать с командной строкой (CMD или PowerShell), как и дистрибутивы Linux часто имеют версии с графической оболочкой, но чисто статистически в Linux это гораздо более основной способ взаимодействия с системой.

  • Гибкость и настройка — в Linux можно настраивать все, что угодно, начиная от самого ядра системы и заканчивая каждым сервисом. Windows обычно ограничивает пользователю возможность настройки, давая интерфейс с уже заранее определенными параметрами.

  • Безопасность — Linux считается более безопасной операционной системой по сравнению с Windows. Это связано с тем, что большинство пользователей в Linux работают без прав суперпользователя (root), и для выполнения административных действий требуется ввод пароля.

  • Обновления и установка программ — в Linux программы часто устанавливаются через менеджеры пакетов, такие как apt или yum, а не через скачивание и установку файлов с сайта. Обновления системы также происходят централизованно, и это может быть более безопасным и удобным способом поддержания системы в актуальном состоянии.

  • Файловая система — в отличие от Windows, где используется система NTFS и разделы C:, D:, E…, в Linux все начинается с единой корневой папки /. Все файлы и каталоги могут быть организованы в дереве, начиная с корня.

В целом, ОС семейства Linux значительно более производительные в контексте серверной работы. Хотя у Microsoft имеется собственная серверная ОС Windows Server, используется она скорее в нишевых проектах с определенными зависимостями или специфичиными запросам.

Детально о преимуществах и недостатках Linux в сравнении с Windows

Преимущества Linux:

  • Открытость и кастомизация. Linux является открытым ПО, что позволяет пользователю изменять исходный код, настраивать систему и устанавливать только те компоненты, которые необходимы. Дистрибутивы Linux предоставляют выбор настроек, которые могут подстроить систему под любые требования, от легкости до максимальной безопасности.

  • Безопасность. В Linux используется модель безопасности с правами пользователей, где обычный пользователь не имеет доступа к системным файлам, что повышает безопасность. Linux значительно реже поддается вирусным атакам и имеет более строгие механизмы контроля доступа.

  • Легкость и эффективность. Ядро Linux не требует таких ресурсов, как Windows, и может работать на старых или слабых компьютерах. Благодаря легкости системы можно настроить рабочую среду, которая будет работать быстрее на тех же самых ресурсах.

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

Бесплатность. Почти все дистрибутивы Linux являются бесплатными, в отличие от Windows, где необходимо покупать лицензию.

Недостатки Linux:

Совместимость с программами. Многие популярные программы, такие как Microsoft Office или Adobe Photoshop, отсутствуют в Linux, и приходится искать альтернативы (например, LibreOffice или GIMP). Некоторые профессиональные приложения могут работать только в Windows, и для этого приходится использовать Wine или виртуальные машины.

  • Поддержка драйверов. В некоторых случаях драйвера для оборудования могут быть не так хорошо поддержаны в Linux, особенно для новых моделей принтеров, видеокарт и других устройств. Хотя ситуация улучшилась, пользователи иногда сталкиваются с трудностями при настройке драйверов.

  • Игры. Хотя Linux все больше поддерживает игры, многие популярные игры и игровые платформы (например, Steam) могут не работать так же хорошо, как в Windows. Для игр на Linux необходимо либо использовать Proton, либо найти альтерантивы.

Сложность для новичков. Для пользователей, привыкших к Windows, переход на Linux может быть сложным, особенно если речь идет о командной строке и настройке системы вручную.

Теперь, когда мы разобрались с основами, можно переходить ко второму разделу, где более подробно рассмотрим, что нужно знать пользователю Windows, переходящему на Linux.

Что нужно знать пользователю Windows, переходящему на Linux?

Файловая система и пути

В Linux нет разделов, как в Windows (C:, D:, и т.д.). Вместо этого вся файловая система начинается с корня (/). Все устройства (например, жесткие диски, флешки) монтируются в эту файловую систему и становятся доступными через каталоги, например, /mnt или /media. Если Вы подключаете внешний диск, он будет доступен через каталог вроде /media/имя_диска. Важно понимать, что вся файловая структура выглядит как единое дерево, и даже устройства и разделы интегрируются в это дерево.

Пример: В Windows внешний диск может быть доступен как E:, а в Linux он будет доступен как /media/username/ExternalDrive.

Пользователь и права доступа

В Linux каждый файл или каталог имеет владельца, группу и права доступа, которые могут быть настроены отдельно для чтения, записи и выполнения. Это важное различие от Windows, где атрибуты безопасности можно изменить только через графический интерфейс. В Linux управление правами доступа происходит через команды, такие как chmod, chown, и chgrp.

Также, в Linux часто используют пользователя root для выполнения административных задач. В Windows можно использовать учетную запись администратора, но в Linux рекомендуется запускать команды с правами root только по мере необходимости, используя команду sudo перед командой.

Пример: Если вы хотите изменить настройки системы, вам нужно будет использовать sudo для выполнения команд с правами суперпользователя, например, sudo apt update для обновления системы.

Менеджеры пакетов и установка программ

В Linux нет такого понятия, как скачивание установочных файлов (например, .exe в Windows). Все программы устанавливаются через менеджеры пакетов, которые являются удобным инструментом для установки, обновления и удаления программ. Это позволяет быстро устанавливать приложения с минимальными усилиями.

Примеры популярных менеджеров пакетов:

  • APT (Advanced Package Tool) для дистрибутивов на базе Debian (например, Ubuntu). Для установки программы достаточно выполнить команду типа sudo apt install firefox.
  • YUM/DNF для дистрибутивов на базе Red Hat (например, Fedora, CentOS). Для установки программы используйте команду sudo dnf install firefox.
  • Pacman для Arch Linux и его производных. Установка программы с помощью команды sudo pacman -S firefox.

Установка через менеджер пакетов гарантирует, что вы получите последнюю стабильную версию программы, и минимизирует риск загрузки вредоносных файлов.

Обновления системы

Обновления в Linux происходят централизованно через систему пакетов. Это значит, что Вам не нужно вручную искать обновления для каждой программы, как это происходит в Windows.

В Linux обновления часто включают не только обновления для приложений, но и для самой операционной системы и ядра. В Windows обновления происходят через Центр обновлений Windows, и, хотя это тоже автоматический процесс, в Linux обновления можно контролировать с помощью простых команд в терминале, например sudo apt update && sudo apt upgrade для обновлений в Ubuntu.

Использование командной строки

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

Пример: Для создания нового каталога в Windows достаточно щелкнуть правой кнопкой мыши и выбрать Создать папку. В Linux вы можете сделать это с помощью команды в терминале:

mkdir myfolder

Для навигации по файлам в Linux используется команда cd, а для просмотра содержимого каталога — команда ls. В Windows это аналогично проводнику, но через командную строку.

Процесс работы с программами

В Windows многие программы запускаются автоматически при старте системы и могут работать в фоновом режиме без вашего вмешательства с помощью системы Служб. В Linux вы часто будете вручную запускать процессы, контролировать их с помощью команд, таких как ps для просмотра запущенных процессов и kill для завершения программы. А грубым аналогом Служб являются Сервисы.

Пример: Чтобы увидеть список процессов, запущенных на вашей системе, используйте команду:

ps aux

Чтобы завершить процесс, нужно использовать команду:

kill [PID]

где [PID] — это идентификатор процесса.

Настройки системы

В Linux большинство настроек системы доступно через текстовые конфигурационные файлы, которые можно отредактировать с помощью текстовых редакторов, таких как nano, vim или gedit. В Windows настройки чаще всего изменяются через графический интерфейс или с помощью редактора реестра.

Пример: Для изменения настроек сети в Linux, вам нужно будет редактировать файлы, такие как /etc/network/interfaces или использовать команды для управления сетью, например nmcli.

Совместимость программ

Хотя в Linux есть множество программ для замены популярных приложений Windows, некоторые программы могут работать только в Windows. Для запуска Windows-программ в Linux существует несколько решений:

  • Wine — позволяет запускать Windows-программы на Linux.
  • VirtualBox или VMware — позволяет установить Windows в виртуальной машине внутри Linux.

Такой подход даст вам более полное представление о практических аспектах перехода с Windows на Linux. Если нужно продолжить, готов добавить больше деталей!

Основные команды

Достаточно теории. Давайте пройдемся по практике!

Небольшой дисклеймер перед ознакомлением с командами

Команды Linux так или иначе выполняются через терминал. Это может быть прямой терминал на Вашем локальном ПК, удаленное подключение к такому же терминалу по VNC или IP-KVM и так далее. Но в 90% случаев - это реализуется через удаленное подключение по протоколу SSH

Команды в Linux обычно следуют определенному синтаксису, который состоит из нескольких компонентов. Чтобы понять, как работает команда, важно понимать роль каждого элемента. Среднестатистическая команда в Linux выглядит примерно вот так:

tar -czvf archive.tar.gz folder

Где:

  • tar – это название самой программы или утилиты, которую вы хотите запустить. В нашем примере это tar – утилита для создания и извлечения архивов в Linux. В данном случае она используется для создания архива из каталога.
  • czvf – после команды могут следовать различные аргументы, которые уточняют, как программа должна работать. Аргументы обычно начинаются с одного или двух дефисов и состоят из букв (или слов). В примере -czvf — это целый набор аргументов, и каждый из них выполняет конкретную задачу и может быть скомбинирован друг с другом.
  • archive.tar.gz и folder – после команды и ее аргументов идут переменные, которые представляют собой данные, которые вы хотите обработать командой. В примере archive.tar.gz — это название нашего будущего архива, а folder – каталог или файл, который будет архивирован.

Как можно заметить, переменные мы выделили отдельно. Точно также мы будем выделять их и далее во всех примерах.

Как посмотреть детальную информацию о команде прямо в терминале?

Синтаксис построения команд в Linux удивительно вариативный – чтобы описать все параметры даже базовых команд непременно ушло бы очень много времени и текста. Если же Вы хотите ознакомиться со всеми параметрами без поиска соответствующей документации, это можно сделать прямо в терминале.

  • man и --help. Чтобы узнать больше о любой команде в Linux, можно использовать команду man (manual). Она показывает руководство по использованию команды:

  • Пример:

man ls

Выведет подробное руководство по команде ls.

  • Альтернативно, большинство команд поддерживают флаг --help, который также предоставляет краткую информацию о команде.
ls --help

В Linux для навигации по файловой системе используется несколько ключевых команд. Основной командой для перемещения между каталогами является cd (change directory).

Примеры использования:

  • Перейти в домашний каталог пользователя:
cd ~
  • Перейти в родительский каталог (на уровень выше):
cd ..
  • Перейти в конкретный каталог:
cd /home/user/documents
  • Чтобы узнать, в каком каталоге вы находитесь, используйте команду pwd (print working directory). Это полезно, если вы запутались в структуре каталогов:
pwd

Выведет полный путь к текущему каталогу, например /home/user.

Управление файлами и каталогами

Linux предоставляет несколько команд для работы с файлами и каталогами. Вот основные из них:

  1. ls — отображает содержимое каталога.
  • Простое использование:
ls
  • Для подробного списка с правами, владельцами и размерами:
ls -l
  • Для отображения скрытых файлов (начинаются с точки):
ls -a
  1. cp — копирует файлы и каталоги.
  • Копирование файла:
cp file.txt /home/user/Documents/
  • Копирование каталога (с опцией -r для рекурсивного копирования):
cp -r folder /home/user/Documents/
  1. mv — перемещает или переименовывает файлы.
  • Перемещение файла:
mv file.txt /home/user/Documents/
  • Переименование файла:
mv oldname.txt newname.txt
  1. rm — удаляет файлы или каталоги.
  • Удаление файла:
rm file.txt
  • Удаление каталога и всех его содержимых файлов (с опцией -r):
rm -r folder

5. touch — создает пустой файл или обновляет временную метку существующего файла.

  • Создание файла:
touch newfile.txt

Управление правами доступа

В Linux важной частью работы с файлами является управление правами доступа. Используется команда chmod для изменения прав доступа, и chown для изменения владельца файлов.

1. chmod — изменяет права доступа к файлам и каталогам.

  • Чтобы предоставить владельцу полный доступ (чтение, запись, выполнение), группе и другим пользователям — использовать:
chmod 755 file.txt

Здесь 7 означает права на чтение, запись и выполнение (rwx) для владельца, 5 — на чтение и выполнение (rx) для группы, и 5 — для других.

2. chown — изменяет владельца и группу файла.

  • Для изменения владельца и группы файла:
chown user:group file.txt

Мониторинг системы

Для мониторинга работы системы и текущих процессов используется несколько полезных команд:

Совет: более детально вопрос мониторинга нагрузки и процессов уже описан в другой нашей статье.

1. top — показывает текущие процессы, загрузку системы и память.

  • Пример:
top

Для выхода из режима мониторинга нажмите q.

2. ps — отображает список текущих процессов.

  • Для отображения всех процессов:
ps aux

3. df — показывает информацию о доступном и использованном пространстве на диске. Более детально описана в следующей статье.

  • Для получения информации о дисках:
df -h

4. free — показывает информацию о памяти.

  • Для получения информации о оперативной и своп-памяти:
free -h

Продвинутые команды

Существует множество более продвинутых команд с бесконечными вариантами построения запросов. Их в этой вступительной статье мы не можем описать детально, но наиболее расптространенные заслуживают упоминания:

1. grep и — поиск текста в файлах.

  • Пример:
grep "search_term" filename

2. find — поиск файлов в системе. Она более детально описана в следующей статье.

  • Пример:
find /home/user -name "*.txt"

3. tar — архивирование и разархивирование файлов. Более детально описана в следующей статье.

  • Пример для создания архива:
tar -czvf archive.tar.gz folder
  • Пример для разархивирования:
tar -xzvf archive.tar.gz

4. wget — скачивание файлов по URL.

  • Пример:
wget http://example.com/file.zip

5. curl — отправка HTTP-запросов и загрузка данных.

  • Пример для получения содержимого веб-страницы:
curl http://example.com

6. nano — текстовый редактор для командной строки.

  • Открытие файла:
nano file.txt

Для сохранения изменений: Ctrl + O, для выхода: Ctrl + X.

7. alias — создание псевдонимов для команд.

  • Пример для создания псевдонима:
alias ll="ls -l"

8. history — просмотр истории вводимых команд.

  • Пример:
history

9. shutdown и reboot — выключение и перезагрузка системы.

  • Для выключения:
sudo shutdown now
  • Для перезагрузки:
sudo reboot

10. ip — управление сетевыми интерфейсами.

  • Пример для отображения текущих настроек:
ip a

11. mount и umount — монтирование и размонтирование файловых систем.

  • Пример монтирования:
sudo mount /dev/sda1 /mnt
  • Пример размонтирования:
sudo umount /mnt

12. rsync — синхронизация и резервное копирование файлов. Более детально описана в нашей статье.

  • Пример для копирования:
rsync -av source/ destination/

Терминал — это мощный инструмент для работы с Linux, и чем больше вы будете им пользоваться, тем быстрее освоитесь. Во многих случаях использование команд в терминале значительно быстрее, чем через графический интерфейс. Не бойтесь ошибок, они легко исправимы. Главное — начинать!

В заключение

Linux — это бескрайний океан возможностей, и в этом путешествии не будет конца.

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