Re: Zugriff auf Dateinamen mit Sonderzeichen in Skripten

From: Oliver Fromme <olli(at)secnetix.de>
Date: Thu, 6 Dec 2001 12:55:52 +0100 (CET)

Peter Ross <petros(at)pps.de> wrote:
> Leider sagt "ls" auf dem MacOS X nur '?' zu Sonderzeichen, eine Option -B
> existiert nicht. find macht aus dem A-Umlaut ein Ì.

Offenbar ein Zeichensatzproblem. Du solltest einheitlich
ISO8859-1 einstellen.

> Das ist das erste Problem, aber weiterhin sind Macianer ja sehr
> phantasievoll, was Zeichen aller Art angeht, so dass ein Skript sehr schnell
> in die Hose gehen kann (simples Beispiel:
>
> > ls -ltr Verwaltung/AUSGANGS - RECHNUNGEN
> > ls: -: No such file or directory
> > ls: RECHNUNGEN: No such file or directory
> > ls: Verwaltung/AUSGANGS: No such file or directory
>
> Kann mir da jemand helfen?

Ein paar Grundregeln:

In Shellskripten _grundsätzlich_ doppelte Anführungszeichen
um Variablen setzen: »ls "$foo"«, nicht »ls $foo«.

Wenn der Inhalt einer Variable mit einem Minus beginnen
kann, dann ein "--" einfügen: »ls -- "$foo"«

Bei der Kombination find|xargs Nullterminierung verwenden:
find ... -print0 | xargs -0 ... (ist leider nicht porta-
bel).

Bei der Abarbeitung von Argumenten "$@" verwenden, nicht
$*, damit die Aufteilung der Argumente erhalten bleibt,
auch wenn sie Whitespace enthalten.

So, mehr fällt mir so spontan nicht ein. :) Aber mit
obigen Regeln sollte man theoretisch schon beliebige Datei-
namen handhaben können. Es gibt übrigens nur zwei Zeichen
(Bytes), die in Dateinamen nicht vorkommen können: Null-
bytes und "/". Alles andere ist erlaubt.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 06 Dec 2001 - 12:55:53 CET

search this site