仅在bash中列出linux分区名称

Linux上的df列出分区上的以下统计信息。

 -bash-4.1#df
文件系统1K块已用可用使用%挂载
 / dev / sda3 1918217320 1473337340 347440136 81%/
 tmpfs 32970328 0 32970328 0%/ dev / shm
 / dev / sda1 482214 148534 308781 33%/ boot
 / dev / sdd1 1922860884 1638599284 186585876 90%/ disk5
 / dev / sdc1 1922858352 1474925416 350257336 81%/ disk2
 / dev / sdb1 1922858352 1028783752 796399000 57%/ disk4

如果我想获得分区名称的列表,例如:“/ dev / sda3 / dev / sda1 / dev / sdc1 …”我该怎么做在bash中?

以root用户身份列出为设备定义的所有分区:

lsblk

要么

fdisk -l

要么

猫/ proc /分区

还有@Giedrius Rekasius所说的

fdisk -l / dev / sda | grep'^ / dev'| 砍掉-d''-f1

df将只显示已安装的分区。 如果这就是你想要的,然后从df输出中提取设备节点,那么grep中以“/ dev”开头的行,并从剩下的输出中cut第一列:

 df | grep '^/dev' | cut -d' ' -f1 

或者在由空格分隔的单独一行中列出它们:

 df | grep '^/dev' | cut -d' ' -f1 | tr '\n' ' ' 

如果你想得到一个不需要挂载的分区列表,那么你可以运行fdisk -l并且可以指定设备来扫描分区:

 fdisk -l [device...] 

如果您没有指定任何设备,则fdisk将使用/proc/partitions提到的设备(如果该文件存在)。

Fdisk将以与df相似的格式输出信息,以便提取设备节点,您可以执行与df所述相同的操作:

 fdisk -l | grep '^/dev' | cut -d' ' -f1 

一些想法…

awk '{print $1}' /proc/mounts

df | awk '{print $1}'

df | cut -f1 -d " "

关于什么 :

 df | cut -d" " -f1 

另外一个select:

 df --type ext2 --type ext3 --type ext4 | tail -n +2 | awk '{ print $1 }' | tr '\n' ' ' 
  • --type <filesystem>允许你指定你感兴趣的文件系统
  • tail -n +2从第二行输出开始打印(所以标题行不打印)
  • awk '{ print $1 }'将打印包含分区信息的最左边一列
  • tr '\n' ' '会将换行符转换为空格,以便信息全部在一行上

blkid只显示连接到计算机的真实存储器,无论是否安装。

 # sudo blkid | awk '{print substr($1, 0, length($1) - 1)}' /dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2 /dev/sr1 
  [root@ct01 ~]# ls /dev/sd*[0-9] /dev/sda1 /dev/sda2 

该命令将以易于迭代的forms列出系统中的所有分区:

 tail -n +3 /proc/partitions | awk '{ print $4 }'