ユーザープロンプトなしでスクリプトでparted mklabelを実行する方法は?

ユーザープロンプトなしでスクリプトでparted mklabelを実行する方法は?

partedユーティリティを使用してドライブを再分割するbashスクリプトを作成しようとしています。スクリプト内で実行されるため、ユーザーに入力するように求めるメッセージを表示しないことを分離したい(またはそのメッセージに応答する方法があります)。

最初はオプション--sまたは---scriptをpartedに渡そうとしましたが、期待どおりに機能しませんでした。スクリプトを実行しようとすると、parted $DRIVE -s mklabel gptpartedは「i」、「y」、「i」(無視、はい、無視)の3つのプロンプトで表示される警告に応答すると予想します。ただし、スクリプトの実行が停止し、次のメッセージが表示されます。Error: Partition(s) on /dev/nvme1 are being used.

コマンドを手動で実行すると、メッセージが表示され、「i」応答を渡して警告を無視して続行できます。インターネット検索で-sオプションを使用して実行すると、partedがデフォルトの応答を想定していることがわかりました。この警告が表示された場合、デフォルトのオプションは、誤ってドライブが損傷するのを防ぐためにキャンセルすることを前提としています。

-sをpartedに渡さずにスクリプトを実行すると、端末に入力するように求められ、入力を提供した後、残りのスクリプトは正常に実行されます。その後、このようなechoを使用して応答をパイプしようとしましたが、echo "i\ny\ni" | repart.shそれも機能しないようです。

必要な動作を得るためにこのデフォルト値をオーバーライドする方法はありますか?そうでなければ、これを達成する他の方法はありますか?

コンテキスト:このスクリプトを実行しているターゲットコンピュータはUbuntu 18.04.3 LTSを実行しています。

注:Ubuntuに標準以外のユーティリティをインストールすることもできますが、そうしたくありません。

編集:@chexumのおかげで解決策を見つけました! parted:を実行する前にwifsユーティリティを呼び出すようにスクリプトを変更し、wipefs -a -f $DRIVE残りの1つのプロンプトに応答するために 'i'をパイプで接続するようにpartedコマンドを変更しましたyes "i" | parted $DRIVE mklabel gpt。これでタスクが完全に自動化されました。注意しないと、wifsユーティリティを使用するときに独自のリスクがあります。このソリューションは私の目的には適していますが、他の目的には適していない可能性があります。

ベストアンサー1

おすすめ記事