bash: test file1 -ef file2
Von: Andreas Leitgeb (avl@gamma.logic.tuwien.ac.at) [Profil]
Datum: 03.02.2008 01:37
Message-ID: <slrnfqa36s.4ug.avl@gamma.logic.tuwien.ac.at>
Newsgroup: at.linux
Datum: 03.02.2008 01:37
Message-ID: <slrnfqa36s.4ug.avl@gamma.logic.tuwien.ac.at>
Newsgroup: at.linux
Ich hab da ein problem: Laut (bash) help test: " ... " FILE1 -ef FILE2 True if file1 is a hard link to file2. " ... Diesen test hab ich in einem shell-script, das ich explizit per "bash shellscript.sh" starte, aber irgendwie werden zwei hardlinks auf denselben inode im script nicht als identisch erkannt. " if [ "$srcf" -ef "tgtf" ]; then " .... " else ... Und obwohl "$srcf" und "tgtf" zwei hardlinks auf dieselbe datei enthalten, komm ich in den else-zweig. Fehlermeldung wird dabei jedenfalls keine geschrieben. Ein ins script eingebautes " echo `type [` liefert mir auch brav: " [ is a shell builtin Fuer eine (stichproben-)datei, fuer die er in den else-zweig kommt, liefert mir aber ein interaktiv eingegebenes " test dist/3ddesktop_0.2.9-6_i386.deb -ef archives/3ddesktop_0.2.9-6_i386.deb && echo foo die erwartete Ausgabe "foo", also "weiss" die bash, dass die zwei Dateien identisch sind. Ausserdem ist amit klar, dass die zwei dateien auf demselben filesystem sind. Was kanns da noch haben? PS: die erste zeile im script ist #!/bin/bash, was aber egal sein sollte, nachdem ich das script direkt an bash uebergebe. Hintergrund: ich will zwei directories "synchron" halten, wobei in einem directory die debian files eventuell mit doppelpunkt herumliegen, im anderen aber mit %3a statt des Doppelpunktes, wie das eben im /var/cache/apt/archives so ist. /var/cache/apt/archives ist dabei ein symlink dorthin, wo eben sowohl "dist" als auch "archives" nebeneinander herumliegt. PPS: eine google-suche nach "shell test link" hat mich dann erst auf irgendwie auf "-ef" gebracht, aber warum das nicht funktioniert ... keine Ahnung.[ Auf dieses Posting antworten ]
Antworten
- Thomas Ogrisegg (03.02.2008 03:00)
- Andreas Leitgeb (03.02.2008 09:49)
