![Page 1: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/1.jpg)
Bashscripting 106
„Nichts für die Ewigkeit“
von
Marius Schwarz
© BS-LUG 2019
![Page 2: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/2.jpg)
Bashscripting 106
Basic Bashscripting
© BS-LUG 2019
![Page 3: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/3.jpg)
Bashscripting 106
Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt.
Um diese sorgfältig herzustellen, gibt es verschiedene Wege.
© BS-LUG 2019
![Page 4: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/4.jpg)
Bashscripting 106
Eigenschaften eines temporärer Dateinamens
© BS-LUG 2019
![Page 5: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/5.jpg)
Bashscripting 106
Eigenschaften eines temporärer Dateinamens
1. Die Datei liegt im /tmp/
© BS-LUG 2019
![Page 6: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/6.jpg)
Bashscripting 106
Eigenschaften eines temporärer Dateinamens
1. Die Datei liegt im /tmp/
2. Der Dateiname hat ein Zufallselement
© BS-LUG 2019
![Page 7: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/7.jpg)
Bashscripting 106
Eigenschaften eines temporärer Dateinamens
1. Die Datei liegt im /tmp/
2. Der Dateiname hat ein Zufallselement
3. Der Dateiname enthält keine Sonderzeichen wie $%& etc.
© BS-LUG 2019
![Page 8: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/8.jpg)
Bashscripting 106
Eigenschaften eines temporärer Dateinamens
1. Die Datei liegt im /tmp/
2. Der Dateiname hat ein Zufallselement
3. Der Dateiname enthält keine Sonderzeichen wie $%& etc.
4. Er wird am Ende des Script wieder gelöscht!
© BS-LUG 2019
![Page 9: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/9.jpg)
Bashscripting 106
Die BASH Variable $RANDOM
...erzeugt laufend andere Zufallszahlen.
© BS-LUG 2019
t[root ~]# echo $RANDOM14663[root ~]# echo $RANDOM30598[root ~]# echo $RANDOM10168
![Page 10: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/10.jpg)
Bashscripting 106
aber wie macht man daraus einen Dateinamen?
© BS-LUG 2019
![Page 11: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/11.jpg)
Bashscripting 106
Als erstes fügen wir vorn mal /tmp/ ein,
dann brauchen wir noch einen Basisnamen für unsere Datei.
z.B. „/tmp/programmname...“
© BS-LUG 2019
![Page 12: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/12.jpg)
Bashscripting 106
Die $RANDOM Variable kann man in andere Strings einfach einbauen:
doppelt geht auch.
© BS-LUG 2019
[root ~]# echo "/tmp/.myprogsname.$RANDOM"/tmp/.myprogsname.18986[root ~]# echo "/tmp/.myprogsname.$RANDOM$RANDOM"/tmp/.myprogsname.890934248
![Page 13: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/13.jpg)
Bashscripting 106
Natürlich kann man den String auch in eine Variable schreiben:
© BS-LUG 2019
[root ~]# TEMPNAME="/tmp/myprogsname.$RANDOM"[root ~]# echo $TEMPNAME/tmp/myprogsname.23930
![Page 14: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/14.jpg)
Bashscripting 106
Im Script sieht das dann z.b. so aus:
© BS-LUG 2019
#!/bin/bash
TEMPNAME="/tmp/myprogsname.$RANDOM"
echo “Hagelsturm 2019“ > $TEMPNAMEecho “Inhalt von Tempdatei $TEMPNAME:“
cat $TEMPNAME
rm -f $TEMPNAME
![Page 15: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/15.jpg)
Bashscripting 106
Es geht aber auch völlig anders
© BS-LUG 2019
![Page 16: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/16.jpg)
Bashscripting 106
Es gibt einen Linuxbefehl namens mktemp:
© BS-LUG 2019
[root ~]# mktemp /tmp/test-XXXX/tmp/test-GEHi[root ~]# ls -ls /tmp/test-GEHi 0 -rw------- 1 root root 0 16. Okt 10:14 /tmp/test-GEHi[root ~]#
![Page 17: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/17.jpg)
Bashscripting 106
Mit mktemp lassen sich Dateien und Verzeichnisse sicher anlegen.
© BS-LUG 2019
![Page 18: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/18.jpg)
Bashscripting 106
mktemp prüft,
ob die Datei oder das Verzeichnis bereits existiert.
Das ist etwas, was wir in unserem Script nicht getan haben.
© BS-LUG 2019
![Page 19: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/19.jpg)
Bashscripting 106
In einem Script sieht das dann so aus:
© BS-LUG 2019
#!/bin/bash
TEMPNAME="$(mktemp /tmp/myprogsname.XXXXXX)"
echo “Hagelsturm 2019“ > $TEMPNAMEecho “Inhalt von Tempdatei $TEMPNAME:“
cat $TEMPNAME
rm -f $TEMPNAME
![Page 20: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/20.jpg)
Bashscripting 106
Was passiert,
wenn man das mit dem Löschen vergisst?
© BS-LUG 2019
![Page 21: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/21.jpg)
Bashscripting 106
© BS-LUG 2019
[root ~]# ll /tmp/insgesamt 180-rw------- 1 root root 57 31. Aug 00:00 dehydrated-05EXcq-rw------- 1 root root 176 26. Aug 00:00 dehydrated-2hU2qI-rw------- 1 root root 27 21. Sep 00:00 dehydrated-3ragJO-rw------- 1 root root 0 11. Okt 00:00 dehydrated-4f5Ntm-rw------- 1 root root 176 21. Aug 00:00 dehydrated-4qXl9V-rw------- 1 root root 57 11. Aug 00:00 dehydrated-5pGTdA-rw------- 1 root root 51 11. Sep 00:00 dehydrated-7rOFhp-rw------- 1 root root 0 11. Okt 00:00 dehydrated-8cl89p-rw------- 1 root root 51 11. Aug 00:00 dehydrated-AoyIsh-rw------- 1 root root 176 1. Sep 00:00 dehydrated-aUqfQU-rw------- 1 root root 51 6. Sep 00:00 dehydrated-CdqG0b-rw------- 1 root root 57 1. Sep 00:00 dehydrated-cMQISX-rw------- 1 root root 57 1. Aug 00:00 dehydrated-e0aOpY-rw------- 1 root root 330 26. Sep 00:00 dehydrated-f3eFxx-rw------- 1 root root 57 16. Aug 00:00 dehydrated-FGRjah-rw------- 1 root root 176 31. Aug 00:00 dehydrated-fqShhB-rw------- 1 root root 176 11. Sep 00:00 dehydrated-hDxMBX-rw------- 1 root root 176 6. Sep 00:00 dehydrated-icIvZi-rw------- 1 root root 330 28. Sep 23:16 dehydrated-j0zZgO-rw------- 1 root root 112 26. Sep 00:00 dehydrated-J4aKZD-rw------- 1 root root 51 1. Aug 00:00 dehydrated-kEiQQ7-rw------- 1 root root 27 28. Sep 23:16 dehydrated-LOVKQF-rw------- 1 root root 55 6. Okt 00:00 dehydrated-ME948G-rw------- 1 root root 57 11. Sep 00:00 dehydrated-MIdsVL-rw------- 1 root root 57 21. Aug 00:00 dehydrated-NAS60Z-rw------- 1 root root 55 11. Okt 00:00 dehydrated-Nw6eEp-rw------- 1 root root 57 26. Aug 00:00 dehydrated-nxNeI9-rw------- 1 root root 112 28. Sep 23:16 dehydrated-OdQwW9
Das könnte dann so aussehen: -rw------- 1 root root 27 26. Sep 00:00 dehydrated-R3dZxX-rw------- 1 root root 55 16. Okt 00:00 dehydrated-rxI2Ub-rw------- 1 root root 51 26. Aug 00:00 dehydrated-TYDw01-rw------- 1 root root 51 21. Aug 00:00 dehydrated-ugqgUC-rw------- 1 root root 51 1. Sep 00:00 dehydrated-vaXNJa-rw------- 1 root root 57 6. Sep 00:00 dehydrated-VWxfR6-rw------- 1 root root 51 6. Aug 00:00 dehydrated-vzkkXg-rw------- 1 root root 55 30. Sep 12:50 dehydrated-Wngimu-rw------- 1 root root 55 1. Okt 00:00 dehydrated-XqRxKP-rw------- 1 root root 57 6. Aug 00:00 dehydrated-xWr76C-rw------- 1 root root 51 16. Aug 00:00 dehydrated-Ys0BKN-rw------- 1 root root 51 31. Aug 00:00 dehydrated-zW8J15
![Page 22: Nichts für die Ewigkeit · Bashscripting 106 Temporäre Dateinamen gehören zu den nützlichen Dingen, die man in BashScripten sehr häufig benötigt. Um diese sorgfältig herzustellen,](https://reader036.vdokument.com/reader036/viewer/2022081408/605af659bc71375f5c5e9f67/html5/thumbnails/22.jpg)
Bashscripting 106
Ergo, nie das Aufräumen vergessen!
© BS-LUG 2019