在OSX命令行上列出USB设备


Answers:


148

除了system_profiler SPUSBDataType(由@kjs建议),您还可以使用ioreg -p IOUSB

$ ioreg -p IOUSB 
+-o Root  <class IORegistryEntry, id 0x100000100, retain 10>
  +-o EHCI Root Hub Simulation@1A,7  <class IOUSBRootHubDevice, id 0x100000227,$
  | +-o HubDevice@fa100000  <class IOUSBHubDevice, id 0x10000027a, registered, $
  | | +-o Apple Internal Keyboard / Trackpad@fa120000  <class IOUSBDevice, id 0$
  | | +-o BRCM2070 Hub@fa110000  <class IOUSBHubDevice, id 0x1000002b4, registe$
  | |   +-o Bluetooth USB Host Controller@fa113000  <class IOUSBDevice, id 0x10$
  | +-o FaceTime HD Camera (Built-in)@fa200000  <class IOUSBDevice, id 0x100000$
  +-o EHCI Root Hub Simulation@1D,7  <class IOUSBRootHubDevice, id 0x100000228,$
    +-o HubDevice@fd100000  <class IOUSBHubDevice, id 0x10000027b, registered, $
      +-o IR Receiver@fd110000  <class IOUSBDevice, id 0x100000288, registered,$

默认情况下,它会裁剪到窗口的宽度(在上面的示例中为80个字符),因此您可能需要添加-w0以获得全角显示。另外,添加-l将显示每个设备的详细信息(可能超出您的需求):

$ ioreg -p IOUSB -w0 -l
    +-o Root  <class IORegistryEntry, id 0x100000100, retain 10>
  | {
  |   "IOKitBuildVersion" = "Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64"
  |   "OS Build Version" = "14B25"
  |   "OSKernelCPUSubtype" = 3
  |   "OSKernelCPUType" = 16777223
  |   "OSPrelinkKextCount" = 185
  |   "IOConsoleLocked" = No
  |   "IORegistryPlanes" = {"IOACPIPlane"="IOACPIPlane","IOPower"="IOPower","IODeviceTree"="IODeviceTree","IOService"="IOService","IOUSB"="IOUSB","IOFireWire"="IOFireWire"}
[...etc...]

[编辑]:如果只需要设备名称,则可以过滤基本列表以修剪垃圾:

$ ioreg -p IOUSB -w0 | sed 's/[^o]*o //; s/@.*$//' | grep -v '^Root.*'
EHCI Root Hub Simulation
HubDevice
Apple Internal Keyboard / Trackpad
BRCM2070 Hub
Bluetooth USB Host Controller
FaceTime HD Camera (Built-in)
EHCI Root Hub Simulation
HubDevice
IR Receiver

仍然显示比我想要的更多的内容,但是每个设备列表都有一条方便的行
Milliways

是否有使用此信息挂载设备的便捷方法?我有一个ioreg显示为已连接但diskutil list没有显示的角落。是否有任何ioreg我可以用来安装角落的信息?
stiemannkj1 2016年

@ stiemannkj1:我对Nook并不熟悉,所以我不确定它们应该如何显示在Mac上。据我了解,安装它需要一个设备驱动器,该设备驱动器必须将其识别为磁盘线(标准USB驱动程序可以执行此操作吗?),并且上面必须装有可识别的文件系统。我对驱动程序系统不够熟悉,无法知道如何检查,但是我认为ioreg无法告诉您您想知道什么。
Gordon Davisson

您可以随时管道输出,如升华:ioreg -p IOUSB -w0 -l | subl。此ioreg命令还显示了我的虚拟盒子正在使用的设备,这确实很有帮助。
rjferguson

72

运行以下命令:

system_profiler SPUSBDataType

有些人只是?*!
Ruskes

1
谢谢-这看起来很像System Information(可能是),但是显示的细节太多了,但是很容易知道
Milliways

1
如果您需要访问供应商ID或产品ID等字段,这是一个更好的答案。
CodeGnome

2
这显示了不同的信息,例如安培中的电源使用情况。
西蒙·伍德赛德

5
此命令的另一个优点是,在需要可解析的输出的情况下,可以XML格式输出:system_profiler -xml SPUSBDataType
Andre M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.