Ich möchte ein Shell-Skript schreiben, das alle derzeit angeschlossenen externen Laufwerke (entweder USB- oder Firewire-Laufwerke) auswirft. Ich kann verwenden, disktuil eject <disk-path>
um ein bestimmtes Laufwerk auszuwerfen. Aber ich kann immer noch nicht herausfinden, was die externen Laufwerke sind. Zeigt beispielsweise /Volumes
interne Laufwerke, externe Laufwerke und bereitgestellte Images an. Gibt es eine Möglichkeit, nur externe Laufwerke programmgesteuert zu identifizieren?
Haben Sie darüber nachgedacht, die zu verwenden diskutil info /dev/disk[n|s{n}] | grep Ejectable
, mit der Sie feststellen können, ob das Gerät (oder der Geräte-Slice) auswerfbar ist?
Dies müsste in einem Skript erweitert werden, das verwendet wird, awk
um jedes derzeit angeschlossene Festplattengerät zu bearbeiten, um festzustellen, ob es ausgeworfen werden kann, und es dann auszuwerfen.
In einem Terminalfenster (Bash-Shell)
diskutil info /Volumes/Name-des-Volumes
gibt eine Liste der Eigenschaften des Volumes zurück, einschließlich
Protokoll: FireWire ... Auswerfbar: Ja Ganz: Nein Intern: Nein
Also, ich nehme an, Sie könnten damit anfangen. Mir ist nicht klar, was die Eigenschaft "Internal" bedeutet. Es ist möglicherweise besser, sich "Protocol" anzusehen, wenn Sie sich mit externen Firewire- oder USB-Geräten befassen.
ausstoßen
diskutil info
ist genau das, was ich brauche. Ich kann nur verwenden,grep
um ein "Ja" in der Zeile "Ejectable" zu bestimmen. Hier ist mein Skript, da es für andere nützlich sein könnte: gist.github.com/1077064