![Unix/Mac [bash/c api]: Erkennen, ob ein bestimmter Pfad auf eine Datei auf einem Wechseldatenträger verweist](https://rvso.com/image/1271995/Unix%2FMac%20%5Bbash%2Fc%20api%5D%3A%20Erkennen%2C%20ob%20ein%20bestimmter%20Pfad%20auf%20eine%20Datei%20auf%20einem%20Wechseldatentr%C3%A4ger%20verweist.png)
Gibt es einen *nix-Befehl oder eine C-API, die den Typ des Speichergeräts anhand des Pfads zur Datei angibt (Auflösen der Mounts, Symlinks usw.)? Ich muss herausfinden, ob sich die Datei auf einem Wechseldatenträger befindet.
Antwort1
Ich weiß nicht, ob „find“ ausreicht, um das Speichergerät anzuzeigen:
find /path/to/your/file.xml -printf "%F"
aus der Manpage:
%F Type of the filesystem the file is on; this value can be used for -fstype.
Eine andere Idee ist „stat“
stat /home/stefan/.shosts
File: `/home/stefan/.shosts'
Size: 12 Blocks: 8 IO Block: 4096 regular file
Device: 807h/2055d Inode: 89647 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ stefan) Gid: ( 1000/ stefan)
Access: 2011-04-11 10:24:21.000000000 +0200
Modify: 2011-03-30 14:45:29.000000000 +0200
Change: 2011-03-30 14:46:03.000000000 +0200
Es gibt eine Zeile „Device:“, aber ich weiß nicht, was ich damit machen soll. Vielleicht finden Sie es heraus?
Antwort2
Einige *nix-Implementierungen verfügen möglicherweise über ein cooles Tool, aber es wäre nicht allzu schwierig, die Ausgabe von mount(1) zu verwenden, um eine Datei und ihr Dateisystem zu korrelieren:
mfe@inker:/home/mfe$ mount
...
/media/WINXP_PRO_SP1 on /dev/dsk/c4t0d0s2 read only/nosetuid/nodevices/noglobal/maplcase/joliet/traildot/dev=14c0002 on Thu Apr 7 07:39:29 2011
Abgesehen von Hinweisen im Mount-Namen muss jede Datei, die ich unter /media/WINXP_PRO_SP1 finde, auf der DVD-ROM sein.
Antwort3
Wenn hal
installiert ist, können Sie beispielsweise lshal
die Ausgabe von scrapen.