Hallo, Am Thu, 21 Oct 2004, Michael Schachtebeck schrieb:
David Haller schrieb am 10/21/2004 05:45 AM:
Am Wed, 20 Oct 2004, Michael Schachtebeck schrieb:
find $1 -type f -mtime -$3 -mindepth 2 -printf "%h\n%p\n" | \
Quoten!
find "$1" -type f -mtime "-${3}" -mindepth 2 -printf "%h\n%p\n" | \
Hoffentlich keine dumme Frage: Was ist hier der Unterschied zwischen "$1" und "${3}"? man bash sagt mir: [..] Eigentlich liegt hier doch keiner der beiden Faelle vor, oder? Die 3 ist nur eine einzelne Ziffer, und als einziges Zeichen folgt direkt das schliessende ", wie nach $1 auch...
Ja, das ist genaugenommen nicht nötig, ich habe mir aber eben angewöhnt, _konsequent_ zu quoten und wenn ich etwas aus oder mit Variablen zusammensetze das ${} um den Variablennamen zu verwenden. Denn wenn da dann mal ein Fehler ist, ist sowas schwer zu finden. Der "Punkt" war hier aber das quoten. So bekommst du z.B. wenn $3 falsch belegt wäre eine aussagekräftigere Meldung: Ohne quoting um $3: $3="foo": find: invalid argument `-foo' to `-mtime' $3="1 2": find: paths must precede expression Letzteres bekommst du immer, wenn ein Leerzeichen in $3 ist. Mit quoting um $3: $3="foo": find: invalid argument `-foo' to `-mtime' $3="1 2": find: invalid argument `-1 2' to `-mtime' Bei der "Lösung" ohne Quoting ist man ziemlich gekniffen, wenn man den Fehler sucht.
if [ ! -d "$dir" ]; then mkdir -p "$dir" fi
Hier ziehe ich:
test -d "$dir" || install -d -m 755 "$dir"
vor.
Was ist der Vorteil von install gegenueber mkdir? Die Zugriffsrechte koennen ja beide Befehle mit dem Parameter -m setzen.
Stimmt. Ich dachte, daß install portabler als 'mkdir -p' sein könnte, aber 'install -d' ist wohl auch nicht überall vorhanden. Insofern ist das egal. Allerdings setzen 'install -d' und 'mkdir -p' die Rechte unterschiedlich, wenn die Verzeichnisse noch nicht existieren: $ rm -rf foo $ mkdir -m 750 -p foo/bar/baz $ find foo -ls 34287 4 drwxr-xr-x [..] foo 34426 4 drwxr-xr-x [..] foo/bar 34427 4 drwxr-x--- [..] foo/bar/baz $ rm -rf foo $ install -d -m 750 foo/bar/baz $ find foo -ls 34287 4 drwxr-x--- [..] foo 34426 4 drwxr-x--- [..] foo/bar 34427 4 drwxr-x--- [..] foo/bar/baz $ install -d -m 755 foo/bar/baz $ find foo -ls 34287 4 drwxr-x--- [..] foo 34426 4 drwxr-x--- [..] foo/bar 34427 4 drwxr-xr-x [..] foo/bar/baz $ mkdir -m 750 -p foo/bar/baz $ find foo -ls 34287 4 drwxr-x--- [..] foo 34426 4 drwxr-x--- [..] foo/bar 34427 4 drwxr-xr-x [..] foo/bar/baz $ rm -rf foo Welches Verhalten du willst musst du wissen ;) Ich habe mir übrigens auch angewöhnt 'test' auszuschreiben und nicht ' [ ' ... ' ]' zu verwenden.
else ln "$input" "$dir/"
Du weißt, daß Hardlinks nur innerhalb einer Partition und nur mit Dateien funktioniert?
Ja, in diesem Fall ist das Absicht
Ok. :) -dnh -- I used to be convinced that MicroSquish shipped crap because they simply didn't give a flying fuck as long as the sheep kept buying their shit. Now, I'm convinced that they really do ship the best products they are capable of writing, and *that's* tragic. -- John C. Randolph, on MS Quality.