我知道我可以通过进入文件管理器来找到我的闪存驱动器的名称/media/user/nameOfFlashdrive
。但是,是否有一个终端命令,我可以在其中输入闪存驱动器的名称,它会告诉我驱动器连接在哪里,例如/dev/sdb1
?
答案1
实际上有多个命令可以实现这一点。你可以使用文本处理工具过滤输出,通常它们的输出足够小,可以在一屏内读完。
blkid
这个简洁的命令本身,顾名思义,显示有关块设备的信息。-L
您可以使用标签(名称)搜索特定设备。
$ blkid -L DTSE9
/dev/sdb1
df
这个简洁的命令是coreutils
软件包的一部分,显示“设备文件”的块大小和使用情况。它仅显示已安装的设备的信息(换句话说,链接到某个文件夹)。例如,
/dev/sdb5 115247656 84753976 24616332 78% /media/WINDOWS
告诉我第二个硬盘上的 Windows 分区已链接到/media/WINDOWS
分区。
udisksctl
$ udisksctl status
MODEL REVISION SERIAL DEVICE
--------------------------------------------------------------------------
Radeon R7 1.01 A22MD061520000172 sda
TSSTcorp CDDVDW SU-208GB TF01 S16T6YEFB00NKH sr0
非常方便的命令,可列出磁盘所链接的型号和设备文件。在上面的示例中,我的 Radeon R7 SSD 已链接到/dev/sda
设备。
如果我们深入了解更多细节,udisksctl info -b /dev/sda
将会列出许多附加信息,包括大小和符号链接。
如果我们想疯狂一点,udisksctl dump
将会在所有磁盘上产生详细的输出。
parted
和fdisk
这两个命令都是磁盘实用程序,用于分区、调整大小以及许多其他有趣的操作。但是,两者都需要使用sudo
。两者都输出大量详细信息
find
这是一种更“动手”的方法。Linux 下的所有设备都有一个特殊的设备文件(还记得 Unix 哲学吗?即一切都是文件?它在这里最适用)。知道有文件,/dev/disk/by-label
我们可以搜索该目录,或者我们可以进行/dev/disk
一般搜索。这绝对是一个更高级用户可以欣赏的工具
$ find -L /dev/disk/by-label/ -name "DTSE9" -exec readlink -e {} \;
/dev/sdb1
lsblk
已由 Jacob 介绍。
mount
$ mount | grep "DTSE9"
/dev/sdb1 on /media/xieerqi/DTSE9 type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
列出所有已安装的文件系统。可以使用以下命令进行过滤以grep
查找特定文件系统。这类似于执行grep 'DISKNAME OR UUID' /proc/mounts
lshw
此命令提供有关系统上所有硬件的信息。特别是,您可以查看有关lshw -c disk
整个设备或lshw -c volume
分区使用的磁盘的信息,您应该看到类似以下行的输出:
logical name: /dev/sdc1
logical name: /media/xieerqi/BA02-AF80
答案2
您可以简单地使用:
lsblk | grep <flashdrive>
在我的情况下这将输出运行
$ lsblk | grep Passport
└─sdb1 8:17 0 1,8T 0 part /media/jacob/My Passport1
└─sdc1 8:33 0 698,6G 0 part /media/jacob/My Passport
您可以在其中看到设备和挂载点。如您所见,我有两个 USB 驱动器,分别名为My Passport
仅获取设备
$ lsblk | grep Passport | awk '{ print $1 }'
└─sdb1
└─sdc1
相同,但输出更精确:
$ lsblk | grep Passport | awk -F'[─ ]' '{ print $2 }'
sdb1
sdc1
或者,正如@kos (谢谢!) 所建议的,甚至更简单,使用lsblk
选项-l
(这将└─
在设备之前省略输出中的):
$ lsblk -l | grep Passport | awk '{ print $1 }'
sdb1
sdc1
或者(也按照@kos 的建议),您可以不用该grep
命令,只使用lsblk
and awk
:
$ lsblk -l | awk '/Passport/{ print $1 }'
sdb1
sdc1
解释
lsblk
将列出所有已安装的设备grep <flashdrive>
将仅列出与您的设备名称匹配的行,如下所示:└─sdc1 8:33 0 698,6G 0 part /media/jacob/My Passport
awk -F'[─ ]' '{ print $2 }'
将用两个分隔符来分割行:─
(这是└─中的第二个字符)
和一个空格。
随后,我们就可以轻松获得我们需要的部分。