pathchk(1) pathchk(1)
NAME
pathchk - Pfadnamen überprüfen
SYNTAX
pathchk [-p] pathname ...
BESCHREIBUNG
Das Kommando pathchk überprüft, ob ein oder mehrere Pfadnamen gültig
sind (d. h. sie können zum Zugriff auf eine Datei oder zum Erstellen
einer Datei verwendet werden, ohne einen Syntaxfehler zu verursachen)
und ob sie portierbar sind (d. h. es ist keine Namensanpassung nötig).
Weiterreichende Prüfungen zur Portierbarkeit können mit der Option -p
durchgeführt werden.
Standardmäßig überprüft das Kommando pathchk die Komponenten aller
pathname-Argumente auf der Basis des zugrundeliegenden Dateisystems.
In folgenden Fällen wird eine Fehlermeldung zu dem betroffenen
pathname-Argument ausgegeben:
- Es ist länger als die maximal zulässige Länge von Pfadnamen
(PATHMAX Byte).
- Es enthält eine Komponente, die länger ist als die maximal zuläs-
sige Länge von Dateinamen (NAMEMAX Byte) im jeweiligen Verzeich-
nis.
- Er enthält eine Komponente in einem Verzeichnis, das nicht durch-
sucht werden kann.
- Er enthält eine Komponente mit Zeichen, die im jeweiligen Verzeich-
nis ungültig sind.
Es ist kein Fehler für pathchk, wenn eine oder mehrere Komponenten
eines Arguments pathname nicht existieren, solange eine Datei mit dem
angegebenen Pfadnamen erstellt werden kann, die die oben aufgeführten
Überprüfungen erfüllt.
OPTIONEN
-p Führt die Überprüfungen nicht für das zugrundeliegende Dateisy-
stem durch, sondern auf Grundlage allgemeiner Portabilitätsbedin-
gungen. In folgenden Fällen wird eine Fehlermeldung zu dem
betroffenen Argument pathname ausgegeben:
- Es ist länger als die maximal zulässige Länge für portierbare
Pfadnamen (POSIXPATHMAX Byte).
- Es enthält eine Komponente, die länger ist als die maximale
Länge für portierbare Dateinamen (POSIXNAMEMAX Byte).
- Er enthält eine Komponente mit Zeichen, die nicht in der por-
tierbaren Zeichenmenge für Dateinamen enthalten sind.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
pathchk(1) pathchk(1)
pathname
Der zu überprüfende Pfadname.
UMGEBUNGSVARIABLEN
Die folgenden Umgebungsvariablen wirken sich auf die Ausführung von
pathchk aus:
LANG Gibt einen Standardwert für die Variablen für die inter-
nationale Umgebung an, die nicht gesetzt oder Null sind.
Ist LANG nicht gesetzt oder Null, wird der entsprechende
Standardwert der internationalen Umgebung verwendet. Ent-
hält eine der Internationalisierungsvariablen eine ungül-
tige Einstellung, verhält sich das Kommando so, als sei
keine der Variablen definiert worden.
LCALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie
nicht leer, überschreibt dieser Wert die Werte alle übri-
gen Variablen für die internationale Umgebung.
LCCTYPE Legt die Interpretation von Byte-Folgen als Zeichen fest
(z. B. Einzelbytezeichen im Unterschied zu Mehrbytezei-
chen in Argumenten).
LCMESSAGES Legt das Format und den Inhalt von Meldungen fest.
ENDESTATUS
0 Alle Pfadnamen waren fehlerfrei.
>0 Ein Fehler ist aufgetreten.
DIAGNOSE
pathchk: Subpath path is not searchable
Fehler ENOSYS, der von dem Systemaufruf pathconf() [siehe
fpathconf(2)] gemeldet wurde.
ANWENDUNGSHINWEISE
Mit dem Kommando test kann überprüft werden, ob ein bestimmter Pfad-
name eine bereits vorhandene Datei angibt. Es gibt jedoch keine Aus-
kunft darüber, ob eine Komponente des Pfadnamens abgeschnitten wurde
(in einem Verzeichnis, für das die Funktion POSIXNOTRUNC nicht
aktiviert ist). Das Kommando pathchk prüft nicht, ob eine bestimmte
Datei vorhanden ist. Es prüft lediglich, ob ein bestimmter Pfadname
existiert bzw. ob er ohne Namensverkürzung erstellt werden kann.
Mit der Option noclobber in der Shell [vgl. Beschreibung von set(1)]
kann eine Datei eindeutig erstellt werden.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
pathchk(1) pathchk(1)
BEISPIELE
Sie können folgendermaßen prüfen, ob alle Pfadnamen in einem impor-
tierten Datenaustauscharchiv auf dem aktuellen System zulässig und
eindeutig sind:
pax -f archive | sed -e '/ == .*/s///' | xargs pathchk
if [ $? -eq 0 ]
then
pax -r -f archive
else
echo Investigate problems before importing files.
exit 1
fi
Sie können folgendermaßen prüfen, ob alle Dateien in der aktuellen
Verzeichnishierarchie auf ein anderes System übertragen werden können,
das allgemeine Portabilitätsbedingungen erfüllt und das Kommando
pax(1) zur Verfügung stellt:
find . -print | xargs pathchk -p
if [ $? -eq 0 ]
then
pax -w -f archive .
else
echo Portable archive cannot be created.
exit 1
fi
Sie können folgendermaßen überprüfen, ob ein angegebener Pfadname eine
lesbare Datei benennt und ob eine Anwendung durch Erweiterung des
Dateinamens eine Datei erstellen kann, deren Pfadname nicht automa-
tisch verkürzt wird und die keine bereits vorhandene Datei über-
schreibt.
case $- in
*C*) reset="";;
*) reset="set +C"
set -C;;
esac
test -r "$path" && pathchk "$path.out" &&
rm "$path.out" > "$path.out"
if [ $? -ne 0 ]; then
printf "%s: %s not found or %s.out fails \
creation checks.\n" $0 "$path" "$path"
$reset # reset the noclobber option in case a trap
# on EXIT depends on it
exit 1
fi
$reset
PROCESSING < "$path" > "$path.out"
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
pathchk(1) pathchk(1)
Diesem Beispiel liegt folgendes zugrunde:
1. PROCESSING stellt den Code dar, den die Anwendung benützt, um $path
zu verwenden, sobald überprüft worden ist, daß $path.out die
gewünschten Bedingungen erfüllt.
2. Der Status der Option noclobber ist unbekannt, wenn dieser Code
aufgerufen wurde, und sollte beim Verlassen wieder auf den Status
gesetzt werden, den er beim Aufrufen dieses Codes hatte. (Die
Variable reset wird in diesem Beispiel zum Wiederherstellen des
ursprünglichen Status verwendet.)
3. Beachten Sie die Verwendung der folgenden Konstruktion:
rm "$path.out" > "$path.out"
a) Das Kommando pathchk hat zu diesem Zeitpunkt bereits geprüft,
daß $path.out nicht verkürzt wird.
b) Wenn die Option noclobber gesetzt ist, prüft die Shell vor dem
Aufruf von rm, ob $path.out nicht bereits vorhanden ist.
c) Wenn die Shell $path.out erfolgreich erstellt hat, entfernt rm
diese wieder, so daß die Anwendung die Datei im Schritt PROCES-
SING erneut erstellen kann.
d) Wenn die Datei beim Aufrufen des Schritts PROCESSING bereits
vorhanden sein soll, sollte
rm "$path.out" > "$path.out"
durch
> "$path.out"
ersetzt werden. Hierdurch wird sichergestellt, daß die Datei
$path.out noch nicht vorhanden war, und sie wird gleichzeitig
für die Verwendung durch PROCESSING angelegt.
SIEHE AUCH
test(1), fpathconf(2).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98