Работа с командной строкой (CLI) и базовые команды в Linux/Windows/Mac

CLI

CLI (Command Line Interface) — это способ взаимодействия с компьютером через текстовые команды. Вместо того, чтобы кликать по кнопкам, мы вводим команды через терминал (консоль), и система тут же выполняет наши инструкции.

  1. Отличие от графического интерфейса (GUI)
    • В графическом интерфейсе (GUI) мы видим удобные окошки и кнопки, нажимаем мышкой или тачпадом.
    • В CLI мы набираем конкретные команды, чаще всего на английском языке, и сразу получаем текстовый результат или вывод.
    • CLI считается более гибким и мощным, поскольку позволяет точно управлять системой — одной командой можно сделать то, что в GUI требовало бы целую серию кликов.
  2. Почему программисту важно уметь работать с консолью
    • Скорость. Командой «на лету» можно скопировать десятки файлов, переименовать их, запустить скрипты — всё это занимает секунды.
    • Точность и гибкость. У вас полный контроль над системой. Особенно это важно, когда работаете с сервером или автоматизируете рутинные задачи.
    • Универсальность. Терминалы бывают везде: на сервере, в облачном окружении, на локальном компьютере. Умение работать в них облегчает жизнь в самых разных проектах.

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


Содержание

Главные понятия

Терминал

Работа с командной строкой начинается с терминала.

Открыть терминал

  1. Linux/Mac: Обычно ищем приложение “Terminal” (или «Терминал») в списке программ. Часто можно запустить его по сочетанию клавиш (например, в Ubuntu — Ctrl+Alt+T).
  2. Windows:
    • CMD (Command Prompt): ищем в поиске Windows «Командная строка» или «cmd».
    • PowerShell: ищем «PowerShell» в поиске Windows. Это более современная оболочка, которая поддерживает команды из CMD, но имеет и дополнительные возможности.

Директория (папка) и файл

  • Файл — это набор данных, например, текстовый документ, картинка, музыкальный трек.
  • Директория (или папка) — это контейнер, в котором лежат файлы и другие папки.

Пример: Есть папка Documents, внутри неё может быть папка Projects, а в ней файлы script.py, notes.txt и т.д.

Путь к файлу/директории

  • Абсолютный путь — указывает расположение файла или папки, начиная от корневой директории.
    • В Linux/Mac это выглядит, например, как /home/user/Projects.
    • В Windows обычно начинается с C:\Users\Username\Projects.
  • Относительный путь — указывает путь относительно текущей директории.
    • Например, если мы уже находимся в /home/user, то попасть в Projects можно командой cd Projects.
    • Или cd ./Projects (точка . указывает на текущую директорию).

(Мини-пример)
Вы находитесь в папке /home/user. Абсолютный путь к файлу script.py в папке Projects будет /home/user/Projects/script.py. Но если вы уже «внутри» /home/user, то можете набрать cd Projects (относительный путь), а затем python script.py.


Безопасность и осторожность

Работа с терминалом даёт огромные возможности, но с этим приходит и ответственность:

  1. Команды, которые могут навредить системе
    • Например, команда удаления файлов (в Linux это rm, а в Windows — del или Remove-Item) не спросит «А вы точно уверены?», если вы явно не включите такой запрос. А если вы используете параметры вроде -r в Linux (rm -r folder), то можете случайно «снести» целые папки вместе с содержимым!
    • Важно всегда понимать, где вы находитесь и что удаляете. Ошибка в одной букве пути может привести к катастрофе, если затронуть системные файлы.
  2. Как проверить свой текущий путь
    • В Linux/Mac достаточно ввести команду pwd (print working directory).
    • В Windows можно ввести echo %cd% (в CMD) или pwd (в PowerShell).
    • Эта команда покажет, в какой директории вы сейчас находитесь.
    • Привычка перед опасными командами (удаление, перемещение) проверять текущий путь экономит много нервов.

(Мини-пример)
Вы хотите удалить временные файлы из папки /home/user/temp. Убедитесь, что вы действительно в папке /home/user/temp, введя pwd. Если там всё верно, то используйте rm * (в Linux) для удаления файлов. Если окажется, что вы внезапно в /home/user/documents, сработает уже другой сценарий — а это не то, что вы хотели!


Небольшое резюме

  • CLI — это про гибкость и эффективность.
  • Навык навигации по папкам и правильное понимание путей — фундамент для работы в консоли.
  • Внимательность: проверяем где мы находимся, что удаляем, и как прописываем команды.

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

Если остались вопросы, не стесняйтесь задавать! Всякий раз, когда чувствуете, что что-то непонятно, лучше сразу разъяснить и попрактиковаться — так в голове останется меньше «белых пятен», а уверенность в своих силах будет расти.

 

Как тренироваться в разных операционных системах

Иногда бывает так, что вы хотите учиться работать в Linux, но ваш компьютер — на Windows. Или, наоборот, вы пользуетесь Linux и хотите изучить особенности Windows-команд. К счастью, есть несколько способов «потренироваться» без необходимости менять операционную систему.

Запуск Linux в Windows

  1. WSL (Windows Subsystem for Linux)
    • Начиная с Windows 10, доступна технология WSL. Она позволяет установить дистрибутив Linux (Ubuntu, Debian и другие) прямо внутри Windows и запускать все основные команды в терминале.
    • Установка: откройте Microsoft Store, найдите «Ubuntu» (или другой дистрибутив) и установите.
    • После установки в меню «Пуск» появится ярлык (например, «Ubuntu»). Запустив его, вы получите полноценный терминал Linux, не покидая Windows.
  2. Виртуальная машина
    • Можно установить популярные программы виртуализации (VirtualBox, VMware Player).
    • Скачайте ISO-образ Linux (например, Ubuntu), создайте виртуальную машину и установите систему.
    • В итоге у вас будет «второй компьютер в окошке», где можно свободно экспериментировать с командами, не нарушая работу основной системы Windows.
  3. Live USB
    • Если хотите «потрогать» Linux без установки на жёсткий диск, можно создать загрузочную USB-флешку с Linux и загрузиться с неё. При выборе режима «Live» система запустится сразу с флешки.
    • Так вы сможете практиковать базовые команды, но при перезагрузке изменения чаще всего не сохраняются (если не настраивать специальный режим постоянного хранения данных).

Запуск Windows в Linux

  1. Виртуальная машина
    • Аналогично, вы можете поставить VirtualBox или VMware на Linux и создать виртуальную машину с Windows (для этого потребуется лицензионный образ Windows).
    • Запустив виртуальную машину, вы получите доступ к стандартным Windows-командам через CMD или PowerShell.
  2. Dual Boot (двойная загрузка)
    • Более редкий вариант: установить Windows параллельно с Linux на физический диск. При включении компьютера будет меню выбора ОС. Но это требует знаний о разбивке диска и может быть рискованно, если вы новичок.

Облачные сервисы

Есть и вариант «всё в облаке»:

  • Для Linux подойдут бесплатные серверы/машины в облаке (например, различные пробные варианты у хостинг-провайдеров) или в сервисах вроде AWS, Google Cloud, Azure.
  • Вы подключаетесь к удалённому серверу через SSH и получаете полноценный терминал Linux, в котором отрабатываете команды.
  • Для Windows тоже можно арендовать удалённый сервер (Windows Server), но обычно это платные услуги и чуть сложнее в настройке.

Резюме по тренировке в разных системах

  • WSL — самый простой способ при работе в Windows попробовать Linux-команды без суеты с виртуальными машинами.
  • VirtualBox/VMware — универсальный метод, работает и для Windows, и для Linux в обе стороны, но требует чуть больше ресурсов (процессор, оперативная память).
  • Live USB — отличный «пробный вариант» для знакомства с Linux, не затрагивая жёсткий диск.
  • Облачные сервисы — удобно, если нужно учиться работе с серверами или не хочется тратить ресурсы локального ПК.

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

Общие базовые команды

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

Проверка текущей директории

Linux/Mac
# Показать текущую директорию
pwd

Комментарий:

  • pwd расшифровывается как print working directory. Она выводит путь к папке, в которой мы сейчас находимся.

Пример вывода (допустим, мы в домашней папке пользователя anna):

/home/anna
Windows (CMD/PowerShell)
# В CMD
echo %cd%

# В PowerShell
pwd

Комментарий:

  • В классической командной строке (CMD) для вывода текущей папки используется переменная окружения %cd% вместе с командой echo.
  • В PowerShell можно использовать ту же команду pwd, что и в Linux/Mac.

Просмотр содержимого директории

Linux/Mac
# Показать список файлов и папок в текущей директории
ls

Комментарий:

  • По умолчанию команда ls выводит имена всех файлов и подпапок.
  • Часто используют флаги, например ls -l, чтобы получить подробную информацию (дата изменения, размер файла и т.д.).

Пример:

ls
Documents  Downloads  Music  Pictures  Videos
Windows (CMD/PowerShell)
# Показать список файлов и папок в текущей директории
dir

Комментарий:

  • В Windows вместо ls традиционно используется dir.
  • В PowerShell она также работает и даёт аналогичную информацию.

Переход между директориями

Linux/Mac
# Перейти в папку /home/anna/Documents
cd /home/anna/Documents

# Если мы уже находимся в /home/anna,
# то можно сделать относительный переход
cd Documents

Комментарий:

  • cd (change directory) — сменить директорию.
  • Абсолютный путь начинается с /, относительный — от текущей директории.
Windows (CMD/PowerShell)
# Перейти в папку C:\Users\John\Documents
cd C:\Users\John\Documents

# Если мы уже в C:\Users\John,
# то можно использовать относительный путь
cd Documents

Комментарий:

  • В Windows пути обычно указываются через обратный слеш \, но PowerShell и CMD также воспринимают прямой слеш в некоторых случаях.

Практическое упражнение по навигации

  1. Откройте терминал/командную строку.
  2. Перейдите в папку загрузок (Downloads) любым из способов:
  3. Полный путь (например, cd /home/anna/Downloads на Linux/Mac или cd C:\Users\Anna\Downloads на Windows).
  4. Относительный путь (если вы уже в домашней папке).
  5. Выведите на экран список файлов в ней с помощью ls (Linux/Mac) или dir (Windows).

(Дополнительно) Если у вас нет папки Downloads (бывает на некоторых системах), проделайте те же действия с любой другой директорией.


Создание и удаление папок, файлов

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

Создание папок

Linux/Mac
# Создать папку (директорию) 'test_folder'
mkdir test_folder

Комментарий:

  • mkdir расшифровывается как make directory.
  • Если в папке уже есть test_folder, команда вернёт ошибку. Можно использовать опцию -p, чтобы избежать ошибок, если родительские папки отсутствуют.

Пример:

mkdir -p my_projects/python_scripts
# Создаст цепочку папок: my_projects, а внутри нее python_scripts
Windows (CMD/PowerShell)
# Создать папку (директорию) 'test_folder'
mkdir test_folder

Комментарий:

  • В Windows слово mkdir (или md) работает так же, как в Linux/Mac.
  • В PowerShell есть разные способы создания папок, но mkdir — самый простой и привычный.

Создание файлов

Linux/Mac
# Создать (или обновить время модификации) пустой файл 'file.txt'
touch file.txt

Комментарий:

  • touch создаёт пустой файл, если такого ещё нет. Если файл есть, просто обновляет время последнего изменения (в его содержимом ничего не меняется).

Пример (с пояснениями):

touch notes.txt   # создаёт пустой файл notes.txt в текущей директории
Windows (CMD)
# Создать пустой файл file.txt (CMD)
type nul > file.txt

Комментарий:

  • type nul выводит «ничего», > перенаправляет этот «вывод» в file.txt, создавая таким образом пустой файл.
Windows (PowerShell)
# Создать пустой файл file.txt (PowerShell)
New-Item file.txt

Комментарий:

  • В PowerShell есть удобная команда New-Item, которая создаёт файлы и папки. По умолчанию создаёт файл, если не указать иных параметров.

Удаление файлов

Linux/Mac
# Удалить файл file.txt
rm file.txt

Комментарий:

  • rm (remove) — удаляет файлы. В корзину они не попадают, поэтому будьте осторожны.
  • Если команда выполнилась успешно — файл исчезает безвозвратно.

Пример:

rm report.docx
# Если файл называется report.docx, он будет удалён
Windows (CMD/PowerShell)
# Удалить файл file.txt
del file.txt

Комментарий:

  • del — классический вариант удаления файла в CMD.
  • В PowerShell тоже будет работать команда del, хотя официально там есть Remove-Item file.txt.

Удаление папок

Linux/Mac
# Удалить папку (директорию) вместе со всем содержимым
rm -r folder_name

Комментарий:

  • Флаг -r (recursive) указывает удалять рекурсивно всё содержимое папки.
  • Флаг -f (force) может принудительно удалять без лишних вопросов, но лучше вначале тренироваться без него, чтобы не снести что-нибудь важное случайно.

Windows (CMD)

# Удалить папку folder_name со всем содержимым
rmdir folder_name /s

Комментарий:

  • /s означает рекурсивное удаление всех подпапок и файлов.
  • Windows перед удалением всей папки обычно спросит подтверждение (Y/N).

Windows (PowerShell)

# Удалить папку folder_name со всем содержимым
Remove-Item folder_name -Recurse

Комментарий:

  • Параметр -Recurse указывает на удаление всего, что находится внутри папки.

Практическое упражнение по созданию и удалению

  1. Создать новую папку
    1. Назовите её, например, my_folder.
    2. Убедитесь, что вы в нужной директории (выполните pwd или аналог).
  2. Зайти в неё
    1. С помощью cd my_folder.
  3. Создать пустой файл
    1. touch my_file.txt (Linux/Mac) или New-Item my_file.txt (PowerShell) или type nul > my_file.txt (CMD).
  4. Удалить этот файл
    1. rm my_file.txt (Linux/Mac) или del my_file.txt (Windows).
  5. Выйти на директорию выше
    1. В Linux/Mac/Windows используется cd .. (два раза точка означает “уровень выше”).

(Дополнительно) Попробуйте повторить всё ещё раз, но теперь создайте папку и удалите её целиком. Убедитесь, что делаете это в «учебных» директориях, чтобы не снести важные данные.


Копирование и перемещение файлов

В этом разделе разберём, как скопировать (создать дубликат) или переместить (в том числе переименовать) файлы и папки.

Копирование файлов и папок

Linux/Mac
# Скопировать файл file.txt в backup.txt (создастся копия)
cp file.txt backup.txt

Комментарий:

  • Если в директории уже есть backup.txt, он будет перезаписан без предупреждения.
# Копировать папку folder1 в folder2 (рекурсивно)
cp -r folder1 folder2

Комментарий:

  • Флаг -r даёт команду копировать все файлы внутри folder1.
Windows (CMD/PowerShell)
# Скопировать файл file.txt в backup.txt (CMD/PowerShell)
copy file.txt backup.txt

Комментарий:

  • Аналогично перезапишет файл, если backup.txt уже существует.
# Рекурсивно копировать папку folder1 в folder2 (CMD)
xcopy folder1 folder2 /E

Комментарий:

  • Параметр /E позволяет копировать и подпапки (включая пустые).
  • В PowerShell xcopy тоже доступна, хотя там есть и более современные команды.

Перемещение (и переименование) файлов

Linux/Mac
# Переименовать (или переместить) файл file.txt в new_name.txt
mv file.txt new_name.txt

Комментарий:

  • Команда mv (move) может просто переименовывать файл (если целевая директория совпадает с исходной), либо перемещать (если указываете другую директорию).
# Переместить file.txt в папку Documents (остался старый файл или нет?)
mv file.txt Documents/

Комментарий:

  • После выполнения команды, file.txt исчезнет из текущей папки и появится в Documents.
Windows (CMD/PowerShell)
# Переименовать (или переместить) файл file.txt в new_name.txt
move file.txt new_name.txt

Комментарий:

  • move работает аналогично mv в Linux/Mac.
# Переместить file.txt в директорию Documents
move file.txt Documents

Комментарий:

  • Если вы в директории, где лежит file.txt, и есть подпапка Documents, файл переместится в неё.

Практическое упражнение по копированию и перемещению

  1. Создать файл notes.txt
    1. Используйте любую команду на выбор (touch, New-Item, type nul >, и т.д.).
  2. Скопировать его в ту же директорию под именем notes_copy.txt
    1. Linux/Mac: cp notes.txt notes_copy.txt
    2. Windows: copy notes.txt notes_copy.txt
  3. Создать подпапку temp
    1. mkdir temp (любая ОС).
  4. Переместить в неё копию файла
    1. Linux/Mac: mv notes_copy.txt temp/
    2. Windows: move notes_copy.txt temp

(Дополнительно) Проверьте, что файл действительно переместился. Для этого после перемещения выполните ls (или dir) в папке temp и убедитесь, что там есть notes_copy.txt.


Выводы и советы

  • Не бойтесь экспериментировать, но делайте это в безопасных директориях, где нет важных файлов.
  • Автодополнение (Tab) помогает избежать ошибок, когда вы вводите длинные пути или сложные названия.
  • Всегда проверяйте текущую директорию (команда pwd или её эквивалент) перед опасными действиями, чтобы не повредить важные файлы.
  • Старайтесь систематизировать команды в личном конспекте: выписывать что делает каждая команда, какие есть полезные флаги (-r, -f, /E, /s, -Recurse и т.д.).

На этом блок с базовыми командами окончен. Когда научитесь уверенно делать все эти операции (переходить, создавать, удалять, копировать, перемещать), вы станете гораздо более «подкованными» пользователями — ведь эти навыки уже дают возможность эффективно управлять файло-структурой на любом компьютере или сервере!

Ниже представлена подробная инструкция по дополнительным утилитам и командам, которые существенно упрощают повседневную работу в терминале. Я разделил их на несколько основных блоков, чтобы материал было проще воспринимать и закреплять на практике.


Дополнительные полезные команды/утилиты

Вывод содержимого файлов

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

Команда cat (Linux/Mac/PowerShell)

Синтаксис:

cat file.txt

Комментарий:

  • cat (сокращение от concatenate) читает содержимое файла и выводит его в стандартный вывод (обычно — экран).
  • Если файл небольшой, вы увидите весь текст сразу. Если файл большой, прокрутка пойдёт очень быстро.

Пример кода:

cat readme.md
# Выведет весь текст из файла readme.md в терминал.

(В PowerShell на Windows, начиная с определённых версий, cat тоже работает как псевдоним для Get-Content. Если не работает, см. ниже о команде type.)

Команда type (Windows CMD)

В классической командной строке Windows (CMD) команда cat не поддерживается, зато есть аналог:

type file.txt

Комментарий:

  • type выводит содержимое файла прямо в окно CMD.
  • Если файл большой, информация «пролистается» быстро. Можно использовать type file.txt | more, чтобы построчно пролистывать содержимое.

Тренировочное упражнение

  1. Создайте небольшой текстовый файл (например, notes.txt) с помощью любого текстового редактора или консольной команды (echo "Hello CLI" > notes.txt в Linux/PowerShell или echo Hello CLI > notes.txt в CMD).
  2. Попробуйте вывести его содержимое:
    1. Linux/Mac: cat notes.txt
    2. PowerShell: cat notes.txt (или Get-Content notes.txt)
    3. CMD: type notes.txt
  3. (Дополнительно) Измените файл (добавьте несколько строк текста) и снова выведите содержимое, чтобы убедиться, что изменения отображаются сразу.

Создание архивов (Linux/Mac)

В Unix-подобных системах (Linux, Mac) архивы часто создают при помощи утилиты tar. Она умеет не только запаковывать папку в один файл, но и сразу сжимать её (обычно в формат gzip).

Команда tar

Синтаксис:

tar -czf archive.tar.gz folder_name

Комментарий:

  • -c означает «создать архив» (create).
  • -z означает «сжимать с помощью gzip».
  • -f указывает, что результат будет записан в файл (указываем имя archive.tar.gz).

Таким образом, команда берёт папку folder_name (и всё её содержимое) и упаковывает в сжатый архив archive.tar.gz.

Пример кода:

tar -czf backup.tar.gz my_project
# Создаст файл backup.tar.gz, который будет содержать всю папку my_project.

Распаковка архива tar.gz

Если нужно разархивировать обратно:

tar -xzf backup.tar.gz

Комментарий:

  • -x (extract) — извлечь.
  • -z (gzip) и -f (файл), как выше.
  • По умолчанию распакует файлы в текущую директорию или (если архив содержит абсолютные пути) в соответствующие места.

(Можно задать ключ -C /desired/path, чтобы указать, куда распаковывать.)

Архивирование в Windows

В Windows есть несколько способов:

  1. PowerShell:
    Compress-Archive -Path .\folder_name\* -DestinationPath .\archive.zip
    

    Комментарий:

    • Параметр -Path указывает, что архивировать,
    • -DestinationPath — куда сохранять.
    • Обратите внимание, что создаётся архив в формате .zip.
  2. Сторонние программы: WinRAR, 7-Zip и т.д.
    • Чаще всего в Windows используют программы с графическим интерфейсом, но при желании можно найти и консольные утилиты (например, 7z.exe).

Тренировочное упражнение

  1. Создайте папку test_archive, поместите внутрь любой файл (например, notes.txt).
  2. Linux/Mac:
    1. Архивируйте папку командой tar -czf test_archive.tar.gz test_archive.
    2. Затем удалите папку test_archive и разархивируйте test_archive.tar.gz, чтобы убедиться, что всё успешно восстановилось.
  3. Windows (PowerShell):
    1. Выполните Compress-Archive -Path .\test_archive\* -DestinationPath .\test_archive.zip.
    2. Проверьте, что появился файл test_archive.zip.
    3. Для распаковки используйте Expand-Archive -Path .\test_archive.zip -DestinationPath .\extracted_folder, либо обычный графический интерфейс.

Справка по командам

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

man и --help (Linux/Mac)

man ls

Комментарий:

  • Запустит подробный мануал (manual) по команде ls. Откроется текстовая страница с описанием, которую можно пролистывать стрелками или клавишей Space.
  • Выйти из неё можно, нажав q.
ls --help

Комментарий:

  • Короткая справка по команде ls с описанием основных флагов.
  • Аналогичным образом можно попробовать grep --help, cp --help и т.д.

help, /?, Get-Help (Windows)

CMD:

help

Комментарий:

  • Показывает список доступных команд. Если надо узнать больше о конкретной команде, пишем:
command /?

Например:

dir /?

Комментарий:

  • Выведет краткую справку о команде dir и её параметрах.

PowerShell:

Get-Help ls

Комментарий:

  • Отобразит документацию по команде ls (в PowerShell это алиас, ссылающийся на Get-ChildItem).
  • Для более подробного вывода можно добавить параметр -Full.

Тренировочное упражнение

  1. В Linux/Mac попробуйте команду ls --help, ознакомьтесь с параметрами. Затем откройте «мануал» — man ls.
  2. В Windows CMD наберите help и посмотрите, какие есть стандартные команды. Выберите одну (например, dir) и введите dir /?, чтобы увидеть все возможные параметры.
  3. В PowerShell сделайте Get-Help Move-Item, чтобы узнать, как перемещать файлы из консоли PowerShell.

(Дополнительно) Поэкспериментируйте с man tar или tar --help в Linux/Mac, и с Get-Help Compress-Archive в PowerShell, чтобы глубже понять, какие параметры поддерживаются при архивировании.


В этом разделе вы познакомились с несколькими дополнительными командами:

  1. Просмотр содержимого файла: cat (Linux/Mac/PowerShell) и type (Windows CMD).
  2. Архивирование: tar в Linux/Mac, Compress-Archive в Windows PowerShell.
  3. Справка: man и --help в Linux/Mac, help / /? / Get-Help в Windows.

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

Совет: Даже опытные специалисты регулярно обращаются к встроенной справке, ведь помнить все команды и ключи наизусть невозможно. Чем раньше вы привыкнете к мануалам, тем легче вам будет работать в любой среде.

Оставайтесь любознательными, экспериментируйте и не бойтесь опечатываться — главное, делайте это в безопасном окружении, и всегда проверяйте, в какой директории находитесь, перед тем, как запустить критические команды!

Ниже приводится подробный урок, раскрывающий особенности разных операционных систем. Несмотря на то, что большинство базовых команд и концепций похожи, есть нюансы в путях к файлам и в типах оболочек (shell). В конце каждого раздела вы найдёте тренировочное упражнение, чтобы сразу закрепить знания.


Особенности для разных систем

Различия в путях к файлам/папкам

Путь — это «адрес» к определённому файлу или папке внутри файловой системы. В зависимости от операционной системы, путь может немного отличаться синтаксисом.

Linux/Mac — символ «/»

В Linux и macOS для разделения директорий используется прямой слеш /. Корневая директория (root) обозначается просто /. Абсолютные пути всегда начинаются с /.

Пример абсолютного пути:

# Абсолютный путь к папке Documents в домашней директории пользователя "alex"
/home/alex/Documents
  • Здесь / — корневая директория.
  • Затем идёт папка home, внутри неё — папка alex, а внутри alex — папка Documents.

Пример относительного пути:

# Если мы уже находимся в /home/alex, то добраться до папки Documents можно так:
cd Documents
# или
cd ./Documents
  • Точка (.) указывает на текущую директорию.
  • Две точки (..) указывают на директорию уровнем выше.

Windows — обратный слеш \ и буквы дисков

В Windows обычно используется обратный слеш \, а также система букс дисков (C:, D: и т.д.).

Пример абсолютного пути:

C:\Users\Alex\Documents
  • C: — системный диск или просто буква диска.
  • Users\Alex\Documents — цепочка папок.

Пример относительного пути:

# Если мы уже в C:\Users\Alex, можно использовать:
cd Documents

Примечание: В PowerShell зачастую можно использовать и прямые слеши /, но традиционно для Windows принят обратный слеш \.

Тренировочное упражнение

  1. Если вы работаете в Linux/Mac, попробуйте прописать несколько абсолютных путей, указывая на разные папки (например, /home/<ваше_имя>/Documents, /home/<ваше_имя>/Downloads). Используйте команду ls или cd для проверки, что путь указан верно.
  2. Если вы в Windows, потренируйтесь с абсолютными путями к C:\Users\<Ваше_имя>\Documents и относительными путями (например, cd .., чтобы подняться на один уровень выше).
  3. (Дополнительно) Создайте тестовую папку внутри своей домашней директории (имя, например, demo_folder), перейдите туда с помощью относительного пути и выведите содержимое командой ls (в Linux/PowerShell) или dir (в CMD).

Разные оболочки (shell)

Shell — это программа, которая принимает команды, введённые пользователем, и передаёт их операционной системе для выполнения. По сути, это наш «командный интерпретатор».

Bash, Zsh (Linux/Mac)

В большинстве дистрибутивов Linux по умолчанию стоит Bash (Bourne Again Shell). На macOS в более новых версиях по умолчанию может быть включён Zsh, но суть остаётся схожей.

  • Bash: классический shell, встречается во многих системах, имеет большое комьюнити, много готовых скриптов.
  • Zsh: похож на Bash, но предлагает ряд дополнительных функций (например, более продвинутую автодополнение). Многие пользователи macOS даже не замечают, что «под капотом» у них Zsh, потому что команды часто совпадают.

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

#!/usr/bin/env bash
# Простенький скрипт, который выводит приветствие
echo "Hello from Bash!"
  • Первая строка (#!/usr/bin/env bash) указывает системе, что скрипт должен исполняться через Bash.

CMD и PowerShell (Windows)

В Windows исторически использовалась CMD (Command Prompt), а затем появилась PowerShell, более современная и мощная оболочка:

  • CMD: классическая «чёрная консоль» Windows, поддерживает базовые команды вроде dir, cd, copy.
  • PowerShell: создана на базе .NET Framework, имеет объектную модель, что делает её очень гибкой. Также поддерживает многие команды и синтаксис, схожие с Unix.
  • Если запустить PowerShell и ввести, например, ls, она сработает, так как ls является алиасом для Get-ChildItem.

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

# Простой скрипт на PowerShell, выводит сообщение
Write-Host "Hello from PowerShell!"
  • Write-Host выводит сообщение на экран.
  • Если сохранить этот код в файле hello.ps1, то запустить можно так: .\hello.ps1 (с учётом, что вы в нужной директории).

Тренировочное упражнение

  1. Linux/Mac:
    1. Откройте терминал. Выполните команду echo $SHELL — она покажет, какой shell у вас используется по умолчанию (например, /bin/bash или /bin/zsh).
    2. Создайте простой скрипт test.sh (внутри напишите echo "Test Bash script"), сделайте его исполняемым (chmod +x test.sh) и запустите (./test.sh).
  2. Windows:
    1. Откройте CMD (Command Prompt), выведите список файлов в своей домашней директории командой dir.
    2. Откройте PowerShell, выполните в ней ту же операцию, но командой ls или Get-ChildItem. Сравните вывод.
  3. (Дополнительно) Создайте простой PowerShell-скрипт hello.ps1, который выводит фразу «Hello PowerShell». Запустите его в PowerShell.
  4. (Универсально) Если хотите «поближе» познакомиться с другой оболочкой, выполните инструкции из предыдущих уроков (например, воспользуйтесь WSL на Windows, чтобы попробовать Bash, или поставьте PowerShell на Linux через пакетный менеджер).

  • Пути в Linux/Mac используют прямой слеш /, а в Windows чаще всего — обратный слеш \ и буквы дисков.
  • Shell — это «среда», через которую мы вводим команды. В Linux/Mac обычно Bash или Zsh, в Windows — CMD или PowerShell.
  • Несмотря на то, что базовые действия (создание, удаление, копирование) похожи, синтаксис и набор команд может немного отличаться.

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

Не бойтесь практиковаться — попробуйте использовать разные shell и операционные системы, чтобы увидеть, как всё устроено «под капотом»!

Ниже представлен урок с дополнительными советами и рекомендациями, которые помогут вам быстрее освоиться в командной строке и избежать распространённых ошибок. В каждом разделе есть упражнения, позволяющие закрепить теорию на практике.


Дополнительные советы и хорошая практика

Регулярно пользоваться справкой

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

Linux

man ls

Комментарий:

  • Показывает «man-страницу» для команды ls, где описаны основные параметры, примеры использования.
  • Чтобы пролистать, используйте клавиши Стрелка вниз/вверх или Space. Закрыть — клавиша q.
ls --help

Комментарий:

  • Выводит краткую информацию по использованию команды и параметрам.

Windows

help

Комментарий:

  • Показывает в классическом CMD список команд.
dir /?

Комментарий:

  • В CMD: даст краткое описание команды dir.
  • Аналогично copy /?, move /? и т.д.
Get-Help Get-ChildItem

Комментарий:

  • В PowerShell: показывает справку по команде (в данном случае это команда Get-ChildItem, которая совпадает с alias ls).

Тренировочное упражнение

  1. Linux/Mac: откройте терминал и введите ls --help. Пролистайте выдачу, найдите флаги, которые вам показались интересными (например, -l, -a, -h).
  2. Windows (CMD): введите dir /? и посмотрите, какие параметры поддерживает команда dir. Попробуйте применить какой-нибудь из них (например, dir /p, чтобы выдача шла постранично).
  3. Windows (PowerShell): выполните Get-Help Move-Item. Посмотрите примеры снизу страницы, какие форматы записи команды существуют.

Внимательно следить за путями

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

Команда pwd (Linux/Mac/PowerShell) и echo %cd% (CMD)

pwd

Комментарий:

  • Выводит полный путь к текущей директории, где вы сейчас «находитесь».
echo %cd%

Комментарий:

  • В CMD для вывода текущего пути.
  • В PowerShell вместо этого можно писать pwd.

Пример ситуации

# Допустим, вы хотите удалить все файлы в папке temp
cd /home/user/temp
rm *

Комментарий:

  • Прежде чем запустить rm *, стоит проверить, что вы действительно находитесь в /home/user/temp (выполнив pwd).
  • Если вы случайно находились в /home/user/Documents, то удалите совсем другие файлы!

Тренировочное упражнение

  1. Создайте новую папку (например, test_paths), перейдите в неё командой cd test_paths.
  2. Выполните pwd (Linux/Mac/PowerShell) или echo %cd% (CMD), чтобы убедиться, что вы «внутри» test_paths.
  3. Создайте в этой папке несколько тестовых файлов (например, file1.txt, file2.txt).
  4. Выполните удаление (например, rm file1.txt или del file1.txt), убедившись, что стоите в test_paths. Для проверки перед удалением снова сделайте pwd или echo %cd%.

Используйте автодополнение (Tab)

В большинстве оболочек есть возможность автодополнения имён файлов и директорий по нажатию клавиши Tab. Это:

  • Экономит время.
  • Предотвращает опечатки, так как вам не нужно полностью набирать весь путь.

Пример автодополнения

cd Doc<нажимаем Tab>

Комментарий:

  • Если в текущей папке есть Documents, то при нажатии Tab оболочка автоматически дополнит до Documents.
  • Если есть несколько вариантов, которые начинаются на Doc, shell допишет общую часть и может предложить список вариаций.
cd .\Doc<Tab>

Комментарий:

  • Аналогично работает в PowerShell.
  • Очень удобно при длинных названиях папок (например, MyVeryLongDirectoryName).

Тренировочное упражнение

  1. Перейдите в домашнюю директорию (Linux/Mac: cd ~, Windows: cd %USERPROFILE% или просто cd, если он настроен).
  2. Начните вводить cd Doc и нажмите Tab. Проверьте, дополнилось ли до Documents (или какой-то другой папки на Doc).
  3. Если есть несколько папок на Doc, попробуйте нажимать Tab несколько раз, чтобы перебрать варианты.

Ведите список полезных команд

Когда вы начинаете работать с CLI, полезно записывать где-нибудь (в текстовом файле, бумажном блокноте или заметках на телефоне) те команды и флаги, которые часто применяете.

Пример «списка» в текстовом файле

# Предположим, у нас есть файл commands_cheatsheet.txt
cat commands_cheatsheet.txt

Внутри файла может быть, например:

1) ls -l -> показывает список файлов в длинном формате
2) rm -r -> рекурсивное удаление папки
3) mv file1 file2 -> переименовать или переместить файл1 в файл2
4) cd .. -> подняться на директорию выше
...

Зачем это нужно?

  • Поиск информации в личном «шпаргалочном» файле иногда быстрее, чем искать в интернете, особенно если вы знаете, что точно записывали нужную команду.
  • Со временем вы выучите 80% необходимых команд наизусть, но всегда останутся редкие случаи, когда запись под рукой сэкономит много времени.

Тренировочное упражнение

  1. Создайте файл my_commands.txt в домашней директории.
  2. Запишите туда несколько команд (по одной команде на строчку) с кратким описанием (например, ls -la — показывает все файлы, включая скрытые, в длинном формате).
  3. Откройте этот файл командой cat my_commands.txt или type my_commands.txt (в CMD) и убедитесь, что всё корректно записано.
  4. (Дополнительно) По желанию, распечатайте этот файл или сохраните его в удобном для вас виде (Google Docs, Evernote и т.п.).

  1. Справка (man, —help, help, /?, Get-Help) — это первое место, куда надо смотреть при возникновении вопросов о синтаксисе команды.
  2. Путь к файлу/папке — будьте осторожны и всегда проверяйте, где находитесь, чтобы случайно не изменить или удалить неправильные данные.
  3. Автодополнение (Tab) позволяет экономить время и защищает от опечаток.
  4. Личный список команд — ваш путеводитель в мире CLI, особенно в первые недели/месяцы изучения.

Когда овладеете этими «хитростями», процесс работы в командной строке станет легче и приятнее. Опытные пользователи CLI тоже постоянно обращаются к справке, используют автодополнение и ведут шпаргалки — это часть здорового подхода к работе с любым инструментом!

Ниже я добавил дополнительный раздел, посвящённый работе с текстовыми редакторами в среде Linux. Эта тема часто вызывает трудности у новичков, поэтому мы подробно разберём самые популярные консольные редакторы и завершим каждую часть практическим заданием.


Работа с редакторами текстовых файлов в Linux

Редактор nano: простой и дружелюбный

nano считается самым простым в освоении консольным редактором. Его плюсы:

  • Понятный интерфейс, подсказки по ключевым комбинациям внизу экрана.
  • Подсветка синтаксиса для многих языков.
  • Малое количество режимов (в отличие от vim), поэтому легче адаптироваться новичкам.

Открытие и редактирование файла

nano myfile.txt

Комментарий:

  • Если файла myfile.txt нет, nano создаст его при сохранении.
  • Внутри редактора вы набираете и редактируете текст, как в обычном блокноте.

Нижняя часть окна отображает комбинации клавиш. Например:

  • ^X означает Ctrl + X (выход).
  • ^O означает Ctrl + O (сохранение под тем же именем).
  • ^W означает Ctrl + W (поиск текста в файле).

Сохранение и выход

После ввода нужного текста:

  1. Нажмите Ctrl + O (буква O, а не ноль). Появится строка File Name to Write: myfile.txt.
  2. Нажмите Enter, чтобы подтвердить сохранение.
  3. Нажмите Ctrl + X, чтобы выйти из редактора.

Тренировочное упражнение (nano)

  1. Создайте в терминале новый файл через nano hello.txt.
  2. Напишите несколько строк, например:
    1. Привет, это мой первый файл в nano!
      Я учусь редактировать текст прямо из терминала.
  3. Сохраните файл (Ctrl + O → Enter) и выйдите (Ctrl + X).
  4. Убедитесь, что файл создан, выполнив команду cat hello.txt (или less hello.txt, если у вас установлен less).

Редактор vim (vi): более «продвинутый» способ

vim (или его предшественник vi) — это очень мощный, но вначале немного «непривычный» редактор, так как использует разные режимы работы.

Основные режимы vim

  1. Normal mode (обычный режим): здесь вы перемещаетесь по файлу, удаляете и копируете строки и т.д.
  2. Insert mode (режим вставки): печатаете текст.
  3. Command mode (командный режим): вводите команды (например, сохранение или выход).

Открытие файла и переход в режим вставки

vim myscript.py

Комментарий:

  • Если файла нет, vim создаст его при сохранении.

Внутри vim сразу же включён Normal mode. Чтобы начать ввод текста, нажмите i (insert). Теперь вы в режиме вставки, и все ваши нажатия клавиш пойдут в текст.

Пример:

# Предположим, вы набираете код внутри vim после нажатия i
print("Hello from vim!")

Сохранение и выход

Чтобы сохранить и выйти, нужно вернуться в Normal mode:

  1. Нажмите Esc, чтобы выйти из режима вставки.
  2. Введите двоеточие : (вы переключитесь в командный режим).
  3. Наберите wq (write & quit) и нажмите Enter.

Результат: vim сохранит файл и выйдет.

Если вы случайно хотите выйти без сохранения, используйте :q!.

Тренировочное упражнение (vim)

  1. Откройте любой файл (или создайте новый) через vim new_file.txt.
  2. Нажмите i, напишите пару строк текста (например, «Ура, я в vim!»).
  3. Нажмите Esc, затем введите :wq, чтобы сохранить изменения и выйти.
  4. Проверьте результат (например, cat new_file.txt).

(Дополнительно) Попробуйте выйти без сохранения (:q!) — подойдёт, если вы вдруг ошиблись и не хотите сохранить текущий файл.


Кратко об Emacs (для самых любознательных)

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

Запуск Emacs в консоли

emacs mynotes.txt

Комментарий:

  • Если Emacs установлен, откроется режим редактирования прямо в терминале.
  • По умолчанию, Emacs работает в графическом режиме, но при желании можно запустить именно консольный вариант флагом -nw (no window).

Основные команды в Emacs (без углубления)

  • Ctrl + x, Ctrl + s (обычно пишут C-x C-s) — сохранить.
  • Ctrl + x, Ctrl + c (C-x C-c) — выход.
  • Ctrl + g (C-g) — отмена текущей команды.

Тренировочное упражнение (Emacs)

  1. Убедитесь, что Emacs установлен (если нет — возможно, нужно установить через пакетный менеджер, например, sudo apt-get install emacs).
  2. Запустите emacs -nw mynotes.txt.
  3. Напишите пару строчек, затем сохраните (C-x C-s).
  4. Закройте Emacs (C-x C-c).
  5. Просмотрите файл mynotes.txt в консоли любым удобным способом (cat, nano, vim и т.д.) для проверки.

Какой редактор выбрать?

  • nano: прекрасно подходит начинающим, так как интерфейс прост и нет «сложных» режимов.
  • vim: очень мощный инструмент, популярный среди продвинутых пользователей. Однако требует привыкания к модальной системе (Normal / Insert / Command).
  • emacs: полноценная среда для «всего». Подойдёт, если вы готовы к длительному погружению и любите расширять редактор под любые задачи.

Рекомендации по выбору

  • Если вы только начинаете, лучше учиться на nano: он интуитивнее.
  • Освоение vim имеет смысл, если вы часто работаете на серверах, где бывает установлен только vi или vim.
  • Emacs — на любителя. Некоторые «фанаты» Emacs используют его как универсальную среду разработки, но это отдельная, более глубокая история.

Тренировочное упражнение (сравнительное)

  1. Возьмите любой простой файл (например, test.txt) и последовательно откройте его в nano, vim и, при желании, emacs.
  2. В каждом редакторе сделайте что-нибудь простое: добавьте или удалите пару строк, сохраните и выйдите.
  3. Сравните, насколько удобно или непривычно пользоваться каждым из редакторов. Определитесь, какой из них вам кажется самым дружелюбным.

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

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

Попробуйте каждый из них, выполните упражнения и выберите, что подходит лично вам. Но даже если предпочтение отдано nano, советую хотя бы в минимальном объёме освоить vim, так как на многих серверах он предустановлен по умолчанию (и может оказаться вашим единственным вариантом для быстрого редактирования).

Главное — не бояться экспериментировать и учиться новому, ведь навыок работы с консольными редакторами открывает дополнительные возможности для автоматизации и удобного управления системой!

Ниже приводится заключительный урок, в котором мы подводим итоги о важности командной строки (CLI) и рассматриваем, где ещё навыки работы с терминалом могут пригодиться в будущем. Каждая часть завершается коротким тренировочным упражнением, чтобы вы могли закрепить полученные знания в более широком контексте.


Заключение

Эффективность работы разработчика

Работа в консоли даёт много преимуществ:

  1. Скорость. Часто в CLI можно выполнить действие одной-двумя командами вместо множества кликов в графическом интерфейсе.
  2. Автоматизация. Написав скрипт, вы сможете многократно запускать его, экономя время на рутинных задачах.
  3. Точность и контроль. Вы явно указываете, что нужно сделать, и получаете конкретный результат.

Пример сценария

Представьте, что у вас есть сотня фотографий в папке, и вам нужно переименовать их последовательно в img_001.jpg, img_002.jpg, и т.д. В графическом интерфейсе это займёт уйму времени, а в терминале всё делается одной командой (например, с использованием цикла Bash или утилиты rename):

for i in *.jpg; do
  # Считаем номер по порядку и формируем новое имя
  n=$(printf "%03d" $(echo $((10#${n:-0}+1))))
  mv "$i" "img_$n.jpg"
done

Комментарий:

  • Этот скрипт перебирает все файлы с расширением .jpg и переименовывает их, добавляя префикс img_ и номер, форматированный до трёх знаков (001, 002 и т.д.).
  • Может выглядеть сложновато, но если вы привыкнете к подобным конструкциям, сможете экономить массу времени в реальных проектах.

Тренировочное упражнение (эффективность)

  1. Создайте папку images_test, поместите туда несколько файлов (назовите их как угодно, например photo1.jpg, vacation2.jpg, random.jpg).
  2. Напишите мини-скрипт (или командный цикл), который переименует эти файлы в формате img_001.jpg, img_002.jpg и т.д.
  3. Используйте любую удобную для вас оболочку (Bash, PowerShell). Если вы в Windows, можно установить Git Bash или пользоваться WSL.

(Подсказка: в PowerShell тоже можно использовать цикл ForEach-Object или for, чтобы перебрать файлы и переименовать их.)


Где ещё полезен CLI?

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

  1. Настройка серверов:
    • Большинство удалённых серверов работают на Linux (Ubuntu, CentOS). Чтобы что-то там настроить, вы будете подключаться по SSH и работать «только через консоль».
    • Без знания командной строки придётся сложно.
  2. Автоматизация задач скриптами:
    • Bash-скрипты (Linux/Mac) или PowerShell-скрипты (Windows) позволяют выполнять рутинные операции автоматически (например, копировать резервные копии, генерировать отчёты, мониторить логи).
  3. Использование Git:
    • Git (система контроля версий) можно использовать с графическим интерфейсом, но большинство команд (git clone, git commit, git push) часто удобнее и быстрее делать из консоли.
    • Продвинутые возможности Git (rebase, cherry-pick, merge с разными флагами) часто проще освоить именно через CLI, читая документацию.
  4. DevOps / CI/CD:
    • Современные процессы выстраиваются так, что при каждом обновлении кода автоматически запускаются тесты, сборки, деплой. Всё это настраивается в консолях или в виде яml/json-скриптов (например, в GitLab CI, GitHub Actions).
    • Умение быстро исправить конфиг в терминале — ключ к оперативному решению проблем.

Пример работы с сервером

# Допустим, вы подключаетесь к удалённому серверу по SSH:
ssh myuser@123.45.67.89

# После ввода пароля или использования ключей,
# вы оказываетесь внутри консоли удалённого сервера.

# Теперь можно смотреть логи, обновлять пакеты, перезапускать сервисы и т.д.
sudo systemctl restart nginx

Комментарий:

  • Подключившись к серверу, у вас нет графических «окошек», зато есть вся мощь CLI.
  • Если нужно, например, посмотреть, что происходит в журнале веб-сервера: cat /var/log/nginx/error.log или tail -f /var/log/nginx/error.log, чтобы видеть обновления журнала в реальном времени.

Пример автоматизации (Bash)

#!/bin/bash
# backup.sh
# Небольшой скрипт, который делает архив папки и складывает в папку backup

SOURCE_DIR="/home/user/my_project"
DEST_DIR="/home/user/backup"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

tar -czf "$DEST_DIR/my_project_$DATE.tar.gz" "$SOURCE_DIR"
echo "Backup completed at $DATE"

Комментарий:

  • Запустив этот скрипт командой ./backup.sh, вы упакуете текущую версию проекта в архив с меткой времени.
  • Можно поставить этот скрипт на cron (планировщик задач в Linux) и сделать бэкапы автоматическими, например, раз в день.

Тренировочное упражнение (где CLI полезен)

  1. Серверная практика (опционально):
    1. Если у вас есть доступ к какому-либо удалённому серверу (или вы установили локальную виртуальную машину), подключитесь к ней по SSH и выполните несколько базовых команд (создайте папку, скопируйте файлы, запустите обновление пакетов).
  2. Git:
    1. Создайте локальный репозиторий, добавьте файл, сделайте коммит и запушьте на GitHub — всё это через командную строку (git init, git add, git commit -m, git remote add origin, git push).
  3. Простая автоматизация:
    1. Напишите маленький скрипт (Bash или PowerShell), который выводит «Hello, world!» и текущее время, затем сохраняйте это в текстовый файл. Запустите скрипт. Проверьте результат.

  • CLI открывает огромные возможности: от быстрой навигации по файловой системе и пакетного переименования до настроек серверов и автоматизации процессов.
  • Серверная разработка, DevOps, облачные технологии, контроль версий (Git) — всё это на 99% основано на работе через командную строку.
  • Эффективность программиста или админа напрямую связана с умением разрулить задачу командой (или несколькими командами) в терминале.

Овладение командной строкой — это не просто «ещё один навык», а «пропуск в мир» системного администрирования, автоматизации и более глубокого понимания, как всё работает «под капотом».

Поздравляем вас с тем, что вы уже освоили большой объём базовых и не очень базовых команд! Продолжайте экспериментировать, читать встроенные мануалы (man, help), писать собственные скрипты и подключаться к новым технологиям — и тогда CLI станет вашим мощным союзником в разработке и администрировании.

Ниже предлагается проектное задание, которое поможет вам отработать все ключевые навыки, полученные в ходе урока по работе с командной строкой (CLI). Задание задумано так, чтобы охватить максимум из пройденных тем: навигацию по директориям, создание и удаление файлов/папок, копирование и перемещение, архивирование, работу со справочными командами, а также базовую автоматизацию и редактирование файлов в терминале. Постарайтесь выполнять его пошагово, проверяя себя после каждого этапа.


Проектное задание: «Создание структуры проекта и автоматизация рутин»

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


Шаг 1: Создание основной директории и базовых подпапок

  1. Создайте в своей домашней папке (или в любом удобном месте) новую директорию с названием cli_project.
    • В Linux/Mac: mkdir cli_project
    • В Windows (CMD/PowerShell): mkdir cli_project
  2. Перейдите в неё:
    • cd cli_project
  3. Внутри создайте три подпапки: docs, scripts, archive.
    • Например (Linux/Mac):
      mkdir docs scripts archive
      
    • Или (Windows, CMD/PowerShell):
      mkdir docs
      mkdir scripts
      mkdir archive
      

Результат: у вас должна получиться структура:

cli_project/
 ├─ docs/
 ├─ scripts/
 └─ archive/

Проверка: выполните ls (Linux/Mac, PowerShell) или dir (CMD) в папке cli_project, убедитесь, что появились три директории.


Шаг 2: Создание и редактирование текстовых файлов

  1. В папке docs создайте два текстовых файла: commands.txt и notes.txt.
    • В Linux/Mac:
      cd docs
      touch commands.txt notes.txt
      
    • В Windows (CMD):
      cd docs
      type nul > commands.txt
      type nul > notes.txt
      
    • (PowerShell):
      New-Item commands.txt
      New-Item notes.txt
      
  2. Откройте commands.txt в любом консольном редакторе, который удобен вам (nano, vim, emacs или PowerShell ISE/Visual Studio Code, если хотите — но лучше потренироваться именно в консольном редакторе).
    • Добавьте туда список нескольких команд, которые вы выучили (например, ls -l, cd .., rm -r и т. д.) с краткими пояснениями, для чего они нужны.
  3. Откройте notes.txt в том же или другом редакторе, напишите заметку, чему вы научились в CLI.
  4. Посмотрите содержимое новых файлов в терминале:
    • Linux/Mac/PowerShell: cat commands.txt, cat notes.txt
    • CMD: type commands.txt, type notes.txt

Проверка: убедитесь, что строки, которые вы добавили, действительно сохранились.


Шаг 3: Копирование и перемещение файлов

  1. Скопируйте файл commands.txt из папки docs в папку archive с новым именем commands_backup.txt.
    • Пример (Linux/Mac):
      cp commands.txt ../archive/commands_backup.txt
      
    • Windows (CMD/PowerShell):
      copy commands.txt ..\archive\commands_backup.txt
      
  2. Переместите файл notes.txt из папки docs в папку scripts (пусть имя останется прежним).
    • Linux/Mac:
      mv notes.txt ../scripts/
      
    • Windows (CMD/PowerShell):
      move notes.txt ..\scripts\
      
  3. Зайдите в папку archive и проверьте, что там теперь лежит commands_backup.txt. Зайдите в scripts и проверьте notes.txt.

Шаг 4: Удаление ненужных файлов

  1. Вернитесь в папку docs (если вы не там):
    cd ../docs
    
  2. Создайте лишний тестовый файл, например temp.txt, и удалите его.
    • В Linux/Mac:
      touch temp.txt
      rm temp.txt
      
    • В Windows (CMD):
      type nul > temp.txt
      del temp.txt
      
  3. Будьте аккуратны и всегда проверяйте командой pwd (или echo %cd% в CMD) где вы находитесь, прежде чем удалять файлы.

Шаг 5: Архивация

  1. Перейдите в корневую папку проекта cli_project.
  2. Создайте архив из папки scripts:
    • Linux/Mac (tar):
      tar -czf scripts_archive.tar.gz scripts
      

      Теперь у вас должен появиться файл scripts_archive.tar.gz.

    • Windows (PowerShell):
      Compress-Archive -Path .\scripts\* -DestinationPath .\scripts_archive.zip
      
  3. Удалите папку scripts (как будто «освободили» место).
    • Linux/Mac: rm -r scripts
    • Windows (CMD): rmdir scripts /s
    • Windows (PowerShell): Remove-Item scripts -Recurse
  4. Извлеките файлы из архива (проверьте, что всё вернулось):
    • Linux/Mac:
      tar -xzf scripts_archive.tar.gz
      
    • Windows (PowerShell):
      Expand-Archive -Path .\scripts_archive.zip -DestinationPath .\scripts_restored
      
    • При распаковке в Windows может создаться папка scripts_restored. Вы можете переименовать её обратно в scripts при желании.

Шаг 6: Автоматизация (небольшой скрипт)

  1. Создайте в папке scripts скрипт (назовём его backup.sh для Linux/Mac или backup.ps1 для PowerShell) для резервного копирования папки docs в archive. Пример для Bash:
#!/usr/bin/env bash
# backup.sh - создает архив папки docs с таймстампом

DATE=$(date +%Y-%m-%d_%H-%M-%S)
tar -czf "../archive/docs_backup_$DATE.tar.gz" ../docs
echo "Backup completed: docs_backup_$DATE.tar.gz"

Комментарий:

  • Переменная $DATE берёт текущую дату/время, чтобы каждый архив имел уникальное имя.
  • Команда tar создаёт gz-архив из содержимого папки docs и кладёт его в archive.
  1. Сделайте скрипт исполняемым и запустите (Linux/Mac):
cd scripts
chmod +x backup.sh
./backup.sh
  1. В PowerShell будет похожая идея:
# backup.ps1
# Создаёт zip-архив папки docs с таймстампом
$DATE = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
Compress-Archive -Path ../docs/* -DestinationPath ("../archive/docs_backup_$DATE.zip")
Write-Host "Backup completed: docs_backup_$DATE.zip"

Запуск:

.\backup.ps1
  1. Проверьте в папке archive, что создался архив с датой/временем.

Шаг 7: Используйте справку (обязательно!)

Во время выполнения задания:

  • Обращайтесь к man <команда> или --help в Linux/Mac,
  • К help, command /? или Get-Help в Windows,
  • При возникновении затруднений с синтаксисом флагов, ключей и т. п.

(Это не столько шаг, сколько напоминание: регулярно проверяйте документацию.)


Шаг 8: Подведение итогов

  1. Просмотрите дерево вашего проекта cli_project:
    tree cli_project   # Linux/Mac (если установлена команда tree)
    

    Или с помощью ls -R cli_project (рекурсивный просмотр). В Windows можно использовать dir /s cli_project.

  2. Убедитесь, что все операции — создание, удаление, копирование, перемещение, архивирование, а также запуск скриптов — сработали так, как вы планировали.
  3. Оцените, какие действия вы делали чаще всего, какие команды были самыми полезными. Подумайте, есть ли смысл включить их в свой личный «список полезных команд» или даже написать небольшой шорткат/alias.

Результат проекта

  • У вас появился опыт создания и структурирования директории под проект.
  • Вы освоили базовые команды CLI в реальном контексте: от навигации и редактирования файлов до архивирования и простых скриптов.
  • Вы увидели, как важна аккуратность в указании путей и команд (особенно опасных, вроде удаления).
  • У вас есть готовый «скелет» для дальнейших экспериментов — при желании можно расширять проект, добавлять новые скрипты автоматизации, изучать более сложные инструменты.

Дополнительные идеи

  1. Добавьте Git: Инициализируйте локальный репозиторий в cli_project (git init), закоммитьте всё, затем сделайте новые коммиты после каждого изменения.
  2. Установите cron (Linux/Mac) или планировщик задач в Windows, чтобы запускать backup.sh (или backup.ps1) автоматически по расписанию.
  3. Подготовьте Dockerfile (если интересно): Создайте контейнер, в котором будет повторяться ваша структура и команды, чтобы всё можно было быстро деплоить на сервер.

Поздравляем с завершением проектного задания! Если вы выполнили все шаги и скрипты работают, значит, вы не только усвоили весь необходимый минимум команд CLI, но и увидели, как они применяются в небольшом, но реальном проектном сценарии. Теперь вы готовы к более продвинутым вещам: настройке серверов, работе с системами контроля версий и профессиональным инструментам автоматизации.

Удачи и успехов в дальнейшем погружении в мир командной строки!

Понравилась статья? Поделиться с друзьями:
Школа Виктора Комлева
Комментарии: 1
    Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

    Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.