2010-11-29 1 views
1

У меня есть сценарий bash, который обрабатывает файлы в Mac OS X 10.5 & 10.6. Теперь нужно определить, находятся ли файлы на локальном томе или удаленном томе AFP. Все точки монтирования находятся в /Volumes на Mac OS X, но я не вижу различий между локальными удаленными томами &, по крайней мере, с ls -al (за исключением загрузочного тома, который является символической ссылкой на /).Есть ли способ определить тип точки монтирования?

Есть ли способ программно, особенно. то, что может быть легко вызвано из сценария bash (I действительно не хотят переписывать это в C/Obj-C с API-интерфейсом OS X, если это абсолютно необходимо), чтобы определить источник или тип Точка монтирования? Даже то, на каком устройстве отображается объем (при условии, что объемы, смонтированные с mount_afp, mount_smbfs, mount_webdav и т. Д., Не будут отображаться на устройстве в /dev), так что у меня есть способ угадать, локально это или нет?

+0

Что вы получаете с файлом/томами/* `? – chrisaycock 2010-11-29 23:07:23

+0

Нет ничего особенного в самой точке монтирования, но я предполагаю, что вы хотите узнать что-то о том, что там установлено. – 2010-11-30 06:15:06

ответ

2

Сверху моей головы, я не верю, что для этого есть API, который распространен на всех платформах. Можно, однако разобрать вывод команды mount:

~$ 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 без аргументов имеет примерно тот же эффект на большинстве * NIX-иш системы, хотя я не считаю, что формат вывода стандартизован в любом месте.


Я бы рекомендовал вам пересмотреть свой подход, однако. Весь смысл сетевых файловых систем заключается в том, что приложения не должны заботиться о них. Рассмотрите возможность публикации другого вопроса, объясняющего, что вы пытаетесь сделать, сделав это. Возможно, кто-то может предложить превосходное и более обобщенное решение.

2

Имеет ли простой

$ mount 

команду без каких-либо дополнительных арг сказать вам, что вам нужно?