Einlesen von Eingaben ohne gleichzeitige Ausgabe in der Kommandozeile mittels read und stty

Manchmal hat man den Fall, dass man vom Benutzer Eingaben entgegen nehmen will, welche nicht gleichzeitig in der Kommandozeile ausgegeben werden sollen. So beispielsweise im Fall einer Passworteingabe, die nicht im Log landen soll. Hierzu schaltet man einfach mittels stty die Ausgabe ab und nach dem Einlesen wieder ein. 1 2 3 4 echo "Dein Passwort:" stty -echo read PASSWD stty echo In der Variable $PASSWD ist nun die Eingabe abgelegt....

Rekursives Suchen und Löschen von Verzeichnissen unter Linux und Unix

Ein Kollege hat mich gerade gefragt, wie man unter Linux von einem Verzeichnis ausgehend in einem Befehl alle Unterverzeichnisse mit einem bestimmten Namen löschen kann. Da ichs auch spontan nicht im Kopf hatte und vermutlich mir auch nicht gleich wieder merken kann, hier die Lösung: find . -name WVXYZ -type d -exec rm -rf {} \; Wobei WVXYZ auch durch andere Namen zu ersetzen ist. Lässt man “-type d” weg, so werden auch alle Dateien mit dem Namen WVXYZgelöscht....

Crash von fdisk unter busybox mit Fehler "Segmentation fault"

Seit langer Zeit melden sich immer wieder Leser bei mir, dass bei ihnen bei bestimmten USB-Sticks das Programm fdisk mit der Meldung, dass es auf einen “Segmentation fault” gestoßen sei, abgestürzt sei. Anscheinend ist dies ein Bug des Input-Handlings, weshalb mir ein Leser den folgenden Weg für den Aufruf von fdisk schickte: cat | fdisk /dev/sdc So bescheuert wie dieser Aufruf aussieht, er behebt den Fehler interessanterweise. Danke an Martin K....

Qemu 0.9.1 unter Gentoo installieren

Für ein neues Projekt habe ich heut auf Gentoo das Virtualisierungstool Qemu in der Version 0.9.1 benötigt. Blöderweise wird bei der Installation folgender Fehler geworfen: `* qemu requires gcc-3 in order to build and work correctly please compile it switching to gcc-3. We are aware that qemu can guess a gcc-3 but this feature could be harmful.` Also musste ein GCC3 her: emerge -av =sys-devel/gcc-3.4.6* Als dieser installiert war, konnte ich per gcc-config zunächst mal die verfügbaren GCC-Versionen einsehen:...

Wie findet man unter Linux heraus, welches Programm auf eine Datei zugreift?

Genau diese Frage habe ich mir heute gestellt, da mir nicht klar war, welcher Prozess eine bestimmte Datei erstellt hat und auf diese ständig geschrieben hat. Eine Lösung ist die Nutzung von fuser: 1 fuser logfile.log 1 logfile.log: 8278 Mit dieser kyptischen Nummer kann man wenig anfangen, also noch ein ps außenherum: 1 ps -p `fuser logfile.log` 1 2 3 logfile.log: PID TTY TIME CMD 8278 ? 00:02:39 DasProgramm In diesem Fall hat also DasProgramm die Datei im Zugriff gehabt....

Wie findet man unter Linux heraus, welcher Nutzer auf eine Datei zugreift?

Genau diese Frage habe ich mir heute gestellt, da mir nicht klar war, welcher Nutzer eine bestimmte Datei erstellt hat und auf diese ständig geschrieben hat. Eine Lösung ist die Nutzung von fuser: 1 fuser -u logfile.log 1 logfile.log: 8278(mysql) In diesem Fall hat also mysql die Datei im Zugriff gehabt.

Linux: Befehl für die TOP10 der am häufigsten verwendeten Programme

Gerade eben bin ich über die Frage gestolpert, welches Programm ich am häufigsten auf der Kommandozeile verwende. Die History ist ganz nett, aber einzeln durchzählen ist nicht so mein Fall… Daher hier ein kleines Snippet: 1 history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -rn|head -10 Bei mir kam dabei auf meinem frischen Root raus, dass ich in den letzten zwei Wochen folgende Programme verwendet habe: 141 nano 98 ls 57 cd 27 rm 14 emerge 12 rcnginx 12 cat 9 /etc/init....

Linux: Ausgabe einer Konfigurationsdatei ohne Kommentarzeilen mittels grep

Gerade habe ich einen Weg gesucht, alle Zeilen einer Datei, die keine Kommentare sind, auszugeben. Für meine Notizen hier das Ergebnis: 1 grep ^[^#] DATEINAME Der reguläre Ausdruck ^[^#] findet alle Zeilen, die kein # zu beginn haben und lässt diese ausgeben.

Ändern des Home-Verzeichnisses eines Nutzers unter Linux

Im Conceptronic CH3SNAS habe ich das Home-Verzeichnis des root-Nutzers von dem internen Speicher auf den USB-Stick umgelegt, damit ich etwas Platz zum arbeiten und für ein paar Einstellungen habe. Für das verlegen des Home-Verzeichnisses in der passwd ist ein einfacher Befehl vonnöten: 1 usermod -d /pfad/zum/neuen/homeverzeichnis/ nutzername

Rekursives Suchen und Ersetzen mit 'sed'

Funktioniert relativ einfach. Wechsle ins gewünschte Verzeichnis in dem Rekursiv gesucht werden soll, anschließend: 1 find . -type f -exec sed -ie 's!SUCHSTRING!ERSETZENSTRING!g' {} \; Punkte sollten dabei escaped werden (. => .) Warum ich das ganze gebraucht habe? Vor ein paar Tagen ist ein größeres Java-Projekt, an dem ich beteiligt war, zu Ende gegangen. In diesem Projekt habe ich unter anderem auch ein Trac  sowie ein Subversion-Repository gestellt. Da das Projekt nun zu Ende ist und ich gerne potentionelle Sicherheitslücken ausschließe, habe ich mich dazu entschlossen, eine statische Version (da sowieso keine Änderungen mehr vonnöten waren) des Trac’s abzulegen....