Learning Platform
Глоссарий Troubleshooting
Урок 02.02 · 20 мин
Начальный
LinuxFilesCommandscatmkdircpmvrm

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

В прошлом уроке вы научились ориентироваться: знать, где вы, и перемещаться. Теперь начнём что-то делать с файлами. Шесть команд этого урока — это рабочая лошадка, которой пользуются каждый день годами: посмотреть содержимое файла, создать папку, скопировать, переместить, переименовать, удалить.

Все примеры мы делаем в безопасной песочнице — в новой папке, которую сами создадим. Так нельзя случайно навредить системе. Давайте сразу её и создадим.


mkdir — создать папку

mkdir (make directory) создаёт новую папку. Дадим ей имя sandbox и зайдём внутрь:

$ cd ~
$ mkdir sandbox
$ cd sandbox
$ pwd
/home/lev/sandbox

Папка создана, и мы внутри. Если нужно создать сразу вложенную цепочку папок, поможет флаг -p (parents):

$ mkdir -p data/raw/2026
$ ls -F
data/

Без -p команда mkdir data/raw/2026 ругалась бы: «нет такой папки data». Флаг -p создаёт всю цепочку сразу и не жалуется, если папка уже есть.


Создадим файл, чтобы было с чем играть

Чтобы потренироваться, нам нужен текстовый файл. Самый простой способ для новичка — команда echo со стрелкой >:

$ echo "first line" > notes.txt
$ ls -F
data/   notes.txt

Стрелка > означает «отправить вывод команды в файл». Здесь echo напечатал бы first line, но стрелка перехватила это и записала в notes.txt. Мы подробно разберём стрелки в модуле про перенаправление; сейчас просто пользуемся, чтобы создать файл.

Добавим ещё пару строк двойной стрелкой >> (она дописывает в конец, а не перезаписывает):

$ echo "second line" >> notes.txt
$ echo "third line" >> notes.txt
WARNING

Одна стрелка > стирает файл и пишет заново. Две стрелки >> дописывают в конец. Перепутать их — частая ошибка новичка: написали > вместо >> и потеряли всё, что было в файле. Запомните: одна стрелка перезаписывает, две добавляют.


cat — показать файл целиком

cat печатает всё содержимое файла прямо в терминал. Для маленьких файлов это идеально:

$ cat notes.txt
first line
second line
third line

Имя cat происходит от concatenate (сцепить) — команда умеет склеивать несколько файлов в один вывод, но чаще всего ей просто смотрят один файл. Подойдёт для коротких файлов в десяток-другой строк.


less — листать большой файл

А вот если файл большой — на тысячи строк — cat вывалит всё разом, и вы увидите только последний экран. Для таких файлов есть less. Он открывает файл в режиме просмотра, где можно листать:

$ less /etc/services

Внутри less работают клавиши:

  • Стрелки вверх/вниз или колесо мыши — листать построчно.
  • Пробел — следующая страница.
  • / и слово, затем Enter — поиск по тексту.
  • q — выйти обратно в терминал.

Главное, что нужно запомнить про less: выход — это клавиша q. Новички часто «застревают» в less, не понимая, как вернуться. Просто нажмите q.


cp — скопировать

cp (copy) делает копию файла. Сначала исходник, потом имя копии:

$ cp notes.txt notes-backup.txt
$ ls -F
data/   notes-backup.txt   notes.txt

Появилась копия notes-backup.txt, оригинал на месте. Чтобы скопировать папку целиком (со всем содержимым), нужен флаг -r (recursive — рекурсивно, то есть вместе со всем внутри):

$ cp -r data data-copy
$ ls -F
data/   data-copy/   notes-backup.txt   notes.txt

Без -r команда отказалась бы копировать папку. Запомните: папки копируются с -r.


mv — переместить или переименовать

mv (move) делает две вещи сразу, в зависимости от того, что вы укажете. Если цель — другая папка, файл переезжает туда. Если цель — новое имя, файл переименовывается. Это одна и та же операция «дать файлу новый адрес».

$ mv notes-backup.txt notes-old.txt    # переименование
$ ls -F
data/   data-copy/   notes-old.txt   notes.txt

$ mv notes-old.txt data/               # перемещение в папку data
$ ls -F data
notes-old.txt   raw/

В первом случае мы дали файлу новое имя (он остался на месте). Во втором — переместили его внутрь папки data. Никакого -r для папок тут не нужно: mv перемещает папки так же легко, как файлы.


rm — удалить (осторожно!)

rm (remove) удаляет файл. И вот здесь начинается самая опасная часть урока.

DANGER

В терминале НЕТ корзины. Когда вы удаляете файл через rm, он исчезает навсегда — его не восстановить через «Корзину», как в графической системе. Дважды проверяйте, что именно вы удаляете, ОСОБЕННО если используете флаг -r (удалить папку со всем содержимым) и звёздочку * (все файлы). Команда rm -rf способна стереть огромные объёмы данных за долю секунды и без единого вопроса.

Удалим один файл — это безопасно и обычно:

$ rm notes.txt
$ ls -F
data/   data-copy/

Файл notes.txt исчез. Чтобы удалить папку со всем содержимым, нужен -r:

$ rm -r data-copy
$ ls -F
data/

Для новичка есть отличная страховка — флаг -i (interactive). Он спрашивает подтверждение перед каждым удалением:

$ rm -i data/notes-old.txt
rm: remove regular file 'data/notes-old.txt'? y

Вы отвечаете y (yes) или n (no). Пока вы не уверены в себе, привычка писать rm -i спасёт вас не раз. Никогда не запускайте rm -rf на пути, который не прочитали глазами дважды — особенно если в нём есть ~ или / в начале.


Попробуй сам

Соберём всё вместе в одной безопасной тренировке. Скопируйте команды по очереди:

$ cd ~
$ mkdir -p practice/backup       # создаём песочницу с подпапкой
$ cd practice
$ echo "hello linux" > greeting.txt
$ cat greeting.txt               # смотрим, что записалось
hello linux
$ cp greeting.txt backup/        # копируем в подпапку
$ ls -F backup
greeting.txt
$ mv greeting.txt hello.txt      # переименовываем оригинал
$ ls -F
backup/   hello.txt
$ rm -i hello.txt                # удаляем с подтверждением (ответьте y)
$ ls -F
backup/

Когда закончите играть, можно убрать за собой всю песочницу одной командой (прочитайте путь дважды перед Enter):

$ cd ~
$ rm -r practice

Вы только что прошли полный жизненный цикл файла: создали, посмотрели, скопировали, переименовали, удалили. Это 80 процентов ежедневной работы с файлами в терминале.


Проверка знанийKnowledge check
Чем отличается echo "x" > file.txt от echo "x" >> file.txt, и почему путаница между ними опасна?
ОтветAnswer
Одна стрелка > перезаписывает файл: его прежнее содержимое стирается полностью, и остаётся только новая строка. Две стрелки >> дописывают новую строку в конец, сохраняя всё, что было раньше. Путаница опасна тем, что если вы хотели добавить строку в важный файл (логи, конфиг, список), но по ошибке написали одну стрелку вместо двух, то всё прежнее содержимое мгновенно исчезает без предупреждения и без возможности отменить — в терминале нет истории изменений и нет корзины. Правило: > означает "начать файл заново", >> означает "добавить в конец". Когда сомневаетесь, безопаснее сначала посмотреть файл через cat, а для дозаписи всегда использовать >>.

Проверьте понимание

Результат: 0 из 0
Прикладной
Вопрос 1 из 5. Какая команда создаёт сразу всю цепочку вложенных папок data/raw/2026, даже если data и raw ещё не существуют?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3