brainknows.de

brain blogt… (jetzt auch!)

Durchsuche Beiträge mit Schlagwörtern bash

Hallo ihr,

unter Debian hab ich bis gestern noch folgendes Problem mit der Bash-Completion gehabt:

Habe ich z.B. das Verzeichnis /home/eggdrop aufrufen wollen und gab in /home/

cd egg --> tabulator

ein, erhielt ich

cd egg-sh: <( compgen -d -- 'egg' ): Datei oder Verzeichnis nicht gefunden

Nach ein wenig Recherche im Internet bin ich bzgl. dieses Problems fündig geworden:

Dem User wurde als Standard-Shell beim Anlegen /bin/sh zugeteilt, bash-completion erwartet wohl jedoch /bin/bash.
Um das Problem temporär zu lösen, muss man einfach als betreffender User

bash

in der Konsole eingeben.

Für eine dauerhafte Lösung ist die Datei /etc/passwd als root zu editieren:

$ su
# vi /etc/passwd

Nach dem entsprechenden User suchen und am Ende der Zeile /bin/sh zu /bin/bash ändern.

Bei mir sähe das ganze wie folgt aus:
Vorher:

eggdrop:x:2002:2002::/home/eggdrop/:/bin/sh

Nachher:

eggdrop:x:2002:2002::/home/eggdrop/:/bin/bash

Um auch zukünftig angelegten Usern gleich /bin/bash zuzuweisen, ist mit root-Rechten die Datei /etc/default/useradd zu bearbeiten:

$ su
# vi /etc/default/useradd

Hier die Zeile

SHELL=/bin/sh

in

SHELL=/bin/bash

ändern und schon klappts auch beim nächsten anzulegenden User.

Morgen!

Da ich öfter mal hunderte von Dateien nach einem bestimmten Textstrings durchsuchen muss, stand ich öfter vor der Frage, wie man das am besten in der Konsole gestalten könnte. mit cat | grep kann man zwar die Dateien durchsuchen und Ergebnisse darstellen lassen. Jedoch funktioniert das ganze nicht, wenn das Verzeichnis Unterordner hat. Auch werden zwar die Ergebnisse angezeigt, aber nicht, in welchen Dateien genau der String vorhanden ist. Folgender Befehl schafft da Abhilfe:

grep -r "STRING" *

Eigentlich ganz einfach, oder?