Шпаргалка по полезным командам Linux для работы с дисками и устройствами
Шпаргалка по полезным командам Linux для работы с дисками и устройствами и не только
1. dd – Копирование и конвертация данных
Основное использование:
dd if=входной_файл of=выходной_файл [опции]
Примеры:
- Создать образ диска:
dd if=/dev/sda of=backup.img bs=4M status=progress
- Записать образ на USB:
dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress
- Создать файл-заполнитель (1 ГБ):
dd if=/dev/zero of=testfile bs=1G count=1
Опции:
bs=N – размер блока (например, 4M, 1K).
count=N – количество блоков.
status=progress – показывает прогресс.
- Флаг
conv= (convert) позволяет задать дополнительные преобразования данных. Можно указывать несколько параметров через запятую.
1. conv=sync
- Назначение: Дополняет каждый ввод (input block) нулями до полного размера блока, если он был прочитан не полностью.
- Пример использования:
dd if=/dev/sda of=image.img bs=4K conv=sync
- Если при чтении блока в 4 КБ считалось только 2 КБ (например, из-за ошибки), оставшиеся 2 КБ будут заполнены нулями.
- Полезно для сохранения выравнивания блоков при копировании повреждённых данных.
2. conv=noerror
- Назначение: Продолжать копирование, даже если встретились ошибки чтения.
- Пример:
dd if=/dev/sda of=image.img bs=4K conv=noerror,sync
- Без
noerror dd остановится при первой ошибке.
- Важно: Обычно используется вместе с
sync, чтобы сохранить размер блока.
3. Другие полезные флаги conv=
| Флаг |
Описание |
notrunc |
Не обрезать выходной файл (полезно при дозаписи). |
fsync |
Синхронизировать данные на диск перед завершением. |
fdatasync |
Синхронизировать только данные (без метаданных). |
excl |
Запретить перезапись существующего файла. |
nocreat |
Не создавать выходной файл, если его нет. |
Примеры комбинаций
-
Копирование диска с игнорированием ошибок и синхронизацией блоков:
dd if=/dev/sda of=backup.img bs=1M conv=noerror,sync status=progress
- Продолжает копирование при ошибках, дополняя неполные блоки нулями.
-
Дозапись в файл без его обрезки:
dd if=data.bin of=output.bin bs=1M conv=notrunc
-
Копирование с гарантированной записью на диск:
dd if=source.iso of=/dev/sdb bs=4M conv=fsync
- Комбинация
noerror,sync часто используется при копировании повреждённых дисков.
- Если нужно создать точную копию с возможными ошибками, лучше использовать
ddrescue (из пакета gddrescue), так как он более эффективен при восстановлении данных.
2. df – Информация о свободном месте на дисках
Основное использование:
df [опции] [файл/устройство]
Примеры:
- Показать место в человеко-читаемом формате:
- Показать только определённую файловую систему:
- Показать тип файловой системы:
Опции:
-h – человеко-читаемый формат (KB, MB, GB).
-T – показать тип файловой системы.
-i – показать использование inodes.
3. du – Анализ использования диска файлами и папками
Основное использование:
Примеры:
- Проверить размер папки:
- Показать размер всех подпапок:
du -h --max-depth=1 /var/
- Найти самые большие файлы:
du -ah / | sort -rh | head -10
Опции:
-s – только итоговая сумма.
-h – человеко-читаемый формат.
--max-depth=N – глубина вложенности.
4. ncdu – Интерактивный анализ дискового пространства
Установка (если нет):
sudo apt install ncdu # Debian/Ubuntu
sudo dnf install ncdu # Fedora
Примеры:
- Анализ текущей папки:
- Анализ всей системы (требует root):
Управление в ncdu:
↑/↓ – навигация.
Enter – войти в папку.
d – удалить файл/папку.
q – выход.
5. lsblk – Список блочных устройств (диски, разделы)
Основное использование:
Примеры:
- Показать все устройства в дереве:
- Показать UUID и файловую систему:
- Показать размеры в человеко-читаемом формате:
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e7
Опции:
-f – показать файловые системы.
-o – выбрать поля для вывода.
-e7 – исключить loop-устройства.
6. lsusb – Список USB-устройств
Основное использование:
Примеры:
- Показать все USB-устройства:
- Подробный вывод:
Опции:
-v – подробная информация.
-t – вывод в виде дерева.
7. lspci – Список PCI-устройств
Основное использование:
Примеры:
- Показать все устройства:
- Подробно о видеокарте:
lspci -v -s $(lspci | grep VGA | cut -d' ' -f1)
Опции:
-v – подробный вывод.
-nn – показать ID производителя.
-k – показать драйверы.
Итог
| Команда |
Описание |
dd |
Копирование данных на низком уровне |
df |
Свободное место на дисках |
du |
Размер файлов и папок |
ncdu |
Интерактивный анализ диска |
lsblk |
Список дисков и разделов |
lsusb |
Список USB-устройств |
lspci |
Список PCI-устройств |
🚀 Полезные сочетания:
df -h | grep -v loop – показать только реальные диски.
du -sh * | sort -h – сортировка файлов по размеру.
lsblk -o NAME,SIZE,MOUNTPOINT,FSTYPE – удобный вывод дисков.
1 - Разбор конструкции find -exec и варианты использования
Эти команды — мощные инструменты для поиска, обработки и фильтрации данных в Linux.
1. Что означает {} \; в команде find?
{} – это специальный placeholder, который заменяется на имя каждого найденного файла.
\; – завершает команду, передаваемую в -exec. Обратный слэш (\) экранирует точку с запятой, чтобы shell не интерпретировал её как конец команды.
Пример:
find /home -user olduser -exec chown newuser {} \;
Здесь:
find ищет все файлы в /home, принадлежащие olduser.
- Для каждого файла выполняется
chown newuser filename.
{} подставляется как имя файла, а \; указывает на конец команды.
2. Альтернативные форматы -exec
Вариант 1: + вместо \; (группировка файлов)
+ в конце передаёт все найденные файлы одной командой (эффективно для массовых операций).
Пример:
find /var/log -name "*.log" -exec tar -czvf logs.tar.gz {} +
- Создаёт один архив со всеми
.log-файлами (вместо запуска tar для каждого файла отдельно).
Вариант 2: -execdir (безопасное выполнение)
- Выполняет команду в директории файла (защита от path injection).
Пример:
find /tmp -type f -execdir rm {} \;
- Удаляет файлы, запуская
rm из их родительских директорий.
3. Другие полезные команды с -exec
Изменение прав (chmod)
find /path -type f -exec chmod 644 {} \;
- Устанавливает права
644 на все файлы.
Поиск и замена текста (sed)
find . -name "*.txt" -exec sed -i 's/foo/bar/g' {} \;
- Заменяет
foo на bar во всех .txt-файлах.
Копирование файлов (cp)
find /src -name "*.jpg" -exec cp {} /dest \;
- Копирует все
.jpg из /src в /dest.
Подсчёт строк (wc)
find . -type f -exec wc -l {} \;
- Считает строки в каждом файле.
Удаление файлов старше 30 дней
find /backups -mtime +30 -exec rm {} \;
- Удаляет файлы, не изменявшиеся больше месяца.
4. Комбинации с xargs (альтернатива -exec)
Если -exec неудобен, можно использовать xargs:
find /path -name "*.tmp" | xargs rm
xargs передаёт имена файлов в rm пачками (аналогично + в -exec).
С обработкой пробелов в именах:
find /path -name "*.log" -print0 | xargs -0 tar -czvf logs.tar.gz
-print0 и -0 корректно обрабатывают пробелы в путях.
5. Полезные опции find для -exec
| Опция |
Пример |
Описание |
-type f |
find /path -type f -exec ... |
Только файлы. |
-type d |
find /path -type d -exec ... |
Только директории. |
-mtime -7 |
find /log -mtime -7 -exec ... |
Файлы, изменённые за последние 7 дней. |
-size +1G |
find / -size +1G -exec ... |
Файлы >1 ГБ. |
-perm 777 |
find / -perm 777 -exec ... |
Файлы с правами 777. |
Итог
{} \; – подставляет имя файла и завершает команду.
+ – группирует файлы для одной команды (эффективнее).
-execdir – безопасное выполнение в директории файла.
- Альтернативы:
xargs, -delete, -printf.
Пример на все случаи:
find ~/Downloads -name "*.iso" -size +1G -exec ls -lh {} +
- Находит ISO-файлы >1 ГБ в
~/Downloads и выводит их список с размерами.
2 - Шпаргалка по find, sed, ugrep
Эти команды — мощные инструменты для поиска, обработки и фильтрации данных в Linux. Здесь собраны примеры для ежедневного использования.
**Шпаргалка по find, sed, ugrep (+ grep)
1. find – Поиск файлов и выполнение действий
🔍 Базовый поиск
- Найти файлы по имени (регистронезависимо):
find /path -iname "*.txt"
- Найти файлы, изменённые за последние 7 дней:
- Найти файлы размером >100 МБ:
- Найти пустые файлы и директории:
- Найти файлы с правами 755:
⚡ Действия с найденными файлами
- Удалить все
.tmp-файлы:
find /path -name "*.tmp" -delete
- Изменить владельца файлов:
find /path -user olduser -exec chown newuser {} \;
- Архивировать все
.log-файлы:
find /var/log -name "*.log" -exec tar -czvf logs.tar.gz {} +
- Найти и заменить права:
find /path -type f -exec chmod 644 {} \;
- Найти файлы и вывести их размер:
find /path -type f -exec du -h {} \;
2. sed – Потоковый редактор (поиск и замена текста)
🔧 Базовые замены
- Заменить первое вхождение в строке:
echo "Hello World" | sed 's/World/Linux/'
- Заменить все вхождения:
echo "a b a b" | sed 's/a/c/g'
- Удалить строки, содержащие
error:
- Удалить пустые строки:
- Заменить только в строках, содержащих
debug:
sed '/debug/s/old/new/' file.txt
📂 Работа с файлами
- Заменить в файле на месте (с бэкапом):
sed -i.bak 's/old/new/g' file.txt
- Удалить строки с 5 по 10:
- Вывести только строки с 20 по 30:
- Добавить текст в начало файла:
sed -i '1i New Header' file.txt
- Добавить текст в конец файла:
sed -i '$a Footer Text' file.txt
3. grep/ugrep – Поиск текста в файлах
🔎 Базовый поиск
- Найти слово в файле (регистронезависимо):
grep -i "pattern" file.txt
- Найти точное совпадение (целое слово):
- Вывести только совпадающую часть:
grep -o "pattern" file.txt
- Найти строки, НЕ содержащие шаблон:
grep -v "exclude" file.txt
- Подсчитать количество совпадений:
grep -c "pattern" file.txt
📂 Рекурсивный поиск
- Искать в всех файлах директории:
- Искать только в
.php-файлах:
grep -r --include="*.php" "pattern" /path/
- Искать в файлах без
.log:
grep -r --exclude="*.log" "pattern" /path/
- Искать в скрытых файлах:
grep -r --hidden "pattern" /path/
- Искать в файлах изменённых за последние 2 дня:
find /path -mtime -2 -type f -exec grep -l "pattern" {} \;
🚀 ugrep – Улучшенный grep
- Поиск с подсветкой и нумерацией строк:
ugrep -n --color=auto "pattern" file.txt
- Поиск с контекстом (строки до/после):
ugrep -C 3 "pattern" file.txt # 3 строки вокруг
- Поиск с инвертированным контекстом:
ugrep -v -C 2 "pattern" file.txt
- Поиск сжатых файлов (
.gz, .zip):
ugrep -z "pattern" archive.gz
- Поиск с регулярными выражениями:
ugrep -P "\d{3}-\d{2}-\d{4}" file.txt # Поиск SSN
4. Комбинации команд (find + grep + sed)
🔗 Поиск + обработка
- Найти все
.conf-файлы и заменить http на https:
find /etc -name "*.conf" -exec sed -i 's/http/https/g' {} \;
- Найти файлы, содержащие
password, и вывести их имена:
find /path -type f -exec grep -l "password" {} \;
- Удалить все строки с
# TODO из .py-файлов:
find . -name "*.py" -exec sed -i '/# TODO/d' {} \;
📊 Анализ логов
- Найти ошибки в логах за последний час:
grep "ERROR" /var/log/syslog | grep "$(date -d '1 hour ago' '+%b %d %H')"
- Посчитать уникальные IP в Nginx-логе:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
📂 Массовая обработка файлов
- Переименовать все
.jpg → .png:
find . -name "*.jpg" | sed 's/\.jpg$//' | xargs -I {} mv {}.jpg {}.png
- Удалить BOM из UTF-8 файлов:
find . -type f -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;
- Удалить все пробелы в конце строк:
find . -type f -exec sed -i 's/[[:space:]]*$//' {} \;
🔒 Безопасность
- Найти файлы с SUID/SGID:
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -la {} \;
- Найти открытые порты и процессы:
netstat -tulnp | grep -E '0.0.0.0|:::'
📜 Разное
- Извлечь все email из файла:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" file.txt
- Заменить
CRLF → LF (Windows → Unix):
sed -i 's/\r$//' file.txt
- Удалить HTML-теги из файла:
sed 's/<[^>]*>//g' file.html
- Найти дубликаты файлов по содержимому:
find . -type f -exec md5sum {} + | sort | uniq -w32 -dD
- Случайная строка из файла:
Итоговая таблица
| Задача |
Команда |
| Поиск файлов |
find /path -name "*.txt" |
| Замена текста |
sed 's/old/new/g' file.txt |
| Рекурсивный поиск текста |
grep -r "pattern" /path/ |
| Удаление строк |
sed '/pattern/d' file.txt |
| Поиск в логах |
grep "ERROR" /var/log/syslog |
🚀 Совет:
ugrep быстрее grep и поддерживает расширенные regex (-P).
find + exec мощнее xargs, но xargs лучше для большого числа файлов.