このようなすべてのディスクのリストをどのように取得できますか?
/dev/sda
/dev/sdb
答え1
ls(ただし、個別パーティションは表示する)
# ls /dev/sd*
/dev/sda /dev/sda1
ls(ディスクのみ、パーティションを無視)
# ls /dev/sd*[a-z]
/dev/sda
ディスクドライブ
# fdisk -l 2>/dev/null |awk '/^Disk \//{print substr($2,0,length($2)-1)}'
/dev/xvda
答え2
df
以下を使用して、マウントされているすべてのパーティションを一覧表示できます。
$ df
/dev/sda1 230467740 37314652 181422912 18% /
udev 10240 0 10240 0% /dev
tmpfs 5599420 0 5599420 0% /sys/fs/cgroup
/dev/sdb1 961303548 130106540 782342500 15% /media/Data
..
マウントされたディスクのみを一覧表示するには、grepを使用して出力をフィルタリングできます。
$ df | grep '^/dev'
/dev/sda1 230467740 37314752 181422812 18% /
/dev/sdb1 961303548 130106540 782342500 15% /media/Data
次に始まる行と一致する/dev
か、名前のみを希望する場合
df | grep -o '^/dev[^ ]*'
/dev/sda1
/dev/sdb1
/dev
最初の空白文字から始まる文字列と一致し、一致する項目(オプション-o, --only-matching
)のみを出力します。
編集する
上記はすべてのパーティションをリストしています。ディスクを一覧表示する必要がある場合は、lsblk
次のオプションを使用します(上記と一致するパターン)。
$ lsblk -dp | grep -o '^/dev[^ ]*'
/dev/sda
/dev/sdb
-d
パーティション以外のデバイスのみを一覧表示-p
フルパスを出力
編集2
指摘したとおり次のような、lsblk -dpno name
同じ結果が得られるので必要ありませんgrep
。