Это многостраничный печатный вид этого раздела. Нажмите что бы печатать.

Вернуться к обычному просмотру страницы.

Шпаргалка по полезным командам 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 Не создавать выходной файл, если его нет.

Примеры комбинаций

  1. Копирование диска с игнорированием ошибок и синхронизацией блоков:

    dd if=/dev/sda of=backup.img bs=1M conv=noerror,sync status=progress
    
    • Продолжает копирование при ошибках, дополняя неполные блоки нулями.
  2. Дозапись в файл без его обрезки:

    dd if=data.bin of=output.bin bs=1M conv=notrunc
    
  3. Копирование с гарантированной записью на диск:

    dd if=source.iso of=/dev/sdb bs=4M conv=fsync
    
  • Комбинация noerror,sync часто используется при копировании повреждённых дисков.
  • Если нужно создать точную копию с возможными ошибками, лучше использовать ddrescue (из пакета gddrescue), так как он более эффективен при восстановлении данных.

2. df – Информация о свободном месте на дисках

Основное использование:

df [опции] [файл/устройство]

Примеры:

  • Показать место в человеко-читаемом формате:
    df -h
    
  • Показать только определённую файловую систему:
    df -h /dev/sda1
    
  • Показать тип файловой системы:
    df -Th
    

Опции:

  • -h – человеко-читаемый формат (KB, MB, GB).
  • -T – показать тип файловой системы.
  • -i – показать использование inodes.

3. du – Анализ использования диска файлами и папками

Основное использование:

du [опции] [путь]

Примеры:

  • Проверить размер папки:
    du -sh /home/user/
    
  • Показать размер всех подпапок:
    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

Примеры:

  • Анализ текущей папки:
    ncdu
    
  • Анализ всей системы (требует root):
    sudo ncdu /
    

Управление в ncdu:

  • ↑/↓ – навигация.
  • Enter – войти в папку.
  • d – удалить файл/папку.
  • q – выход.

5. lsblk – Список блочных устройств (диски, разделы)

Основное использование:

lsblk [опции]

Примеры:

  • Показать все устройства в дереве:
    lsblk
    
  • Показать UUID и файловую систему:
    lsblk -f
    
  • Показать размеры в человеко-читаемом формате:
    lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e7
    

Опции:

  • -f – показать файловые системы.
  • -o – выбрать поля для вывода.
  • -e7 – исключить loop-устройства.

6. lsusb – Список USB-устройств

Основное использование:

lsusb [опции]

Примеры:

  • Показать все USB-устройства:
    lsusb
    
  • Подробный вывод:
    lsusb -v
    

Опции:

  • -v – подробная информация.
  • -t – вывод в виде дерева.

7. lspci – Список PCI-устройств

Основное использование:

lspci [опции]

Примеры:

  • Показать все устройства:
    lspci
    
  • Подробно о видеокарте:
    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 {} \;

Здесь:

  1. find ищет все файлы в /home, принадлежащие olduser.
  2. Для каждого файла выполняется chown newuser filename.
  3. {} подставляется как имя файла, а \; указывает на конец команды.

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 – Поиск файлов и выполнение действий

🔍 Базовый поиск

  1. Найти файлы по имени (регистронезависимо):
    find /path -iname "*.txt"
    
  2. Найти файлы, изменённые за последние 7 дней:
    find /path -mtime -7
    
  3. Найти файлы размером >100 МБ:
    find /path -size +100M
    
  4. Найти пустые файлы и директории:
    find /path -empty
    
  5. Найти файлы с правами 755:
    find /path -perm 755
    

⚡ Действия с найденными файлами

  1. Удалить все .tmp-файлы:
    find /path -name "*.tmp" -delete
    
  2. Изменить владельца файлов:
    find /path -user olduser -exec chown newuser {} \;
    
  3. Архивировать все .log-файлы:
    find /var/log -name "*.log" -exec tar -czvf logs.tar.gz {} +
    
  4. Найти и заменить права:
    find /path -type f -exec chmod 644 {} \;
    
  5. Найти файлы и вывести их размер:
    find /path -type f -exec du -h {} \;
    

2. sed – Потоковый редактор (поиск и замена текста)

🔧 Базовые замены

  1. Заменить первое вхождение в строке:
    echo "Hello World" | sed 's/World/Linux/'
    
  2. Заменить все вхождения:
    echo "a b a b" | sed 's/a/c/g'
    
  3. Удалить строки, содержащие error:
    sed '/error/d' file.txt
    
  4. Удалить пустые строки:
    sed '/^$/d' file.txt
    
  5. Заменить только в строках, содержащих debug:
    sed '/debug/s/old/new/' file.txt
    

📂 Работа с файлами

  1. Заменить в файле на месте (с бэкапом):
    sed -i.bak 's/old/new/g' file.txt
    
  2. Удалить строки с 5 по 10:
    sed '5,10d' file.txt
    
  3. Вывести только строки с 20 по 30:
    sed -n '20,30p' file.txt
    
  4. Добавить текст в начало файла:
    sed -i '1i New Header' file.txt
    
  5. Добавить текст в конец файла:
    sed -i '$a Footer Text' file.txt
    

3. grep/ugrep – Поиск текста в файлах

🔎 Базовый поиск

  1. Найти слово в файле (регистронезависимо):
    grep -i "pattern" file.txt
    
  2. Найти точное совпадение (целое слово):
    grep -w "word" file.txt
    
  3. Вывести только совпадающую часть:
    grep -o "pattern" file.txt
    
  4. Найти строки, НЕ содержащие шаблон:
    grep -v "exclude" file.txt
    
  5. Подсчитать количество совпадений:
    grep -c "pattern" file.txt
    

📂 Рекурсивный поиск

  1. Искать в всех файлах директории:
    grep -r "pattern" /path/
    
  2. Искать только в .php-файлах:
    grep -r --include="*.php" "pattern" /path/
    
  3. Искать в файлах без .log:
    grep -r --exclude="*.log" "pattern" /path/
    
  4. Искать в скрытых файлах:
    grep -r --hidden "pattern" /path/
    
  5. Искать в файлах изменённых за последние 2 дня:
    find /path -mtime -2 -type f -exec grep -l "pattern" {} \;
    

🚀 ugrep – Улучшенный grep

  1. Поиск с подсветкой и нумерацией строк:
    ugrep -n --color=auto "pattern" file.txt
    
  2. Поиск с контекстом (строки до/после):
    ugrep -C 3 "pattern" file.txt  # 3 строки вокруг
    
  3. Поиск с инвертированным контекстом:
    ugrep -v -C 2 "pattern" file.txt
    
  4. Поиск сжатых файлов (.gz, .zip):
    ugrep -z "pattern" archive.gz
    
  5. Поиск с регулярными выражениями:
    ugrep -P "\d{3}-\d{2}-\d{4}" file.txt  # Поиск SSN
    

4. Комбинации команд (find + grep + sed)

🔗 Поиск + обработка

  1. Найти все .conf-файлы и заменить http на https:
    find /etc -name "*.conf" -exec sed -i 's/http/https/g' {} \;
    
  2. Найти файлы, содержащие password, и вывести их имена:
    find /path -type f -exec grep -l "password" {} \;
    
  3. Удалить все строки с # TODO из .py-файлов:
    find . -name "*.py" -exec sed -i '/# TODO/d' {} \;
    

📊 Анализ логов

  1. Найти ошибки в логах за последний час:
    grep "ERROR" /var/log/syslog | grep "$(date -d '1 hour ago' '+%b %d %H')"
    
  2. Посчитать уникальные IP в Nginx-логе:
    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
    

📂 Массовая обработка файлов

  1. Переименовать все .jpg.png:
    find . -name "*.jpg" | sed 's/\.jpg$//' | xargs -I {} mv {}.jpg {}.png
    
  2. Удалить BOM из UTF-8 файлов:
    find . -type f -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;
    
  3. Удалить все пробелы в конце строк:
    find . -type f -exec sed -i 's/[[:space:]]*$//' {} \;
    

🔒 Безопасность

  1. Найти файлы с SUID/SGID:
    find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -la {} \;
    
  2. Найти открытые порты и процессы:
    netstat -tulnp | grep -E '0.0.0.0|:::'
    

📜 Разное

  1. Извлечь все email из файла:
    grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" file.txt
    
  2. Заменить CRLFLF (Windows → Unix):
    sed -i 's/\r$//' file.txt
    
  3. Удалить HTML-теги из файла:
    sed 's/<[^>]*>//g' file.html
    
  4. Найти дубликаты файлов по содержимому:
    find . -type f -exec md5sum {} + | sort | uniq -w32 -dD
    
  5. Случайная строка из файла:
    shuf -n 1 file.txt
    

Итоговая таблица

Задача Команда
Поиск файлов 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 лучше для большого числа файлов.