Программирование и IT

Как изучить Linux с нуля

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

Обновлено
В этой статье

Где взять Linux, ничего не сломав#

Переустанавливать основную систему не нужно. Безопасные варианты:

  • виртуальная машина (VirtualBox, UTM на Mac) с Ubuntu или Debian;
  • WSL в Windows — Linux-окружение прямо внутри системы;
  • недорогой облачный сервер — ближе всего к реальной работе, заодно
    научись заходить по SSH.

Для начала подойдёт любой популярный дистрибутив: Ubuntu, Debian, Fedora.
Разница между ними для новичка — в основном в менеджере пакетов (apt или
dnf).

Первые две недели: файловая система и навигация#

Дерево каталогов от корня /: где лежат настройки (/etc), журналы
(/var/log), домашние каталоги (/home). Базовые команды:

pwd                  # где я
ls -la               # что здесь, включая скрытые файлы
cd /var/log          # перейти в каталог
mkdir -p notes/linux # создать каталоги
cp, mv, rm           # копировать, переместить, удалить
less /etc/os-release # прочитать файл постранично

Встроенная справка — man команда и команда --help. Привыкай
заглядывать туда первым делом. Осторожно с rm -r: корзины в терминале нет.

Недели 3–4: права, пользователи, sudo#

Владелец, группа, остальные; права на чтение, запись и выполнение. Запись
rwxr-xr-- и её числовой вид 754: каждая тройка переводится в число
(r = 4, w = 2, x = 1). Команды chmod, chown, sudo, id, useradd.
Упражнение: создай пользователя, общий каталог для группы и проверь,
кто что может в нём делать.

Недели 5–6: текст, потоки, поиск#

Сила командной строки — в соединении маленьких программ. Перенаправление
> и >>, конвейер |, команды grep, sort, uniq, wc, head,
tail, find, cut. Пример задачи: найти десять IP-адресов, которые чаще
всего встречаются в журнале веб-сервера. Текстовый редактор в терминале —
nano для начала, позже стоит освоить основы vim.

Недели 7–8: пакеты, процессы, службы, сеть#

Установка программ через менеджер пакетов, просмотр процессов (ps,
top или htop), сигналы и kill. Службы в systemd: systemctl status,
start, enable, журналы через journalctl. Сеть: ip a, ping,
curl, ss, вход на сервер по SSH-ключу вместо пароля.

Недели 9–10: скрипты на bash#

Переменные, условия, циклы, аргументы скрипта, код возврата. Первые
полезные скрипты — резервная копия каталога в архив с датой в имени,
очистка старых файлов, проверка свободного места с предупреждением.
Запуск по расписанию — через cron или таймеры systemd. Скрипты храни в
Git-репозитории, проверяй анализатором ShellCheck.

Учебный проект#

Подними на виртуальной машине или облачном сервере веб-сервер nginx со
своей страницей, настрой брандмауэр, вход только по ключу, ежедневный
бэкап скриптом и ротацию журналов. Опиши все шаги в README так, чтобы по
нему можно было повторить настройку с чистой системы, — это хороший
показатель того, что ты понимаешь, а не копируешь команды.

Как проверять себя#

  • Удали виртуальную машину и настрой её заново по своим записям.
  • Решай задачи вида «найди файл больше 100 МБ, изменённый за
    последнюю неделю» без поиска в интернете.
  • Объясни вывод ls -l для любого файла: тип, права, владелец, размер.
  • Проходи учебные игры в терминале, где каждый уровень открывается
    найденным паролем.

План по этапам

  1. Неделя 1 — установкаВиртуальная машина, WSL или облачный сервер с Ubuntu или Debian.
  2. Недели 2–4 — файлы и праваНавигация, работа с файлами, man, права доступа, пользователи и sudo.
  3. Недели 5–6 — текст и конвейерыgrep, sort, find, перенаправления; разбор журнала веб-сервера.
  4. Недели 7–8 — системаПакеты, процессы, systemd, сеть и SSH по ключу.
  5. Недели 9–12 — скрипты и проектBash-скрипты, cron, свой сервер с nginx и бэкапом, описанный в README.

Начать изучать эту тему у себя

План ляжет в твой репозиторий: отмечай этапы, веди конспект — история изменений покажет, как ты продвинулся.

Начать план

Проверь себя

1.Какая команда выводит путь к текущему каталогу?

2.Какой числовой вид у прав rw-r--r--?

3.Права rwxr-xr-x записаны числом. Каким?

Источники

  • LinuxCommand.orgБесплатная книга The Linux Command Line и уроки по командной строке (на английском)
    бесплатно
  • Документация UbuntuОфициальные руководства и учебники дистрибутива
    бесплатно
  • The Linux Kernel ArchivesОфициальный сайт ядра Linux и его документации
    бесплатно

Было полезно?

Ещё темы

Программирование и IT Как изучить Python с нуля Python хорош для первого знакомства с программированием: код читается почти как текст, а стандартная библиотека закрывает большинство бытовых задач. Этот план ведёт от установки интерпретатора до собственных скриптов, покрытых тестами, — примерно за четыре месяца при занятиях около часа в день. Программирование и IT Как изучить SQL с нуля SQL — язык запросов к реляционным базам данных. Он нужен разработчикам, аналитикам, тестировщикам и менеджерам, которые хотят сами доставать цифры. Базовые запросы осваиваются за несколько недель, уверенная работа со сложными отчётами — за два-три месяца практики. Ниже — порядок тем и способы тренироваться на настоящей базе. Программирование и IT Как изучить JavaScript с нуля JavaScript — язык, который исполняется в каждом браузере, а через Node.js ещё и на сервере. У него низкий порог входа — код можно запустить прямо в консоли браузера, — но много неочевидных мест, от приведения типов до асинхронности. План ниже рассчитан на три-четыре месяца и предполагает, что ты уже знаешь основы HTML и CSS или изучаешь их параллельно. Программирование и IT Как изучить Java с нуля Java — строго типизированный язык, на котором написаны банковские системы, серверы крупных сервисов и Android-приложения. Строгость поначалу замедляет, зато компилятор ловит многие ошибки до запуска. Этот план рассчитан примерно на полгода занятий по часу в день и ведёт от первой программы до небольшого серверного приложения. Программирование и IT Как изучить HTML и CSS с нуля HTML описывает, из чего состоит страница, CSS — как она выглядит. Это не языки программирования в строгом смысле, но без них не обходится ни один сайт, и с них удобно начинать путь во фронтенд. Базу вёрстки можно освоить за два-три месяца, если с первой недели собирать настоящие страницы, а не только читать справочник. Программирование и IT Команды Linux Терминал Linux устроен одинаково у всех дистрибутивов: имя команды, ключи, объекты. Ниже — шесть таблиц по областям работы, в каждой по строке на команду и пример вызова, который можно набрать и сразу увидеть результат.

Ещё сценарии