How can I tell which volume the operating system is on?
-
19-04-2021 - |
Pergunta
I'll admit that I am kind of rolling multiple questions in to one here so please forgive me and try not to knock me for it.
I am new to Mac but I'm trying to port one of my Java applications to OS X. On Windows, it uses the hard drive serial number for something and I'm looking to do equivalent in Mac using the Terminal!
The close thing I can find is the volume UUID using diskutil info ...
, which is fine (as long as this will always stay the same?): so my main question is which volume I should use, seeing as though three appear when I type diskutil list
? Obviously it needs to have a UUID, but I would also like to use the volume that is least likely to change, which would seem to be the one with the operating system on to me!
So I would like to know which volume is the safest for me to use for this purpose, and if it varies on different computers - how to find it!
Thanks in advance
Solução
Open Terminal.app and run df -h /
:
% df -h /
Filesystem Size Used Avail Capacity Mounted on
/dev/disk1s2 111Gi 75Gi 36Gi 68% /
On my machine my OS drive is on /dev/disk1s2
. With this information you can use the Disk Utility app and find out what physical drive your OS is on:
Using diskutil
from command line you're OS drive will be whatever correlates to what the df
command output gave you:
% 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
If you're unfamiliar with how UNIX-like operating systems (OS X) partition a drive check out this Wikipedia article.
And if you want to get all the details for the root partition directly in terminal, run
diskutil info $(df / | tail -1 | cut -d' ' -f 1)
Outras dicas
This shell function will tell you the name of the volume that holds any given file (or folder, etc.).
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
}
Examples:
$ volumeOfFile /System
Mac HD
$ volumeOfFile /Volumes/Other/Users
Other
$
I'd like to know of an easier way to do this or a way to do it in Swift.