Урок курса

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

Bash Linux + Git: от новичка до уверенного пользователя

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

  • pwd (print working directory) – показывает текущую рабочую директорию, то есть "где я сейчас нахожусь". Если ты потерялся в дебрях файловой системы, набери pwd и Bash подскажет твое местоположение.

  • ls (list) – выводит список файлов и папок в текущей директории. Это как оглянуться вокруг себя. Добавь флаг -l для детального списка с правами и датами, а -a — чтобы увидеть спрятанные файлы (те, что начинаются с точки).

  • cd (change directory) – перемещает тебя в другую директорию. Например, cd Documents переместит в папку Documents (если она существует в текущем месте). Команда cd .. поднимает на уровень вверх (к "родительской" папке), а просто cd (без указания пути) или cd ~ отправит тебя в домашний каталог пользователя.

  • mkdir (make directory) – создает новый каталог (папку). Хочешь завести новое "место" для своих проектов? Команда mkdir new_folder создаст папку с именем new_folder в текущей директории. Кстати, флаг -p позволяет создать целую цепочку вложенных каталогов разом, например mkdir -p dir1/dir2/dir3.

  • touch – создаёт пустой файл, если его не было, или обновляет время изменения файла, если он уже существует. Название забавное – как будто "потрогать" файл. Используется часто, чтобы быстро создать пустой файл: touch file.txt.

  • cp (copy) – копирует файлы или папки. Например, cp original.txt backup.txt сделает копию файла original.txt с именем backup.txt. А cp -r dir1 dir2 скопирует папку dir1 со всем её содержимым в dir2 (флаг -r означает "рекурсивно", то есть включая вложенные файлы и папки).

  • mv (move) – перемещает или переименовывает файлы/папки. Две функции в одной команде: если указать другой путь, файл переместится, а если указать другое имя в той же папке – файл просто будет переименован. Примеры: mv file.txt /home/user/Documents перенесёт файл в папку Documents, а mv oldname.txt newname.txt переименует oldname.txt в newname.txt.

  • rm (remove) – удаляет файлы или папки. Опасная команда, но очень нужная. rm file.txt удалит файл, а rm -r folder рекурсивно удалит папку folder со всем её содержимым. Важно: в Linux нет Корзины, поэтому всё, что удалено через rm, пропадает безвозвратно (ну, почти всегда). Так что дважды подумай, прежде чем жать Enter с rm! Помни: rm -rf / – и у тебя очень чистая система... без системы 😉.

  • man (manual) – открывает руководство (мануал) по любой другой команде. Например, man ls покажет подробную справку о команде ls. Выход из справки – клавиша Q. Это твоя встроенная энциклопедия по командам, пользуйся ей, когда не помнишь, как что-то работает.

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

Попрактикуйся с этими командами в терминале. Например, попробуй перейти в свой домашний каталог, создать там папку test, зайти в неё и создать файл hello.txt. Затем проверь командой ls, что файл на месте, и удали его (если не жалко) командой rm. Если где-то запутаешься, используй pwd, чтобы понять, где находишься, и ls, чтобы посмотреть, что вокруг. В следующих шагах этого урока мы посмотрим на каждую команду в отдельности.

Что такое pwd?

pwd — это аббревиатура от print working directory, что в переводе означает «вывести рабочую директорию». Команда выводит полный абсолютный путь к текущему каталогу, в котором вы находитесь в момент выполнения команды.

Основной синтаксис

pwd [опции]
  • Без опций:
    При простом вызове pwd вы увидите абсолютный путь текущей директории.

  • Опции:

    • -L (logical) — выводит логический путь, то есть путь, как он задан в переменной окружения PWD (с учетом символических ссылок). Это значение по умолчанию.
    • -P (physical) — выводит физический путь, то есть без символических ссылок (резолвит их в реальные пути).

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

  1. Базовый пример:

    pwd

    Если вы находитесь в домашнем каталоге пользователя, вывод может быть таким:

    /home/username
  2. С использованием опции -P:

    pwd -P

    Эта команда разрешит все символические ссылки и покажет фактическое расположение каталога.

  3. С использованием опции -L:

    pwd -L

    Это практически эквивалентно простому вызову pwd, выводя путь согласно логической структуре (с сохранением символических ссылок).

Зачем нужна команда pwd?

  • Навигация:
    При работе в командной строке часто бывает полезно быстро проверить, в каком каталоге вы находитесь, особенно после выполнения команды cd или работы с символическими ссылками.

  • Отладка скриптов:
    При написании Bash-скриптов команда pwd помогает убедиться, что скрипт выполняется в ожидаемом каталоге, что важно при работе с относительными путями.

  • Динамическое построение путей:
    Вывод pwd можно использовать для создания динамических путей, например:

    tar -czf backup_$(pwd | tr '/' '_').tar.gz .

    Здесь результат работы pwd включается в имя архива.

Особенности

  • Встроенная команда и внешняя утилита:
    В большинстве оболочек (например, bash) pwd реализована как встроенная команда. Однако существует и внешняя утилита /bin/pwd (часть GNU coreutils), которая может вести себя немного иначе в зависимости от опций.

  • Логическое vs. физическое представление:
    Если вы работаете с символическими ссылками, важно понимать разницу между логическим (-L) и физическим (-P) представлением. Например, если каталог /home/user/docs является символической ссылкой на /mnt/storage/documents, то:

    • pwd -L покажет: /home/user/docs
    • pwd -P покажет: /mnt/storage/documents

Практическое применение

  • Навигация:
    Перед выполнением операций с файлами полезно проверить, в каком каталоге вы находитесь:

    cd /some/path
    echo "Мы сейчас в: $(pwd)"
  • Скрипты:
    В автоматизированных задачах можно сохранить путь текущей директории в переменную для дальнейшего использования:

    CURRENT_DIR=$(pwd) 
    echo "Работаем из каталога: $CURRENT_DIR"

Разбор команды ls

Что такое ls?

Команда ls (от англ. list) используется для вывода списка файлов и директорий в указанном каталоге. Это основная утилита для навигации по файловой системе в Bash и других оболочках.

Основной синтаксис

ls [опции] [файл или директория]

  • Если аргументы не заданы, ls выводит содержимое текущего каталога.
  • Если указан путь к каталогу, выводятся файлы и папки в этом каталоге.
  • Если указан конкретный файл, ls покажет его имя и, в зависимости от опций, дополнительную информацию.

Основные опции ls

  • -l — вывод в длинном формате. Показывает подробную информацию: права доступа, количество ссылок, владельца, группу, размер, дату последнего изменения и имя файла.
  • -a — вывод всех файлов, включая скрытые (те, имена которых начинаются с точки .).
  • -h — при использовании с -l (например, ls -lh) размеры файлов выводятся в "читаемом" виде (например, 1K, 234M, 2G).
  • -r — обратная сортировка (реверсивный порядок).
  • -t — сортировка по времени изменения, начиная с самых новых.
  • -S — сортировка по размеру.
  • -R — рекурсивный вывод содержимого каталогов: ls покажет не только файлы текущего каталога, но и их содержимое.
  • --color=auto — вывод с цветовой разметкой (обычно включён по умолчанию в современных системах). Цвета помогают визуально отличать каталоги, файлы, символические ссылки и исполняемые файлы.

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

1. Базовый вывод

ls

Выводит список файлов и папок в текущей директории. Это самый простой вариант использования команды.

2. Длинный формат

ls -l

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

-rw-r--r-- 1 user group 4096 Mar 10 14:23 example.txt

Здесь:

  • -rw-r--r-- — права доступа.
  • 1 — количество ссылок.(см. ниже)
  • user — владелец файла.
  • group — группа.
  • 4096 — размер файла в байтах.
  • Mar 10 14:23 — дата и время последнего изменения.
  • example.txt — имя файла.

3. Скрытые файлы

ls -a

Выводит все файлы, включая те, что начинаются с точки (скрытые файлы, например, .bashrc).

4. Читаемый размер файлов

ls -lh

Опция -h (human-readable) делает вывод размера файлов более понятным: 1K, 234M, 2G и т.д.

5. Сортировка по времени

ls -lt

Отсортирует файлы так, что в начале будут самые недавно изменённые.

6. Рекурсивный вывод

ls -R

Выведет содержимое текущего каталога, а затем рекурсивно покажет содержимое всех вложенных подкаталогов.

7. Использование нескольких опций

Комбинировать опции можно для получения более информативного вывода. Например:

ls -alh --color=auto

Выведет все файлы (включая скрытые) в длинном формате с читаемым размером и цветовой разметкой.

Особенности и советы

  • Цветовая разметка:
    Цвета помогают быстро ориентироваться. Например, каталоги обычно отображаются синим цветом, исполняемые файлы — зелёным, символические ссылки — светло-голубым или другим отличительным цветом. Это зависит от настроек терминала и переменной окружения LS_COLORS.

  • Использование шаблонов:
    ls можно комбинировать с подстановочными знаками для фильтрации файлов. Например:

    ls *.txt

    Выведет только файлы с расширением .txt.

  • Сортировка:
    Опции сортировки (-t, -S, -r) полезны для быстрой оценки, какие файлы недавно изменялись или занимают больше всего места.

  • Скрытые файлы:
    Опция -a особенно полезна, когда нужно найти файлы конфигурации или скрытые каталоги (например, .git или .config).

Практическое применение

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

    ls -alh /home/username/Documents
  • Скрипты:
    Скрипты могут использовать ls для динамического получения списка файлов. Например, для перебора всех .log файлов:

    for file in *.log; do 
        echo "Обработка файла: $file" 
        # дальнейшая обработка 
    done

Количество жёстких ссылок

Третий столбец вывода ls -l показывает число hard links (жёстких ссылок) на один и тот же inode:

  • Для обычного файла:
    • Начальное значение – 1.
    • При создании новой жёсткой ссылки (ln original newlink) счётчик увеличивается.
  • Для директории:
    • Базово – 2 (записи . и ссылка из родительской директории).
    • Каждая вложенная поддиректория добавляет ещё одну ссылку через свою запись ...
    • Поэтому формула для директории: число ссылок = 2 + количество поддиректорий.

Например:

mkdir demo && cd demo
touch a.txt
ln a.txt b.txt
mkdir sub
  • ls -ld . покажет 3 — это ., .. и поддиректория sub.
  • ls -l для файлов a.txt и b.txt покажет 2 — две ссылки на один и тот же inode.

Такой способ подсчёта работает до тех пор, пока файловая система не ограничивает максимальный счётчик ссылок на директорию.

Разбор команды cd

Что такое cd?

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

Основной синтаксис

cd [путь]

  • Путь может быть абсолютным (начинается с /) или относительным (относительно текущей директории).
  • Если путь не указан, команда переходит в домашнюю директорию пользователя (то есть эквивалентна выполнению cd ~).

Основные варианты использования

1. Переход в домашнюю директорию

cd 
# или 
cd ~

Если путь не задан, Bash автоматически перемещается в домашний каталог текущего пользователя.

2. Абсолютный путь

cd /usr/local/bin

Команда перемещает вас в каталог /usr/local/bin независимо от того, где вы находитесь.

3. Относительный путь

cd Documents

Если вы находитесь в домашней директории и вводите cd Documents, то Bash переходит в подкаталог Documents.

4. Переход на уровень вверх

cd ..

Команда cd .. поднимает вас на один уровень выше в иерархии каталогов (в родительский каталог).

5. Переход в предыдущий каталог

cd -

Команда cd - позволяет переключиться на предыдущую рабочую директорию. Это удобно, если вы хотите быстро вернуться к месту, где были до текущего перехода.

6. Использование точки и двойной точки

  • . обозначает текущий каталог, а .. – родительский каталог.
  • Например, команда:
    cd ./subdir
    перейдёт в подкаталог subdir текущей директории, а
    cd ../otherdir
    переместится в каталог otherdir, находящийся в родительской директории.

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

Пример 1: Переход в домашнюю директорию

cd pwd

Вы увидите полный путь к вашему домашнему каталогу.

Пример 2: Переход в конкретный каталог

cd /var/log pwd

Команда pwd покажет, что вы теперь находитесь в каталоге /var/log.

Пример 3: Переход на уровень выше

cd /usr/local/bin cd .. pwd

После выполнения cd .. вы окажетесь в каталоге /usr/local.

Пример 4: Использование cd -

cd /etc cd /var cd -

Команда cd - вернёт вас в предыдущий каталог, т.е. в /etc.

Полезные советы

  • Проверка текущего каталога:
    Если вы не уверены, где находитесь, используйте команду pwd для вывода абсолютного пути текущей директории.
  • Автодополнение:
    При вводе команды cd можно воспользоваться автодополнением (нажимая клавишу Tab), чтобы быстрее перейти в нужный каталог.
  • Символ ~:
    Знак тильды (~) всегда означает домашний каталог. Например, cd ~/Downloads переместит вас в каталог загрузок вашего домашнего каталога.

Разбор команды mkdir

Что такое mkdir?

mkdir (сокращение от make directory) — это команда, предназначенная для создания новых каталогов (директорий) в файловой системе. Это одна из базовых команд, которая позволяет организовывать файлы в структуру каталогов для удобства работы.

Основной синтаксис

mkdir [опции] имя_каталога

  • имя_каталога — имя (или имена) новых директорий, которые вы хотите создать. Это может быть как относительный путь (относительно текущего каталога), так и абсолютный путь.

Основные опции mkdir

  • -p
    Создаёт родительские каталоги при необходимости. Если вы указываете вложенный путь, и промежуточные каталоги не существуют, опция -p создаст их автоматически.
    Пример:

    mkdir -p /home/user/projects/new_project/src

    Здесь, если каталоги /home/user/projects/new_project не существуют, они будут созданы вместе с src.

  • -v
    (verbose) — режим подробного вывода. При использовании опции -v команда выводит сообщение о каждом созданном каталоге.

    mkdir -v my_folder

    Вы увидите сообщение: mkdir: создан каталог 'my_folder'.

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

1. Создание одного каталога

mkdir my_folder

Эта команда создаст каталог с именем my_folder в текущей директории.

2. Создание нескольких каталогов одновременно

mkdir folder1 folder2 folder3

Команда создаст три каталога (folder1, folder2 и folder3) в текущем каталоге.

3. Создание вложенной структуры каталогов

Если нужно создать сразу несколько уровней каталогов, используйте опцию -p:

mkdir -p projects/project1/src

Эта команда создаст каталог projects (если его нет), затем project1 внутри projects и, наконец, src внутри project1.

4. Подробное создание каталога с выводом информации

mkdir -v new_directory

При использовании -v вы увидите сообщение о созданном каталоге.

Практическое применение

  • Организация файлов:
    Используйте mkdir для структурирования данных: создавайте отдельные каталоги для проектов, документов, резервных копий и т.д.

  • Автоматизация скриптов:
    В Bash-скриптах mkdir часто используется для создания временных или постоянных директорий перед записью файлов или логов. Например, можно проверять наличие каталога и создавать его, если его нет:

    [ -d "backup" ] || mkdir -p backup

Советы и особенности

  • Ошибки при создании:
    Если каталог с таким именем уже существует, команда mkdir выдаст сообщение об ошибке. Опция -p подавляет эту ошибку, если каталог уже существует.
  • Права доступа:
    Создаваемые каталоги наследуют права доступа, заданные по умолчанию для пользователя. Если требуется изменить права, можно использовать команду chmod после создания каталога.

Разбор команды touch

Что такое touch?

touch — это команда, которая в первую очередь используется для создания новых пустых файлов. Если указанный файл уже существует, команда обновляет его временные метки (дата и время последнего доступа и модификации). Таким образом, touch позволяет "потрогать" файл, чтобы изменить его временные метки, не меняя содержимого.

Основной синтаксис

touch [опции] имя_файла
  • имя_файла — путь к файлу, который вы хотите создать или обновить.

Основные возможности и опции

  • Создание файла:
    Если файл с указанным именем отсутствует, touch создаёт его как пустой файл.

    touch newfile.txt

    После выполнения этой команды, если файл newfile.txt не существовал, он будет создан.

  • Обновление временных меток:
    Если файл существует, команда обновляет его временные метки (время последнего доступа и модификации) до текущего времени.

    touch existing_file.txt
  • Указание времени вручную:
    Опция -t позволяет задать конкретное время для временной метки в формате [[CC]YY]MMDDhhmm[.ss].

    touch -t 202403151230.30 file.txt

    В этом примере временная метка файла file.txt будет установлена на 15 марта 2024 года, 12:30:30.

  • Использование времени другого файла:
    Опция -r позволяет установить временные метки файла на те же, что и у указанного файла.

    touch -r reference.txt file.txt

    Здесь временные метки файла file.txt будут скопированы из файла reference.txt.

  • Создание сразу нескольких файлов:
    Можно передать несколько имён файлов через пробел, и команда создаст или обновит все они.

    touch file1.txt file2.txt file3.txt

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

Пример 1: Создание нового файла

touch example.txt

Если файла example.txt не существует, он будет создан как пустой. Если же файл существует, его временные метки обновятся до текущего времени.

Пример 2: Обновление времени модификации существующего файла

touch document.txt

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

Пример 3: Задание конкретного времени с опцией -t

touch -t 202404010830.00 report.txt

Устанавливает для файла report.txt время модификации на 1 апреля 2024 года, 08:30:00.

Пример 4: Копирование временной метки с другого файла

touch -r source.txt target.txt

Команда присвоит файлу target.txt те же временные метки, что и у source.txt.

Практическое применение

  • Создание файла как сигнал:
    В скриптах командой touch можно создать пустой файл, который будет служить "флагом" или сигналом для других процессов. Например, файл может указывать, что задача выполнена или что требуется обновление данных.

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

  • Отладка:
    Обновляя временные метки, можно "обновить" файл без изменения его содержимого, что бывает полезно при отладке скриптов или приложений.

Разбор команды cp

Что такое cp?

cp (от английского copy) — это команда для копирования файлов и каталогов. Она позволяет создавать резервные копии файлов, дублировать каталоги и организовывать данные в файловой системе.

Основной синтаксис

cp [опции] источник назначение
  • источник — файл или каталог, который необходимо скопировать.
  • назначение — путь, куда копируется источник. Это может быть либо новый файл, либо каталог.

Основные опции cp

  • -r или -R
    Рекурсивное копирование. Используется для копирования каталогов вместе с их содержимым (подкаталогами и файлами).

    cp -r папка_источник папка_назначение
  • -a
    Режим архива. Эквивалентно набору опций -dR --preserve=all. Копирует каталоги рекурсивно, сохраняет символьные ссылки, права доступа, временные метки и другие атрибуты файлов.

    cp -a исходник/ копия/
  • -v
    Режим подробного вывода (verbose). При выполнении команды выводятся сообщения о каждом копируемом файле.

    cp -v file1.txt /backup/
  • -i
    Интерактивный режим. Перед перезаписью существующего файла запрашивает подтверждение у пользователя.
    Пример:

    cp -i source.txt destination.txt
  • -u
    Копирование только в том случае, если источник новее или файл назначения отсутствует. Полезно для обновления резервных копий.
    Пример:

    cp -u file.txt /backup/

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

Пример 1: Копирование одного файла

cp document.txt document_backup.txt

Эта команда создаст копию файла document.txt с именем document_backup.txt в текущем каталоге.

Пример 2: Копирование файла в другой каталог

cp report.pdf /home/user/backup/ 

Команда скопирует report.pdf в каталог /home/user/backup/. Если в каталоге уже есть файл с таким именем, он будет перезаписан (если не используется интерактивный режим).

Пример 3: Рекурсивное копирование каталога

cp -r projects/ projects_backup/

Опция -r позволяет скопировать весь каталог projects вместе с его подкаталогами и файлами в новый каталог projects_backup.

Пример 4: Копирование с сохранением атрибутов

cp -a my_folder/ my_folder_copy/

Опция -a (archive) копирует каталог my_folder вместе с правами доступа, временными метками и символьными ссылками, создавая полную "архивную" копию.

Пример 5: Копирование с запросом подтверждения

cp -i config.conf /etc/config.conf

Если файл /etc/config.conf существует, команда спросит у пользователя, действительно ли он хочет его перезаписать.

Практическое применение

  • Резервное копирование:
    Используйте cp для создания резервных копий важных файлов или каталогов перед внесением изменений.

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

  • Обновление данных:
    Опция -u удобна для синхронизации файлов: копировать только новые или изменённые файлы в целевой каталог.

Советы и особенности

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

  • Используйте интерактивный режим (-i):
    Это особенно полезно при копировании файлов в системные каталоги, чтобы избежать непреднамеренной перезаписи.

  • Права доступа:
    Если вы копируете файлы между различными пользователями или системами, сохранение атрибутов с помощью -a поможет избежать проблем с правами доступа и временными метками.

Разбор команды mv

Что такое mv?

mv (от английского move) — это команда, которая используется для перемещения файлов и каталогов из одного места в другое, а также для их переименования. По сути, mv изменяет расположение или имя объекта в файловой системе.

Основной синтаксис

mv [опции] источник назначение
  • источник — файл или каталог, который требуется переместить или переименовать.
  • назначение — новое имя файла или путь, куда объект будет перемещён.

Основные варианты использования

1. Перемещение файлов или каталогов

mv file.txt /home/user/documents/

Команда перемещает файл file.txt в каталог /home/user/documents/. Если в указанном каталоге уже существует файл с таким же именем, он будет перезаписан (если не используется интерактивный режим).

2. Переименование файлов или каталогов

mv oldname.txt newname.txt

Команда переименовывает файл oldname.txt в newname.txt. Переименование — это фактически перемещение файла в том же каталоге, но с новым именем.

3. Перемещение нескольких файлов в каталог

mv file1.txt file2.txt file3.txt /home/user/backup/

При таком использовании все указанные файлы будут перемещены в каталог /home/user/backup/.

Основные опции mv

  • -i (interactive)
    Интерактивный режим. Перед перезаписью существующего файла mv запрашивает подтверждение.

    mv -i file.txt /home/user/documents/

  • -f (force)
    Принудительное перемещение без запроса подтверждения, даже если файл назначения существует. Это значение по умолчанию, если не указана опция -i.

    mv -f oldfile.txt newfile.txt

  • -n (no-clobber)
    Не перезаписывать существующие файлы в каталоге назначения.

    mv -n file.txt /home/user/documents/

  • -v (verbose)
    Подробный режим, при котором выводятся сообщения о каждом перемещённом файле или каталоге.

    mv -v file.txt /home/user/documents/

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

Пример 1: Переименование файла

mv report_old.txt report_final.txt

В данном случае файл report_old.txt переименовывается в report_final.txt в том же каталоге.

Пример 2: Перемещение файла в другой каталог

mv image.jpg /home/user/Pictures/

Файл image.jpg перемещается в каталог /home/user/Pictures/. Если в этом каталоге уже есть файл с именем image.jpg, он будет перезаписан (если не указан интерактивный режим).

Пример 3: Перемещение нескольких файлов

mv file1.log file2.log file3.log /var/log/old_logs/

Все перечисленные файлы перемещаются в каталог /var/log/old_logs/.

Пример 4: Использование интерактивного режима

mv -i data.csv /backup/data.csv

Если в каталоге /backup уже существует файл data.csv, mv запросит подтверждение перед его перезаписью.

Полезные советы

  • Переименование через перемещение:
    Команда mv позволяет легко переименовывать файлы и каталоги, не требуя отдельной утилиты для переименования.

  • Интерактивный режим для безопасности:
    Рекомендуется использовать опцию -i, чтобы избежать случайной потери данных при перемещении файлов в каталог, где уже есть файлы с такими же именами.

  • Скрипты и автоматизация:
    В Bash-скриптах команда mv часто используется для организации логов, резервного копирования или подготовки данных к дальнейшей обработке.

Разбор команды rm

Что такое rm?

rm (от англ. remove) — это команда, используемая для удаления (удаления) файлов и каталогов. Она позволяет удалять один или несколько файлов, а также, с определёнными опциями, целые каталоги и их содержимое. Будьте осторожны: удалённые объекты, как правило, не отправляются в корзину, а удаляются безвозвратно.

Основной синтаксис

rm [опции] файл_или_каталог

  • файл_или_каталог — один или несколько объектов, которые требуется удалить. Если объект — каталог, для его удаления потребуется дополнительная опция.

Основные опции rm

  • -f (force)
    Принудительное удаление: rm не выводит предупреждений и не запрашивает подтверждение, даже если файл защищён от записи.

    rm -f file.txt
  • -i (interactive)
    Интерактивный режим: перед удалением каждого файла rm запрашивает подтверждение.

    rm -i file.txt
  • -r или -R (recursive)
    Рекурсивное удаление: используется для удаления каталогов вместе со всем их содержимым (файлами и подкаталогами).

    rm -r my_folder
  • -v (verbose)
    Режим подробного вывода: выводит информацию о каждом удаляемом файле.

    rm -v file.txt

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

Пример 1: Удаление одного файла

rm file.txt

Команда удаляет файл file.txt из текущей директории. Если файла не существует, rm выдаст сообщение об ошибке, если не указан параметр -f.

Пример 2: Удаление нескольких файлов

rm file1.txt file2.txt file3.txt

Эта команда удалит все три файла одновременно.

Пример 3: Рекурсивное удаление каталога

rm -r old_directory

Опция -r позволяет удалить каталог old_directory и всё его содержимое (подкаталоги, файлы). Будьте осторожны: рекурсивное удаление может привести к потере большого объёма данных.

Пример 4: Безопасное удаление с подтверждением

rm -i dangerous_file.txt

Команда запросит подтверждение перед удалением файла dangerous_file.txt. Это полезно для предотвращения случайного удаления важных файлов.

Пример 5: Принудительное удаление без предупреждения

rm -rf /tmp/test_directory

Опция -rf сочетает рекурсивное удаление и принудительный режим. Такой синтаксис часто используется для удаления каталогов, когда вы уверены в своих действиях. Однако будьте крайне внимательны, особенно с командами вроде rm -rf /, которые могут удалить всю систему.

Полезные советы и предупреждения

  • Осторожность с rm -rf:
    Команда rm -rf является очень мощной. Никогда не запускайте её от имени суперпользователя (root), если не уверены в результате, так как можно удалить критически важные системные файлы.

  • Интерактивный режим:
    Если вы не уверены, какие файлы будут удалены, используйте опцию -i, чтобы rm запрашивала подтверждение для каждого файла.

  • Проверка перед удалением:
    Перед запуском rm рекомендуется сначала выполнить команду ls, чтобы убедиться, что вы удаляете именно те файлы, которые хотели.

  • Использование шаблонов:
    rm можно использовать с подстановочными знаками (wildcards), например, rm *.log удалит все файлы с расширением .log в текущем каталоге.

Разбор команды man

Что такое man?

man (от англ. manual) — это команда, которая позволяет просматривать справочные страницы (мануалы) для других команд и программ в системе. Эти справочные страницы содержат подробную информацию об использовании, опциях, примерах и особенностях команд, что делает man незаменимым инструментом для изучения и отладки.

Основной синтаксис

man [опции] имя_команды

  • имя_команды — имя утилиты или программы, справку по которой вы хотите просмотреть. Например, man ls, man cd или man grep.

Структура справочной страницы

Справочные страницы man обычно организованы по следующей структуре:

  • NAME:
    Краткое название команды и её краткое описание.

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

  • DESCRIPTION:
    Подробное описание назначения команды, её функционала и особенностей работы.

  • OPTIONS:
    Список опций с пояснениями к каждой из них.

  • EXAMPLES:
    Примеры использования команды (иногда раздел может присутствовать).

  • SEE ALSO:
    Ссылки на связанные команды и справочные страницы.

  • AUTHOR / REPORTING BUGS:
    Информация об авторе программы и способах сообщения об ошибках (не всегда присутствует).

Основные опции man

  • -k
    Выполняет поиск по ключевым словам во всех справочных страницах. Эквивалентно команде apropos.
    Пример:

    man -k network

    Выведет список всех команд, связанных с сетью.

  • -f
    Показывает краткую информацию о команде (то же, что и команда whatis).

    man -f ls

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

  • -a
    Показывает все найденные справочные страницы для команды, если их несколько (например, если существует несколько секций мануалов).

    man -a intro
  • -P
    Указывает программу для постраничного просмотра (например, less или more).

    man -P cat ls

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

Пример 1: Просмотр справочной страницы для команды ls

man ls

После выполнения этой команды откроется справочная страница для утилиты ls. Обычно открывается в постраничном просмотрщике (например, less). Нажмите q, чтобы выйти из просмотра.

Пример 2: Поиск по ключевым словам

man -k copy

Команда выполнит поиск всех справочных страниц, в описании которых встречается слово «copy». Это полезно, если вы не знаете точное название команды.

Пример 3: Краткая справка (whatis)

man -f cd

Эта команда выведет короткое описание команды cd, позволяющее быстро понять её назначение.

Полезные советы

  • Навигация внутри man:

    • Используйте клавиши стрелок для перемещения по страницам.
    • Клавиша Page Up/Page Down позволяет быстро пролистывать текст.
    • Нажмите /текст для поиска по странице (например, /OPTIONS).
    • Нажмите q для выхода.
  • Разделы справок:
    Справочные страницы разделены на секции (например, 1 — пользовательские команды, 5 — форматы файлов, 8 — системные утилиты). Если есть неоднозначность, можно указать номер секции. Пример:

    man 5 passwd

    Это откроет справочную страницу о формате файла passwd (не о команде).

  • Поиск нужной информации:
    Если вы не уверены, какая команда подходит для вашей задачи, используйте man -k или apropos. Это позволит найти нужную команду по ключевому слову.

Разбор команды help

Что такое help?

help — это встроенная команда Bash, которая предназначена для вывода справочной информации именно о встроенных командах (builtins) оболочки. В отличие от команды man, которая предоставляет подробные руководства для большинства системных утилит, help сосредоточена на быстром и удобном получении справки по командам, встроенным непосредственно в Bash (например, cd, alias, read, echo и др.). Это особенно полезно, когда вам нужно быстро узнать синтаксис или краткое описание команды, не покидая сессии терминала.

Основной синтаксис

help [-dms] [имя_встроенной_команды...]

  • Без аргументов:
    Если вызвать help без дополнительных параметров, команда выведет список всех встроенных команд Bash вместе с кратким описанием.

  • Аргументы:
    Если указать одно или несколько имён встроенных команд, help выведет справочную информацию для них.

  • Опции:

    • -d
      Выводит только краткое описание (description) каждой команды.
    • -m
      Форматирует вывод в виде, напоминающем страницы руководства (man-like).
    • -s
      Выводит краткий синопсис (synopsis) использования команды.

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

1. Просмотр списка всех встроенных команд

help

Команда выведет список всех встроенных команд Bash с кратким описанием. Это хороший способ узнать, какие команды доступны внутри Bash.

2. Получение справки для конкретной команды

help cd

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

3. Использование опций для настройки вывода

  • Краткое описание синтаксиса для команды alias:

    help -s alias

  • Вывод справки для команды read в формате, похожем на man-страницу:

    help -m read

Пример вывода

При выполнении команды:

help cd

Вы можете увидеть примерно такой вывод:

cd: cd [-L|-P] [dir]
    Change the shell working directory.
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.

Здесь видно:

  • Синтаксис: cd [-L|-P] [dir]
  • Описание: краткое объяснение того, что делает команда и как она работает.

Полезные советы

  • Быстрый доступ к справке:
    Используйте help для получения справочной информации по встроенным командам, не выходя из текущей Bash-сессии. Это особенно полезно для новичков, чтобы быстро разобраться в синтаксисе и назначении команд.

  • Сравнение с man:
    Помните, что help работает только с встроенными командами Bash. Для остальных программ и утилит используйте man.

  • Использование опций:
    Опции -d, -m и -s позволяют адаптировать вывод справки под ваши нужды: от краткого описания до более детализированного формата.

Продолжить с сохранением прогресса

Перейдите к уроку в учебном кабинете.

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