Wie kann ich feststellen, auf welchem ​​Volume sich das Betriebssystem befindet?

Ich gebe zu, dass ich hier mehrere Fragen zu einer zusammenfasse, also verzeihen Sie mir bitte und versuchen Sie, mich nicht dafür zu klopfen.

Ich bin neu bei Mac, aber ich versuche, eine meiner Java-Anwendungen auf OS X zu portieren. Unter Windows verwendet es die Seriennummer der Festplatte für etwas, und ich möchte mit dem Terminal auf dem Mac das Gleiche tun!

Das Naheliegende, was ich finden kann, ist die Volume-UUID mit diskutil info ..., was in Ordnung ist (solange dies immer gleich bleibt?): Meine Hauptfrage ist also, welches Volume ich verwenden soll, da drei angezeigt werden, wenn ich tippe diskutil list? Natürlich muss es eine UUID haben, aber ich möchte auch das Volume verwenden, das sich am wenigsten ändern wird, was für mich das mit dem Betriebssystem zu sein scheint!

Ich würde also gerne wissen, welches Volume für mich zu diesem Zweck am sichersten ist und ob es auf verschiedenen Computern unterschiedlich ist - wie ich es finde!

Vielen Dank im Voraus

Antworten (2)

Öffnen Sie Terminal.app und führen Sie Folgendes aus df -h /:

% df -h /
Filesystem     Size   Used  Avail Capacity  Mounted on
/dev/disk1s2  111Gi   75Gi   36Gi    68%    /

Auf meinem Rechner ist mein OS-Laufwerk eingeschaltet /dev/disk1s2. Mit diesen Informationen können Sie die Festplattendienstprogramm-App verwenden und herausfinden, auf welchem ​​physischen Laufwerk sich Ihr Betriebssystem befindet:

Festplattendienstprogramm

Wenn diskutilSie von der Befehlszeile aus Ihr Betriebssystemlaufwerk verwenden, entspricht dies dem, was dfIhnen die Befehlsausgabe gegeben hat:

% diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Nymeria                 499.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *120.0 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
-> 2:                  Apple_HFS Untitled 1              119.2 GB   disk1s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk1s3

Wenn Sie nicht wissen, wie UNIX-ähnliche Betriebssysteme (OS X) ein Laufwerk partitionieren, sehen Sie sich diesen Wikipedia-Artikel an .

Und wenn Sie alle Details für die Root-Partition direkt im Terminal abrufen möchten, führen Sie es aus

diskutil info $(df / | tail -1 | cut -d' ' -f 1)
Vielen Dank für diese Informationen - es ist genau das, was ich brauchte. Wissen Sie, ob es eine Möglichkeit gibt, diese Zeile mit zu kombinieren, diskutil info ... oder glauben Sie, dass ich den Befehl in Java ausführen und das, was er zurückgibt, in einem anderen Befehl für den diskutil infoTeil verwenden muss?
Das liegt außerhalb meines Wissensgebiets, aber ich werde die Antwort aktualisieren, wenn jemand einen Kommentar hinterlässt.
Das ist gerecht genug. Ich bin mir ziemlich sicher, dass ich jetzt sowieso weiß, was zu tun ist. Danke nochmal für deine Hilfe!
@Andy, suchst du so etwas wie diskutil info $(df -h / | tail -1 | cut -d' ' -f 1)?
@patrix Sorry für die langsame Antwort. Ja, das war es, was ich suchte. Danke

Diese Shell-Funktion teilt Ihnen den Namen des Volumes mit, das eine bestimmte Datei (oder einen Ordner usw.) enthält.

function volumeOfFile {
  local result=$(
      /bin/df "$1" \
      | /usr/bin/sed -e 1d -e 's,  *, ,g' -e s,/Volumes/,, \
      | cut -d' ' -f 9-
  )
  if [[ $result == / ]] ; then
    /bin/ls -l /Volumes \
    | /usr/bin/sed -n -e 's,  *, ,g' -e 's, -> /$,,p' \
    | cut -d' ' -f 9-
  else
    echo "$result"
  fi
}

Beispiele:

$ volumeOfFile /System
Mac HD
$ volumeOfFile /Volumes/Other/Users
Other
$

Ich würde gerne eine einfachere Möglichkeit kennen, dies zu tun, oder eine Möglichkeit, dies in Swift zu tun.