2010-11-29 12 views
1

Ich habe einen bash Skript bekam, die 10,5 & 10.6 mit Dateien in Mac OS X beschäftigt. Es muss nun ermittelt werden, ob sich die Dateien auf einem lokalen Volume oder einem Remote-AFP-Volume befinden. Alle Einhängepunkte sind in /Volumes auf Mac OS X, aber ich kann keinen Unterschied zwischen lokalen & entfernten Volumen, zumindest mit ls -al (mit Ausnahme des Kofferraumvolumen, das ein symbolischer Link auf /) sehen.Gibt es eine Möglichkeit, den Typ eines Mountpoints zu bestimmen?

Gibt es eine Möglichkeit, um programmatisch, esp. etwas, das leicht von einem bash Skript aufgerufen werden kann (I wirklich möchte nicht in C/Obj-C mit OS X-spezifischen APIs umschreiben, sofern nicht unbedingt erforderlich), um die Quelle oder Typ von a Einhängepunkt? Sogar, welches Gerät ein Volumen abbildet (vorausgesetzt, die mit mount_afp, mount_smbfs, mount_webdav usw. montierten Volumina werden nicht auf ein Gerät in /dev verweisen), so habe ich einige Weise zu erraten, ob es lokal ist oder nicht?

+0

Was bekommen Sie mit 'file/Volumes/*'? – chrisaycock

+0

Es gibt nichts besonderes an alles über ein einhängepunkt selbst, aber ich nehme an, Sie wollen etwas über die Sache, um herauszufinden, dass es angebracht ist. –

Antwort

2

Aus der Spitze von meinem Kopf, ich eine API für sich nicht glauben, dass es die auf allen Plattformen üblich ist. Sie könnten, analysieren jedoch die Ausgabe des mount Befehl:

~$ mount 
/dev/disk0s2 on/(hfs, local, journaled) 
devfs on /dev (devfs, local, nobrowse) 
map -hosts on /net (autofs, nosuid, automounted, nobrowse) 
map auto_home on /home (autofs, automounted, nobrowse) 
/dev/disk1s2 on /Users/nknight (hfs, local, nodev, nosuid, journaled, nobrowse) 

mount ohne Argumente auf den meisten * nix-ish Systeme in etwa die gleiche Wirkung hat, obwohl ich nicht glaube, das Ausgabeformat überall standardisiert ist.


Ich würde Sie ermutigen, Ihren Ansatz jedoch zu überdenken. Der Kernpunkt von Netzwerk-Dateisystemen ist, dass Anwendungen sich nicht um sie kümmern sollen. Erwägen Sie, eine weitere Frage zu stellen und erklären Sie, was Sie damit erreichen möchten. Jemand kann wahrscheinlich eine überlegene und allgemeinere Lösung anbieten.

+0

Genau das, was ich wissen musste, und ich kann auf jeden Fall analysieren, was ich brauche (der FS-Typ). Ich schätze die Ermutigung, meinen Ansatz zu überdenken, glücklicherweise handelt es sich um ein Mac OS X-spezifisches "Bash" -Skript, sodass ich mich nur um die Kompatibilität unter Mac OS X-Versionen kümmern muss. – morgant

2

Ist die Ebene

$ mount 

Befehl ohne zusätzliche args Ihnen sagen, was Sie brauchen?