(check pathnames)
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 Argumente pathname auf der Basis des zugrundeliegenden Dateisystems. In folgenden Fällen wird eine Fehlermeldung zu dem betroffenen Argument pathname ausgegeben:
Es ist länger als die maximal zulässige Länge von Pfadnamen (
{PATH_MAX}
Byte).Es enthält eine Komponente, die länger ist als die maximal zulässige Länge von Dateinamen (
{NAME_MAX}
Byte) im jeweiligen Verzeichnis.Er enthält eine Komponente in einem Verzeichnis, das nicht durchsucht werden kann.
Er enthält eine Komponente mit Zeichen, die im jeweiligen Verzeichnis ungültig sind.
Die Namenslänge einer Datei oder Verzeichnisses in einem bs2fs-Dateisystem widerspricht nicht den Regeln eines bs2fs-Dateisystems.
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.
Syntax
pathchk[ -p] pathname... |
Optionen
Führt die Überprüfungen nicht für das zugrundeliegende Dateisystem durch, sondern auf Grundlage allgemeiner Portabilitätsbedingungen. In folgenden Fällen wird eine Fehlermeldung zu dem betroffenen Argument pathname ausgegeben:
Der zu überprüfende Pfadname. |
Internationale Umgebung
Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos pathchk: LANG Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden. LC_ALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen. LC_CTYPE Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung. LC_MESSAGES Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden. NLSPATH Legt den Pfad der Meldungsdateien für LC_MESSAGES fest. |
Hinweis
Mit dem Kommando test kann überprüft werden, ob ein bestimmter Pfadname eine bereits vorhandene Datei angibt. Es gibt jedoch keine Auskunft darüber, ob eine Komponente des Pfadnamens abgeschnitten wurde (in einem Verzeichnis, für das die Funktion { |
Beispiel
Sie können folgendermaßen prüfen, ob alle Pfadnamen in einem importierten Datenaustauscharchiv auf dem aktuellen System zulässig und eindeutig sind: pax -f archive | sed -e \*(hO/ == .*/s///\*(hO | 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 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 automatisch verkürzt wird und die keine bereits vorhandene Datei überschreibt. 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" Diesem Beispiel liegt folgendes zugrunde:
|
Siehe auch
test |