我需要能够仅检索 USB 记忆棒的挂载点或路径。这是用于该目的的命令吗?lsblk -r | grep usb
我执行了该命令,它返回以下内容。sda1 /media/usb0
我只想要记忆棒的挂载点或路径。
答案1
我想出了一个命令lsblk
。它使用 MOUNTPOINT 和 HOTPLUG 选项来帮助识别。如果驱动器是可移动的(如 USB 驱动器),HOTPLUG 将返回 1。sr0 类型的驱动器是可移动/热插拔的,但那些是 CD/DVD 驱动器。我还停止了循环设备,因为它们也显示它们是可移动/热插拔的。
我想到的命令如下:
lsblk -o NAME,HOTPLUG,MOUNTPOINT | grep -w 1 | grep -vE "sr|loop" | awk '{print $3}'
由于我有一个 USB 驱动器,因此可以产生以下结果。
terrance@terrance-ubuntu:~$ lsblk -o NAME,HOTPLUG,MOUNTPOINT | grep -w 1 | grep -vE "sr|loop" | awk '{print $3}'
/media/terrance/E627-3C44
这是我插入的 USB 驱动器的确切挂载点。
笔记:看起来 Ubuntu 14.04 可能不会使用相同的选项,lsblk
因此您可以使用命令RM
而不是HOTPLUG
:
lsblk -o NAME,RM,MOUNTPOINT | grep -w 1 | grep -vE "sr|loop" | awk '{print $3}'
或者,您可以使用TRAN
我在 16.04 中测试过的类型,即device transport type
。提供不同的输出,可能更容易编写脚本。
lsblk -o NAME,TRAN,MOUNTPOINT
产生如下输出:
terrance@terrance-ubuntu:~$ lsblk -o NAME,TRAN,MOUNTPOINT
NAME TRAN MOUNTPOINT
loop1 /snap/canonical-livepatch/17
sdb usb
└─sdb1 /media/terrance/E627-3C44
loop4 /snap/core/1441
sr0 sata
loop2 /snap/core/1287
loop0 /snap/canonical-livepatch/21
sda sata
├─sda2
├─sda5 [SWAP]
└─sda1 /
loop3 /snap/core/1337
由于 MOINTPOINT 列在 usb 后的下一行,我们将使用grep -A 1
它来抓取下一行并用它awk '{print $2}'
来打印该行上的第二列输出:
terrance@terrance-ubuntu:~$ lsblk -o NAME,TRAN,MOUNTPOINT | grep -A 1 -w usb | grep -v usb | awk '{print $2}'
/media/terrance/E627-3C44
希望这可以帮助!
答案2
类型:
df #显示所有已知设备的挂载点
对于你来说,它将是这样的:
/媒体/sr0
/媒体/usb0
我不认为它是 sda1,它通常是启动驱动器