Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何获取包含特定分区的磁盘名_Linux_Bash - Fatal编程技术网

Linux 如何获取包含特定分区的磁盘名

Linux 如何获取包含特定分区的磁盘名,linux,bash,Linux,Bash,如果我知道该分区是例如/dev/sda1,那么如何获取包含该分区的磁盘名(在本例中为/dev/sda) 输出应该是磁盘的唯一路径。(如“/dev/sda”) 编辑:它不应该是字符串操作您可以使用shell内置的字符串切分: $ d=/dev/sda1 $ echo ${d%%[0-9]*} /dev/sda $ d=/dev/sda11212 $ echo ${d%%[0-9]*} /dev/sda 这仅适用于某些磁盘名称。如果名字中可以有几个数字,它将在第一个数字之后切掉所有数字 将磁盘名与

如果我知道该分区是例如/dev/sda1,那么如何获取包含该分区的磁盘名(在本例中为/dev/sda)

输出应该是磁盘的唯一路径。(如“/dev/sda”)


编辑:它不应该是字符串操作

您可以使用shell内置的字符串切分:

$ d=/dev/sda1
$ echo ${d%%[0-9]*}
/dev/sda
$ d=/dev/sda11212
$ echo ${d%%[0-9]*}
/dev/sda
这仅适用于某些磁盘名称。如果名字中可以有几个数字,它将在第一个数字之后切掉所有数字


将磁盘名与分区名分开的确切规格是什么?

您可以使用
sed
获取磁盘。因为分区只是磁盘名称的增量,所以很容易执行:

echo”/dev/sda1“| sed's/[0-9]*///g'

它产生输出
/dev/sda


可用于获取磁盘信息的另一个命令是
lsblk
。只需在没有参数的情况下键入它,即可打印出与磁盘和分区相关的所有信息

您是在寻找一种简单的字符串替换方法还是更可靠/更复杂的方法?不是,因为分区可以类似于/dev/sda1或/dev/mmcblk0p1或其他磁盘类型。所以这应该适用于每种磁盘类型。@Snoop05是否有明确的一般规则来区分分区和磁盘?如果没有,这几乎是无法解决的。一两个例子不是规则。lsblk看到了它们之间的差异。在类型列中,列出了“磁盘”和“部分”,正如我在上面的评论中所述,它还必须适用于不同的磁盘类型。这就是我为什么不使用字符串操作的原因。这是第三个建议,它说它不应该是字符串操作,因为不同磁盘类型的命名和编号不同。