どのディスクに追加するかを選択するスクリプトを作成しようとしています。
オプションを選択するための単純なbashスクリプトは、次のように動作します。
#!/bin/bash
# Bash Menu Script Example
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice $REPLY which is $opt"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
lsblk
私が知っている最良の方法は、ディスクから読むことです。
lz@vm:~/Downloads$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 55,5M 1 loop /snap/core18/1988
loop1 7:1 0 219M 1 loop /snap/gnome-3-34-1804/66
loop2 7:2 0 64,8M 1 loop /snap/gtk-common-themes/1514
loop3 7:3 0 138,5M 1 loop /snap/inkscape/8049
loop4 7:4 0 51M 1 loop /snap/snap-store/518
loop5 7:5 0 162,9M 1 loop /snap/gnome-3-28-1804/145
loop6 7:6 0 31,1M 1 loop /snap/snapd/11036
loop7 7:7 0 32,3M 1 loop /snap/snapd/11107
sda 8:0 1 14,9G 0 disk
└─sda1 8:1 1 14,9G 0 part
sr0 11:0 1 1024M 0 rom
vda 252:0 0 300G 0 disk
├─vda1 252:1 0 512M 0 part /boot/efi
├─vda2 252:2 0 1K 0 part
└─vda5 252:5 0 299,5G 0 part /
マイコンピュータに表示されていないことがわかりますdf -h
。/dev/sda
lz@vm:~/Downloads$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 4,5G 0 4,5G 0% /dev
tmpfs 924M 1,6M 922M 1% /run
/dev/vda5 294G 62G 218G 23% /
tmpfs 4,6G 26M 4,5G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 4,6G 0 4,6G 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/1988
/dev/loop5 163M 163M 0 100% /snap/gnome-3-28-1804/145
/dev/loop2 65M 65M 0 100% /snap/gtk-common-themes/1514
/dev/loop4 52M 52M 0 100% /snap/snap-store/518
/dev/loop1 219M 219M 0 100% /snap/gnome-3-34-1804/66
/dev/loop7 33M 33M 0 100% /snap/snapd/11107
/dev/loop3 139M 139M 0 100% /snap/inkscape/8049
/dev/loop6 32M 32M 0 100% /snap/snapd/11036
/dev/vda1 511M 4,0K 511M 1% /boot/efi
tmpfs 924M 60K 924M 1% /run/user/1000
/dev/fuse 250G 0 250G 0% /run/user/1000/keybase/kbfs
理由はわかりません。
/dev/sda1
とにかく、オプションのリストを作成して1つを選択してdd
追加できるように、これらのディスク(パーティションなどのパーティションではなくディスクのみ)を一覧表示する最良の方法は何ですか? bashスクリプトに挿入できるようにlsbkでフォーマットする方法はありますか?
また、システムを含むディスクへの書き込みを防ぐために、スクリプトを含むディスクを無視することをお勧めします。
ベストアンサー1
努力するlsblk -d
-d, --nodeps
デバイスラックやスレーブデバイスを印刷しないでください。 (...)
このコマンドで生成されたテーブルをどのように解析できますか?
lsblk -d | tail -n+2 | cut -d" " -f1
オプションを入力できるように名前と寸法を収集する方法があれば良いと思います。
lsblk -d | tail -n+2 | awk '{print $1" "$4}'
ただ/dev/NAMEだと思いますか?
はい、そのデバイスがある場所です。test -b
確認してご利用ください。
-b FILE
FILEが存在し、ブロック特殊です。
if [ -b /dev/vda ]; then
echo "is a block device"
fi
ls -l /dev/vda
デバイスの確認に使用する場合は、次から始める必要があります。b
第二rw-rw---- ルートディスク 1 個 (...) /dev/vda
lsblk
ブロックデバイスは最後にリストされているため、再確認する必要はありません。