Шпаргалка по полезным командам 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
лучше для большого числа файлов.