Навигация
Пути: . — текущий, .. — родитель, ~ — домашний, / — корень.
Навигация и файлы — ls, cd, cp, mv, rm, cat, less, head, tail, копипаст в терминале.
ls -lah
содержимое каталога подробно
cd dir
перейти в каталог
pwd
где я сейчас
cp -a src dst
скопировать с сохранением прав/времени
mv a b
переместить/переименовать
rm -i f
удалить с подтверждением
mkdir -p a/b
создать с промежуточными каталогами
touch f
создать пустой файл / обновить время
ln -s tgt link
символическая ссылка
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.
Ниже — основные ключи 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 |
Ничего не найдено. Попробуй запрос короче.
Пути: . — текущий, .. — родитель, ~ — домашний, / — корень.
У
rmнет корзины.rm -rfнеобратим. Перепроверяй путь; опасные удаления сперва прогоняй какlsтого же шаблона (см. «Опасно»).
Конвейеры и перенаправление:
Восстановления нет: rm не кладёт файлы в корзину. Привычка — rm -i (спрашивает
подтверждение) и проверка шаблона через ls перед удалением:
Чаще всего дело в пути: ls показывает файл в текущем каталоге, а команда
запускается из другого. Проверь pwd и укажи путь полностью.
Нет прав на чтение источника или на запись в каталог назначения. Посмотри
ls -l, при необходимости выполни через sudo — см. permissions.
Каталог копируется рекурсивно: cp -a src dst. Без -a (или -r) cp
откажется и напишет omitting directory.
Пока процесс держит открытым удалённый файл, место не возвращается. Найди
держателя через lsof и перезапусти службу — см. disk-usage.
rm -rf без проверки путиУ rm нет корзины: файлы удаляются сразу и безвозвратно, восстановление
средствами файловой системы не гарантировано. rm -rf вдобавок не спрашивает
подтверждения и обходит каталоги рекурсивно — опечатка в пути (лишний пробел
перед /, неправильная переменная в скрипте) удаляет не то дерево целиком.
Перед рискованной командой прогони тот же шаблон через ls, чтобы увидеть
список до удаления:
mv поверх существующего файлаmv src dst, если dst уже существует, молча перезаписывает его без
подтверждения (в отличие от cp -i/rm -i). Для интерактивного подтверждения
используй mv -i src dst.
Есть неточность? Сообщить об ошибке в статье