【问题标题】:How do I write a script to identify and manipulate a specific drive in the terminal?如何编写脚本来识别和操作终端中的特定驱动器?
【发布时间】:2018-12-09 18:55:32
【问题描述】:

我正在尝试编写一个简短的脚本,它可以自动卸载和重新安装分区,而不知道驱动器当前安装在哪里。

以下命令对我有用:

sudo umount /dev/sdX
sudo mount -t ntfs /dev/sdX /mnt/rec

问题是,我正在实时运行 Linux,但无法在我的硬盘上安装它。因此,每当我重新启动计算机时,/dev/sdX 有时会挂载为 /dev/sdb 或 /dev/sdd。因此,我不能只运行一个脚本来自动安装我需要的驱动器,而不使用

sudo fdisk -l

为了验证驱动器当前挂载的是什么。

我的问题是:有没有一种方法可以识别驱动器,它与当前的安装位置无关?

【问题讨论】:

  • 独立于安装位置识别驱动器是什么意思?驱动器上有什么告诉你它是你所追求的?

标签: linux shell terminal


【解决方案1】:

是的!

在 2005 年左右之前,这是一个令人讨厌的问题,但现在可以通过 udev 访问基于与设备无关的标识符的设备。

查看/dev/disk/,了解独立于/dev/sd* 名称自动对分区进行分类的各种方式:

$ find /dev/disk/
/dev/disk/by-uuid
/dev/disk/by-uuid/d7a395e4-e6fd-49bc-bbd9-af9c6a43211d
/dev/disk/by-partuuid
/dev/disk/by-partuuid/4434a42f-01
/dev/disk/by-path
/dev/disk/by-path/acpi-VMBUS:01-scsi-0:0:0:0-part1
/dev/disk/by-path/acpi-VMBUS:01-scsi-0:0:0:0
/dev/disk/by-path/pci-0000:00:07.1-ata-2
/dev/disk/by-id
/dev/disk/by-id/wwn-0x600224805c60e27d40a2d50b3961022c-part1
/dev/disk/by-id/scsi-3600224805c60e27d40a2d50b3961022c-part1
/dev/disk/by-id/wwn-0x600224805c60e27d40a2d50b3961022c
/dev/disk/by-id/scsi-3600224805c60e27d40a2d50b3961022c
/dev/disk/by-id/ata-Virtual_CD

这些都是指向其支持设备的完全透明的符号链接,因此您可以轻松查看它们对应的内容:

$ ls -l /dev/disk/by-uuid/d7a395e4-e6fd-49bc-bbd9-af9c6a43211d
lrwxrwxrwx 1 root root 10 May 28 10:38 /dev/disk/by-uuid/d7a395[..]  -> ../../sda1

by-uuid 条目通常是您的最佳选择,但 partuuidlabel 也可能对较少的 Linux y 文件系统有用。

【讨论】:

  • 谢谢!这行得通。我想补充一下,您将使用以下语句:/dev/sdX 您可以将其替换为:UUID="000000000000000" 其中零是您的设备 UUID。
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 2011-03-03
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多