Вопрос или проблема
Я использую эти команды в командной строке:
sudo fdisk /dev/mmcblk1
p
d
w
sudo fdisk /dev/mmcblk1
n
(используя все настройки по умолчанию)
w
Есть ли способ автоматизировать эту задачу или сделать это в виде однострочной команды (или одной однострочной команды для каждой команды fdisk
, то есть всего две однострочные команды)? Может быть, с использованием Python?
Можно использовать однострочную команду (bash):
(echo p; echo d; ... ; echo w) | fdisk /dev/mmcblk1
Чтобы установить ответ по умолчанию, используйте echo ""
, чтобы ответить “Да”, используйте echo "Y"
Просто создайте файл (например, fdisk_cmds
), который содержит команды, например:
p
i
# Это пустая строка для выбора ответа по умолчанию
q
sudo fdisk /dev/mmcblk1 < fdisk_cmds
Рассмотрите SFDisk для этой работы. См. Как написать скрипт для sfdisk или parted для нескольких разделов? для подробностей.
Сначала используйте более подходящий инструмент. Но если вам нужно автоматизировать такой ввод, используйте here-doc:
sudo fdisk /dev/mmcblk1 <<\КонецОтветов
p
d
w
q
КонецОтветов
(Вы можете выбрать любой символ, который вам нравится вместо КонецОтветов
; вы увидите, что во многих документациях используется EOF
, но это всего лишь условность. Символ \
после <<
просто “цитирует” первую букву КонецОтветов
, как это видит оболочка, что означает, что в теле here-doc не происходят расширения $
; вы можете добиться того же эффекта, используя <<'КонецОтветов'
или <<"КонецОтветов"
или даже <<КонецА\nсветов
.)
Ответ или решение
Автоматизация создания разделов с помощью fdisk
Вопрос, который вы подняли, касается автоматизации создания разделов на устройстве с использованием fdisk
. В данном ответе мы рассмотрим различные методы автоматизации этого процесса, обеспечив простоту, эффективность и безопасность.
Понимание fdisk
fdisk
— это мощная утилита командной строки, используемая для управления разделами на жестких дисках и других устройствах хранения. Однако интерактивный интерфейс может затруднить автоматизацию задач.
Чтобы автоматизировать выполнение команд fdisk
, вы можете использовать несколько подходов:
1. Использование here-doc в Bash
Один из самых простых и эффективных способов автоматизации команд fdisk
— это использование here-document
. Этот метод позволяет передать несколько команд в стандартный ввод fdisk
без необходимости их вручную вводить.
Пример:
sudo fdisk /dev/mmcblk1 <<EOF
p
d
w
EOF
В этом случае EOF
— это маркер, который указывает, где начинается и заканчивается ввод. Вы можете выбрать любое другое имя для маркера по вашему усмотрению.
2. Использование файла команд
Также вы можете создать текстовый файл, содержащий необходимые команды, и передать его в fdisk
. Например, создайте файл, названный fdisk_cmds
, и вставьте в него следующие команды:
p
d
w
Затем выполните команду:
sudo fdisk /dev/mmcblk1 < fdisk_cmds
3. Использование echo для однострочных команд
Если вам нужно использовать однострочные команды, вы можете использовать следующее:
(echo p; echo d; echo w) | sudo fdisk /dev/mmcblk1
Этот подход работает, перенаправляя вывод команды echo
в fdisk
.
4. Рассмотрите использование sfdisk или parted
Если ваша задача заключается в создании нескольких разделов или более сложных сценариях, возможно, стоит рассмотреть sfdisk
или parted
. Эти инструменты предлагают более мощные функции для работы с таблицами разделов и могут быть легче автоматизированы.
Пример использования sfdisk
может выглядеть следующим образом:
echo ",,L" | sudo sfdisk /dev/mmcblk1
Заключение
Автоматизация создания разделов на устройствах с помощью fdisk
может быть выполнена различными способами, включая использование here-doc
, файлов команд или однострочных команд. Выбор самого подходящего метода зависит от ваших конкретных потребностей и сценариев использования.
Помните, что работа с разделами может привести к потере данных, поэтому обязательно создавайте резервные копии важных данных перед выполнением операций с дисками.
Для более сложных сценариев рассмотрите возможность использования инструментов, таких как sfdisk
или parted
, которые могут предложить больше функциональности и гибкости по сравнению с fdisk
.