Mailinglist Archive: opensuse-de (2226 mails)
| < Previous | Next > |
Re: Bashscript: Gelöscht e Dateien anzeigen
- From: David Haller <lists@xxxxxxxxxx>
- Date: Thu, 29 Jun 2006 13:23:16 +0200
- Message-id: <20060629112316.GA3925@xxxxxxxxxxxxxxxxxx>
Hallo,
Am Don, 29 Jun 2006, Al Bogner schrieb:
>Am Donnerstag, 29. Juni 2006 11:46 schrieb David Haller:
>
>Hallo,
>
>> Am Mit, 28 Jun 2006, Al Bogner schrieb:
>> >Am Mittwoch, 28. Juni 2006 17:54 schrieb David Haller:
>> >> Am Mit, 28 Jun 2006, Al Bogner schrieb:
>> >> >Etwas Bauchweh habe ich mit dem Quoting. In diesem Fall kann garantiert
>> >> >werden, dass keine Leerzeichen vorkommen. Wie müsste ich quoten, wenn
>> >> > das Verzeichnis Leerzeichen enthält?
>> >> >
>> >> >Nochmals meine bereits o.a. Frage, wie erreiche ich eine
>> >> > Kontrollausgabe beim Ablauf des Scripts?
>> >> >
>> >> >TEST_DIR="$MYDIR""/TEST_"`basename \`pwd\` | cut -c9-30`
>> >> >find $MYDIR -type d -regex ".*$TEST_DIR.*" -print0 | xargs -r -0 rm -r
>> >>
>> >> pwd="`pwd`"
>> >> TEST_DIR="${MYDIR}/TEST_`basename \"$pwd\" | cut -c9-30`"
>> >> find "$MYDIR" ...
>> >>
>> >> Oder:
>> >>
>> >> TEST_DIR="${MYDIR}/TEST_$(basename $(pwd) | cut -c9-30)"
>> >> find "$MYDIR" ...
>
>Ich bin mir nicht sicher, ob das so passt.Ich habe es einfach in
>meinem Script ersetzt, das ja vorher das tat, was ich wollte und
>danach wurde das Vereichnis "darüber" auch gelöscht. Die 1. Variante
>muss ich noch testen. Mit dem u.a. Vorschlag kann ich die
>Auswirkungen ja nun kontrollieren, ohne wirklich zu löschen. Es ist
>kein Problem, wenn etwas ungewollt gelöscht wird, es ist aber
>zeitaufwendig richtig zurückzusichern.
Hm. Ersetze mal das '| cut -c9-30' durch ein '| cat'. 'cut -c' ist
eben generell anfaellig, falls Zeichenpositionen nicht mehr passen.
Wie sieht denn `pwd` aus? Und was davon willst du wegschneiden?
>> [..]
>> >Wie könnte man noch absichern, dass die Variablen nicht leer sein
>> >dürfen, dass also nicht als User ein rm -r / entstehen kann.
>>
>> test -z "$TEST_DIR" && exit 1
>
>Nun ja, das mache ich ja schon, aber wenn $TEST_DIR=\, dann wird
>munter darauf los gelöscht und der User muss neu angelegt werden.
Das war nur die Antwort auf den ersten Teil: "nicht leer" ;)
>> Hierbei ist aber das quoten essentiell! Sonst sieht die shell ein
>> 'test -z && exit 1'
>> soll aber ein 'test -z "" && exit 1' sehen.
>>
>> Alternativ und "unempfindlicher":
>>
>> test -n "$TEST_DIR" || exit 1
>> test "x${TEST_DIR}" = "x" && exit 1
>>
>> und als zusaetzlichen(!) Test noch:
>
>Ja, in dieser Richtung überlege ich.
>
>> test "x${TEST_DIR}" != "x/" || exit 1
>
>Wofür steht das x oder ist das nur eine Sicherheismaßnahme?
Letzteres.
>> Achso, zum ausgeben noch eine Variante:
>>
>> {
>> find ... -print0 | tee /dev/stderr | xargs ...
>> } 2>&1 | tr '\0' '\n'
>
>Genau sowas wollte ich. Ist ja simpel, man muss nur daran denken.
*g*
-dnh
--
119: Dateimanager
cd, ls, cp, mv (Ulli Horlacher)
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-unsubscribe@xxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-help@xxxxxxxx
Am Don, 29 Jun 2006, Al Bogner schrieb:
>Am Donnerstag, 29. Juni 2006 11:46 schrieb David Haller:
>
>Hallo,
>
>> Am Mit, 28 Jun 2006, Al Bogner schrieb:
>> >Am Mittwoch, 28. Juni 2006 17:54 schrieb David Haller:
>> >> Am Mit, 28 Jun 2006, Al Bogner schrieb:
>> >> >Etwas Bauchweh habe ich mit dem Quoting. In diesem Fall kann garantiert
>> >> >werden, dass keine Leerzeichen vorkommen. Wie müsste ich quoten, wenn
>> >> > das Verzeichnis Leerzeichen enthält?
>> >> >
>> >> >Nochmals meine bereits o.a. Frage, wie erreiche ich eine
>> >> > Kontrollausgabe beim Ablauf des Scripts?
>> >> >
>> >> >TEST_DIR="$MYDIR""/TEST_"`basename \`pwd\` | cut -c9-30`
>> >> >find $MYDIR -type d -regex ".*$TEST_DIR.*" -print0 | xargs -r -0 rm -r
>> >>
>> >> pwd="`pwd`"
>> >> TEST_DIR="${MYDIR}/TEST_`basename \"$pwd\" | cut -c9-30`"
>> >> find "$MYDIR" ...
>> >>
>> >> Oder:
>> >>
>> >> TEST_DIR="${MYDIR}/TEST_$(basename $(pwd) | cut -c9-30)"
>> >> find "$MYDIR" ...
>
>Ich bin mir nicht sicher, ob das so passt.Ich habe es einfach in
>meinem Script ersetzt, das ja vorher das tat, was ich wollte und
>danach wurde das Vereichnis "darüber" auch gelöscht. Die 1. Variante
>muss ich noch testen. Mit dem u.a. Vorschlag kann ich die
>Auswirkungen ja nun kontrollieren, ohne wirklich zu löschen. Es ist
>kein Problem, wenn etwas ungewollt gelöscht wird, es ist aber
>zeitaufwendig richtig zurückzusichern.
Hm. Ersetze mal das '| cut -c9-30' durch ein '| cat'. 'cut -c' ist
eben generell anfaellig, falls Zeichenpositionen nicht mehr passen.
Wie sieht denn `pwd` aus? Und was davon willst du wegschneiden?
>> [..]
>> >Wie könnte man noch absichern, dass die Variablen nicht leer sein
>> >dürfen, dass also nicht als User ein rm -r / entstehen kann.
>>
>> test -z "$TEST_DIR" && exit 1
>
>Nun ja, das mache ich ja schon, aber wenn $TEST_DIR=\, dann wird
>munter darauf los gelöscht und der User muss neu angelegt werden.
Das war nur die Antwort auf den ersten Teil: "nicht leer" ;)
>> Hierbei ist aber das quoten essentiell! Sonst sieht die shell ein
>> 'test -z && exit 1'
>> soll aber ein 'test -z "" && exit 1' sehen.
>>
>> Alternativ und "unempfindlicher":
>>
>> test -n "$TEST_DIR" || exit 1
>> test "x${TEST_DIR}" = "x" && exit 1
>>
>> und als zusaetzlichen(!) Test noch:
>
>Ja, in dieser Richtung überlege ich.
>
>> test "x${TEST_DIR}" != "x/" || exit 1
>
>Wofür steht das x oder ist das nur eine Sicherheismaßnahme?
Letzteres.
>> Achso, zum ausgeben noch eine Variante:
>>
>> {
>> find ... -print0 | tee /dev/stderr | xargs ...
>> } 2>&1 | tr '\0' '\n'
>
>Genau sowas wollte ich. Ist ja simpel, man muss nur daran denken.
*g*
-dnh
--
119: Dateimanager
cd, ls, cp, mv (Ulli Horlacher)
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-unsubscribe@xxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-help@xxxxxxxx
| < Previous | Next > |