.png)
このようにすべてのディスクのリストを取得するにはどうすればよいでしょうか?
/dev/sda
/dev/sdb
答え1
ls (ただし個々のパーティションが表示されます)
# ls /dev/sd*
/dev/sda /dev/sda1
ls (ディスクのみ、パーティションは無視)
# ls /dev/sd*[a-z]
/dev/sda
fdisk
# 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
。