Bir USB cihazının montaj yolunu OSX'te nasıl bulabilirim?


58

Bazı verileri bir USB cihazına yedekleyen bir yedekleme betiğim var. Sahip olduğum sorun OSX’in bazen beklenen montaj yolunu değiştirmesi. Örneğin, bazı dosyalar beklenen bağlama yolunun altında kilitliyse, OSX dosyayı başka bir yola bağlar. 'YEDEKLEME' adlı bir USB aygıtı, / Hacimler / YEDEKLEME yerine / Hacim / YEDEKLEME-1'e monte edilebilir.

OSX Terminalinde bir USB cihazının mevcut montaj yolunu bulmanın bir yolu var mı? 'Mount_path BACKUP' (komut sahtedir) gibi bir şey daha sonra '/ Volumes / BACKUP-1' değerini döndürür ya da aygıt kurulmamışsa hiçbir şey döndürmez mi?

Yanıtlar:


68

Aşağıdaki komutlar, montaj birimleri hakkında bilgi gösterir:

  • Tanınmış Unix mount, örn /dev/disk5s3./Volumes/Foo
  • diskutil list tüm disklere ve birimlere genel bakışı gösterir
  • diskutil info /dev/disk5s3o birimi Volume UUIDbenzersiz bir şekilde tanımlamak için kullanılabilecek bir birim de dahil olmak üzere o birim hakkındaki bilgileri gösterir .

diskutil infoBirimin UUID'sini kullanarak sorgulayabilirsiniz :

$ diskutil info DEC8759E-F77D-3EAE-B3EB-B6438F1AA428 | grep 'Mount Point'
   Mount Point:              /Volumes/DroboOne

Sistemimdeki örnek komut çıktısı:

$ mount
/dev/disk1 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)
localhost:/bNqIvVr1ZdFBdf19Io81Q4 on /Volumes/MobileBackups (mtmfs, nosuid, read-only, nobrowse)
/dev/disk4 on /Volumes/MyBook (hfs, local, nodev, nosuid, journaled)
/dev/disk5s3 on /Volumes/DroboOne (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk7s3 on /Volumes/DroboTwo (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk6s3 on /Volumes/DroboThree (hfs, local, nodev, nosuid, journaled, noowners)

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *256.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         240.0 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Servus10 HD            *239.7 GB   disk1
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *3.0 TB     disk2
   1:                        EFI                         209.7 MB   disk2s1
   2:          Apple_CoreStorage                         3.0 TB     disk2s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk2s3
/dev/disk4
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS MyBook                 *3.0 TB     disk4
/dev/disk5
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *2.2 TB     disk5
   1:        Apple_partition_map                         32.3 KB    disk5s1
   2:                  Apple_HFS DroboOne                2.2 TB     disk5s3
/dev/disk6
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *2.2 TB     disk6
   1:        Apple_partition_map                         32.3 KB    disk6s1
   2:                  Apple_HFS DroboThree              2.2 TB     disk6s3
/dev/disk7
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *2.2 TB     disk7
   1:        Apple_partition_map                         32.3 KB    disk7s1
   2:                  Apple_HFS DroboTwo                2.2 TB     disk7s3

$ diskutil info /dev/disk5s3
   Device Identifier:        disk5s3
   Device Node:              /dev/disk5s3
   Part of Whole:            disk5
   Device / Media Name:      Untitled

   Volume Name:              DroboOne
   Escaped with Unicode:     DroboOne

   Mounted:                  Yes
   Mount Point:              /Volumes/DroboOne
   Escaped with Unicode:     /Volumes/DroboOne

   File System Personality:  Journaled HFS+
   Type (Bundle):            hfs
   Name (User Visible):      Mac OS Extended (Journaled)
   Journal:                  Journal size 172032 KB at offset 0x4001000
   Owners:                   Disabled

   Partition Type:           Apple_HFS
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 FireWire
   SMART Status:             Not Supported
   Volume UUID:              DEC8759E-F77D-3EAE-B3EB-B6438F1AA428

   Total Size:               2.2 TB (2198888927232 Bytes) (exactly 4294704936 512-Byte-Blocks)
   Volume Free Space:        169.4 GB (169412173824 Bytes) (exactly 330883152 512-Byte-Blocks)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No
   Ejectable:                Yes

   Whole:                    No
   Internal:                 No

Bu komutları kullanmak zorunda kalmaktan ve bu yoldan ayrıştırmaktan kaçınmayı umuyordum :) Ama başka bir yol yoksa, bunu sizin için yapan bash fonksiyonlarını biliyor musunuz?
xastor

@xastor İlgili bilgi eklendi. man diskutilyardımcı olurdu.
Daniel Beck

Teşekkürler, şimdi bir senaryo yazdım ve işe yarıyor. Yine de başka bir yol olacağını umuyordum, soruyu söylemeliydim. Örneğin, başka bir dilde olan bir OSX sisteminde neler oluyor? Sanırım fransız bir sistemde 'Mount Volume'
öğütemiyorum

@ xastor diskutilyerelleştirilmedi.
Daniel Beck

1
Bu o zaman güvenilir bir çözümdür. Teşekkür ederim!
xastor

10

Peki ya bu komut:

df -lH | grep "Filesystem"; df -lH | grep "/Volumes/*"

"Monte edilmiş" sütununda, üzerimde "/Volumes"neredeyse her zaman USB olan;

grepKomutlar temelde üzerine monte edilmiştir sabit sürücüyü atlamak "/".

OSX Snow Leopard'ımın terminalinde, şu anda bağlı olan USB Aygıtlarımın Bağlantı Noktalarına hızlı bir bakış için kullanıyorum. Sadece Mount Points ile ilgileniyorsanız ve UUID vb. Gibi diğer tüm parametrelerle ilgilenmiyorsanız, bu bence "diskutil"tüm bilgilerinden ziyade daha açık bir yol olacaktır .


2

Bir değişkende onu alıyorum:

media=\`df | grep "media" | awk '{print $6}'\`

veya

media=$(df | awk '/media/ {print $6}')

dfKomut listesi bölmeler, sonuçta elde edilen çıkış filtreler ve daha sonra borulu kelime ihtiva eden ortam maddesi yalnızca çizgileri tutan grep komutuna girdi olarak yöneltilen awksadece bir hat girişi 6. sütun tutar komutu.


İkinci form daha çok tercih edilmelidir, ancak /media/parametreli hale getirilmiş regex'ten nasıl geçileceği açık değildir . Aranacak şey olarak media=$(df | awk -v regex="$regex" '$1 ~ regex { print $6 }')kabuk değişkenine geçmeyi deneyin $regex.
04

1

Sadece iyi yaşlılar diskutil. Bu, muhtemelen / sys veya başka bir şeye bakabileceğiniz Linux değil.

diskutil info "$VolumeName" | grep "Mount Point" | tr " " "\n" | tail -1

0

Bunun için sadece fstab kullanırdım. Süper Kullanıcı: Mac Lion: fstab burada bu konuyla ilgili bir konu var . peki bir bölmenin takılmasını önlemek için ne değiştirir?


1
Ve nasıl kullanırsınız fstabaynen bunun için?
Daniel Beck

USB sürücüsünün UUId'sini almak, bir bağlantı noktası oluşturmak ve hepsini / etc / fstab dosyasına vermek. Yukarıda belirtilen USB sürücü takıldığında, UUID tarafından tanınan bu montaj noktasına monte edilecektir.
dag729

Kullanıcının probleminin kullanımda olan varsayılan bağlama noktasından kaynaklandığını unutmayın.
Daniel Beck

Demek istediğim bu: / etc / fstab kullanarak İşletim Sistemine bir bağlantı noktası vermek. O andan itibaren, sistem / etc / fstab dosyasını okuyacak, ilişkili bir bağlantı noktası olan bir UUID olduğunu görecek ve varsayılan yerine bunu kullanacaktır.
dag729

0

Bu bash betiğini kullanarak bitirdim:

#!/bin/sh
#
# Retrieves the mount point of an OSX volume name or UUID.
# @param $1 Name of the volume or UUID of the volume.
# @return returns the mount path or an empty string if the volume is not mounted. 
#
diskutil info $1 | grep 'Mount Point' | cut -d : -f 2 | sed 's/^ *//g' | sed 's/ *$//g';

Bu geçen Eylül'dü ve henüz kimse buna yorum yapmadı mı? Eğer bu betiğin yorumların söylediğini yapmasını beklerseniz 'Mount Point' yerine 'Device Node' olmalıdır.

1
@Blakat Aygıt düğümü OP'nin istediği şey değil. Bağlantı noktası, /Volumes/…bu soruyu doğru okuduğumda herkesin neden bahsettiğidir.
slhck

Eğer kullanıyorsanız sedzaten grepve cutolan yararsız ; diskutil info "$1" | sed -n '/^ *Mount Point: */!d;s///;s/ *$//p'
04

0

OS X'deki kabuk komut dosyalarımda kullandığım şey bu

df | awk '{print $6}' | grep -Ex "/Volumes/myvolume"

Bunun nasıl çalıştığını açıklamak için birkaç cümle ekleyebilir misiniz? Teşekkürler.
fixer1234

Bu, df | awk '$6 == "/Volumes/myvolume" { print $6 }'tam olarak beklenen bir durumsa, ses yolunu yazdırmanın yani dolambaçlı bir yoludur . grep -EBayrak burada gereksiz olduğu ve grepişe yaramaz Awk zaten normal bir ifadeyle eşleştiğini nasıl oldukça iyi bildiği için.
17'de

Daha kullanışlı bir komut muhtemelen hacim için yazılması olurdu önce sadece altıncı alanını baskı, hatta daha iyi ilk değiştirmek $6için $1önceki yorumunda.
04

-1

Bu daha iyi işe yarayabilir:

df -lH | grep -E "*putinyourvolumelabel*$" | awk '{print $1}''

6
Bu neden daha iyi işe yarayabilir?
bertieb

Dennis, Süper Kullanıcı'ya hoş geldin. Diğer cevaplardan birkaçı iyi bir örnek değildir, ancak cevapların amacı sadece kes ve yapıştır kodu sağlamak yerine eğitmektir. Ben bir kodlayıcı değilim, bu yüzden çözümünüzün ne kadar iyi olduğunu ele alamıyorum, ancak bertieb'in yorumundan ve belki de aşağı yönünden şüpheliyim, bunun sadece çözümün kalitesinden ziyade açıklanamayan bir kod olduğu gerçeğinden geçiyor. Bunun ne yaptığını açıklamak için birkaç cümle ekleyebilir misiniz ve onu neye benzettiğinizden daha iyi bir çözüm yapar? Teşekkürler.
fixer1234
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.