Einträge zu Tag: Bash
Zeilen mir mehr als ... Zeichen finden
Erstellt: 19.04.2011 13:29
Zwischendurch kann es nötig sein in einem File überlange Zeilen zu finden.
Nach längerem Basteln mit "read" und "wc" blieb es dann doch bei "grep":
$ grep -vnE '^.{0,80}$' file
In diesem Beispiel werden alle Zeilen ausgegeben mit mehr als 80 Zeichen.
Bearbeitungsdatum einer Datei manipulieren
Erstellt: 18.04.2011 08:25
Manchmal kann es nötig sein, zum Beispiel für irgendwelche Tests, dass man das Bearbeitungsdatum einer Datei manipuliert.
Hier eine ganz normale Datei, montags Morgen erstellt:
$ ls -lh zeitreise
-rw-r--r-- 1 usr grp 1.1M 2011-04-18 08:06 zeitreise
Und nun schicken wir sie auf die Zeitreise mit Hilfe von "touch":
$ touch -t 190212242355 zeitreise
Et voilà, die Datei befindet sich auf einmal im Jahre 1902, kurz vor der Geisterstunde an Heilighabend:
$ ls -lh zeitreise
-rw-r--r-- 1 usr grp 1.1M 1902-12-24 23:55 zeitreise
...wenn das mal kein Historisches Dokument ist.
Das Format:
$ touch -t [CC]YYMMDDhhmm[.ss] file
CC - Das Jahrhundert, kann weggelassen werden
YY - Das Jahrzehnt, zweistellig
MM - Der Monat, zweistellig
DD - Der Tag, zweistellig
hh - Die Stunde, zweistellig
mm - Die Minute, zweistellig
.ss - Die Sekunden, zweistellig, mit einem Punkt getrennt, kann weggelassen werden.
-bash: /dev/null: Permission denied beim SSH-Login
Erstellt: 14.04.2011 15:48
Die Fehlermeldung "-bash: /dev/null: Permission denied" beim Login per SSH oder ähnliche Meldungen können entstehen, wenn die Dateirechte von /dev/null nichtmehr korrekt sind.
Kontrolliert man /dev/null zeigt sich folgendes Bild:
# ls -lh /dev/null
crw------- 1 root adm 1, 3 Mär 30 16:48 /dev/null
Korrekt wäre:
# ls -lh /dev/null
crw-rw-rw- 1 root root 1, 3 Mär 30 16:48 /dev/null
Wie kann das passieren?
Die sind die Standardrechte wie sie syslog-ng anlegt für Logfiles. syslog-ng gibt allen Logfiles die voreingestellten Rechte, so auch dem Verzeichnis /dev/null, wenn man direkt darauf verweist.
destination d_drop { file("/dev/null"); };
Dies umgeht man, indem man Nachrichten welche man verwerfen will ohne definierte Destination angibt:
destination d_drop { };
/dev/null repariert man am einfachsten wieder indem man es löscht und korrekt wieder anlegt:
# rm /dev/null
# mknod -m 0666 /dev/null c 1 3
Und schon ist wie Welt wieder in Ordnung:
# ls -lh /dev/null
crw-rw-rw- 1 root root 1, 3 Mär 30 16:52 /dev/null
Datei Zeilenweise auslesen in Bash
Erstellt: 14.04.2011 15:17
Ein simpler Einzeiler mit "while" um eine Datei in Bash Zeilenweise auszulesen:
$ while read line; do Befehl $line; done < file.txt
Jede Zeile aus dem Textfile wird nacheinander in die Variable "line" eingelesen und kann benutzt werden.
Email mit Anhang aus der Konsole versenden
Erstellt: 16.02.2011 08:56
Es kann vorkommen, dass man aus der Konsole heraus gerne eine Email mit Anhang versenden würde.
Handelt es sich um eine Textdatei, kann man diese noch einfach in das Email anfügen.
$ mail empfaenger@domain.tld -s "Betreff" < /pfad/textdatei.txt
Will man allerdings eine Datei, welche nicht Textbasiert ist, sondern ein PDF oder ähnliches aus der Konsole heraus versenden, reichen diese Mittel nichtmehr.
In diesem Fall erweist sich "biabam" als sehr einfach und nützlich.
Installieren und fertig:
# apt-get install biabam
Absenden:
$ echo "Mail mit Anhang" | biabam /pfad/tolles.pdf -s "Betreff" empfaenger@domain.tld
...und weg ist es!