С чего начать Первые шаги трек · 15 ступеней
Linux Labs

Базовые команды с файлами

6 мин Linux · bash

Навигация и файлы — ls, cd, cp, mv, rm, cat, less, head, tail, копипаст в терминале.

Шпаргалка

15 команд Версия для печати
  • ls -lah содержимое каталога подробно
  • cd dir перейти в каталог
  • pwd где я сейчас
  • cp -a src dst скопировать с сохранением прав/времени
  • mv a b переместить/переименовать
  • rm -i f удалить с подтверждением
  • mkdir -p a/b создать с промежуточными каталогами
  • touch f создать пустой файл / обновить время
  • tail -f log следить за логом в реальном времени
  • less file листать файл (q — выход)
  • head -n20 f первые 20 строк
  • cmd1 | cmd2 вывод первой команды на вход второй
  • cmd > out 2>&1 stdout и stderr в файл
  • Ctrl+R (история) · Ctrl+L (очистить) · !! (повтор)

Обзор

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

Все они работают с путями. Путь бывает абсолютным (от корня, /etc/nginx) и относительным (от текущего каталога, ../logs). Текущий каталог показывает pwd, домашний обозначается ~. Подробнее о путях — paths.

Имена файлов чувствительны к регистру, а пробелы в именах приходится экранировать или брать имя в кавычки. Скрытые файлы начинаются с точки и не видны без ls -a.

Ключи

11

Ниже — основные ключи ls, cp, mv, rm, mkdir; для каждой команды есть своя подробная статья (см. «См. также»), здесь — минимум для базовой работы.

Ключ Что делает Пример
-l Длинный формат — права, владелец, размер, дата. ls -l
-a --all Показать и скрытые файлы (начинающиеся с точки). ls -a
-r --recursive Скопировать каталог рекурсивно. cp -r dir1 dir2
-i --interactive Спрашивать подтверждение перед перезаписью — mv по умолчанию перезаписывает молча. mv -i a b
-r --recursive Удалить каталог рекурсивно вместе с содержимым. опасно rm -r dir
-f --force Не спрашивать подтверждения и игнорировать отсутствие файла. опасно rm -rf dir
-p --parents Создать недостающие промежуточные каталоги, не ошибаться, если каталог уже есть. mkdir -p a/b/c
-h --human-readable Размеры в человекочитаемом виде (K, M, G) вместе с -l. ls -lh
-a --archive Сохранить права, время и символические ссылки при копировании (архивно). cp -a src dst
-i --interactive Спрашивать подтверждение перед перезаписью существующего файла. cp -i a b
-i --interactive Спрашивать подтверждение перед каждым удалением. rm -i file

Ничего не найдено. Попробуй запрос короче.

Рецепты

4

Навигация

bash
pwd                               # где я
ls -lah                           # содержимое: длинно, скрытые, человеческие размеры
cd /etc                           # перейти
cd -                              # вернуться в предыдущий каталог
cd                                # домой (~)
tree -L 2                         # дерево на 2 уровня (если установлен)

Пути: . — текущий, .. — родитель, ~ — домашний, / — корень.

Файлы и каталоги

bash
cp file1 file2                    # копировать
cp -r dir1 dir2                   # рекурсивно (каталог)
cp -a src dst                     # сохранить права/время/ссылки (архивно)
mv old new                        # переместить / переименовать
rm file                          # удалить файл
rm -r dir                         # удалить каталог рекурсивно
rm -i file                        # с подтверждением
mkdir -p a/b/c                    # создать с промежуточными каталогами
touch file                        # создать пустой / обновить время
ln -s /target linkname            # символическая ссылка

У rm нет корзины. rm -rf необратим. Перепроверяй путь; опасные удаления сперва прогоняй как ls того же шаблона (см. «Опасно»).

Просмотр текста

bash
cat file                          # вывести целиком (маленькие файлы)
less file                         # листать (q — выход, / — поиск, G — в конец)
head -n 20 file                   # первые 20 строк
tail -n 50 file                   # последние 50 строк
tail -f /var/log/syslog           # следить за дописыванием (логи!)
wc -l file                        # число строк

Конвейеры и перенаправление:

bash
cmd > out.txt                     # stdout в файл (перезапись)
cmd >> out.txt                    # дописать
cmd 2> err.txt                    # stderr в файл
cmd > all.txt 2>&1                # и stdout, и stderr
cmd1 | cmd2                       # вывод cmd1 на вход cmd2

Терминал и копипаст

bash
# Копировать/вставить в терминале (НЕ Ctrl+C — это прерывание!):
#   терминал тренажёра: выдели мышью → Ctrl+Insert, вставка —
#   Shift+Insert (или «Копировать»/«Вставить» в меню правой кнопки)
#   обычный терминал Linux: Ctrl+Shift+C / Ctrl+Shift+V
clear                             # очистить экран (или Ctrl+L)
history | tail                    # последние команды
!!                                # повторить предыдущую команду
sudo !!                           # повторить предыдущую с sudo
Ctrl+R                            # поиск по истории (наберите часть команды)
Ctrl+C                            # прервать текущую команду
Ctrl+A / Ctrl+E                   # в начало / конец строки
Tab                               # автодополнение

Неполадки

5

rm удалил не то

Восстановления нет: rm не кладёт файлы в корзину. Привычка — rm -i (спрашивает подтверждение) и проверка шаблона через ls перед удалением:

bash
ls *.log        # сначала посмотреть, что попадёт под шаблон
rm -i *.log     # потом удалить с подтверждением

No such file or directory, хотя файл виден

Чаще всего дело в пути: ls показывает файл в текущем каталоге, а команда запускается из другого. Проверь pwd и укажи путь полностью.

Permission denied при копировании

Нет прав на чтение источника или на запись в каталог назначения. Посмотри ls -l, при необходимости выполни через sudo — см. permissions.

cp скопировал каталог не целиком

Каталог копируется рекурсивно: cp -a src dst. Без -a (или -r) cp откажется и напишет omitting directory.

Файл занят, место не освободилось после удаления

Пока процесс держит открытым удалённый файл, место не возвращается. Найди держателя через lsof и перезапусти службу — см. disk-usage.

Опасно

2

rm -rf без проверки пути

У rm нет корзины: файлы удаляются сразу и безвозвратно, восстановление средствами файловой системы не гарантировано. rm -rf вдобавок не спрашивает подтверждения и обходит каталоги рекурсивно — опечатка в пути (лишний пробел перед /, неправильная переменная в скрипте) удаляет не то дерево целиком. Перед рискованной командой прогони тот же шаблон через ls, чтобы увидеть список до удаления:

bash
ls -la /var/www/site/tmp/*.cache    # сначала посмотреть, что попадёт под шаблон
rm -i /var/www/site/tmp/*.cache     # потом удалить с подтверждением

mv поверх существующего файла

mv src dst, если dst уже существует, молча перезаписывает его без подтверждения (в отличие от cp -i/rm -i). Для интерактивного подтверждения используй mv -i src dst.

См. также

  • ls — содержимое каталога, права и размеры.
  • cp — копирование файлов и каталогов.
  • mv — перемещение и переименование.
  • rm — удаление без корзины.
  • cat — вывести файл целиком.
  • less — листать длинный файл с поиском.
  • head — первые строки файла.
  • tail — последние строки и слежение за логом.
  • grep — Поиск строк по шаблону; регулярки, рекурсия, контекст.
  • find — Поиск файлов по имени, размеру, времени, правам; действия над найденным.
  • chmod-chown — Смена прав (chmod) и владельца/группы (chown) — числовой и символьный синтаксис.
  • cd — Перемещение по файловой системе: cd, cd -, cd ~, cd .., pushd/popd, CDPATH.
  • mkdir — Создание каталогов: -p (с родителями), -m (права сразу), вложенные {скобки}, rmdir.
  • pwd — Путь текущего каталога и различие -L/-P.
Загрузка…