unsere besten emails
Registrierung
Teammitglieder
Zur Startseite
Mitgliederliste
Suche
Kalender
Häufig gestellte Fragen
Zum Portal

Dedies-Board » Linux » FAQs » Kleine Tipps für die bash » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Kleine Tipps für die bash
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »

Haui Haui ist männlich
Haudegen


images/avatars/avatar-123.jpg

Dabei seit: 29.04.2005
Beiträge: 522

Level: 43 [?]
Erfahrungspunkte: 3.271.977
Nächster Level: 3.609.430

337.453 Erfahrungspunkt(e) für den nächsten Levelanstieg

Kleine Tipps für die bash Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Ich nutze hier mal die Gelegenheit um ein paar nützliche Tipps & Tricks für die bash vorzustellen. Erweiterungen von anderen Usern sind selbstverständlich willkommen.

  • Zunächst stellen wir sicher, dass die Datei /etc/inputrc die folgenden Zeilen enthält:
    code:
    1:
    2:
    
     "\e[5~": history-search-backward
     "\e[6~": history-search-forward

    Ist das geschehen, so können wir nach einem erneuten Einloggen früher eingegebene Befehle sehr leicht vervollständigen - so blättert beispielsweise ein f<Bild-Auf> durch alle Befehle in der History, die mit f anfangen.


  • Folgendes fügen wir an geeigneter Stelle in die ~/.bashrc ein:
    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    
    up() {
    	if [ $# == 0 ]
    	then 
    		cd ..
    		return	
    	fi
    	if [ "${1//[^0-9]/}" != "$1" ]
    	then
    		echo "Not a number"
    		return
    	fi
    	STRING=""
    	for (( i=0; i<$1 ; i++ ))
    	do 
    		STRING="$STRING../"
    	done
    	cd $STRING
    }

    Danach genügt ein source ~/.bashrc oder das Öffnen einer neuen shell um die Funktion nutzen zu können. up verhält sich genauso wie cd .., d.h es wechselt ins Elternverzeichnis des aktuellen Verzeichnisses. up N springt N Verzeichnisse nach oben, wobei N eine ganzzahlige Zahl sein muss.


  • unbekannter als die prominente for i in... Schleife dürfte die unter gewissen Umständen auch recht nützliche C-Version der for-Schleife sein: for ((i=0; i<foo; i++)); do bar; done
    Wichtig sind hierbei die doppelten Klammern!


  • Dateien suchen leicht gemacht - die erste Funktion sucht case sensitive, die zweite case insensitive nach Dateinamen, die das übergebene Suchmuster enthalten. Dazu müssen beide Funktionen in die ~/.bashrc geschrieben werden.
    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    
    ffs(){
    	if [ $# -gt 0 ]
    	then
    		find -name "*$1*"
    	else
    		echo "argument required"
    	fi
    }
    ffi(){
    	if [ $# -gt 0 ]
    	then
    		find -iname "*$1*"
    	else
    		echo "argument required"
    	fi
    }

    Verwendung: ffs Suchwort bzw ffi Suchwort


  • Das hier spart ein wenig Schreibarbeit, wenn man auf der Suche nach einem bestimmten Prozess ist. Auch hierbei handelt es sich um eine Funktion für die ~/.bashrc.
    code:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    
    pf(){
    	if [ $# -gt 0 ]
    	then
    		ps aux | grep TTY | grep -v "grep TTY"
    		ps aux | grep -i "$1" | grep -v "grep -i $1"
    	else
    		echo "argument required"
    	fi
    }

    Verwendung: pf Prozess - Groß- u. Kleinschreibung des Prozesses spielen keine Rolle.

  • Eine kleine Erweiterung für den bash-Promt, auf die ich nicht mehr verzichten will - die Anzeige der aktuellen Uhrzeit. Um das zu bewerkstelligen muss man nur die Variable PS1entsprechend anpassen.
    Dazu sehen wir und zunächst den aktuellen Prompt an:
    code:
    1:
    
    user@host ~ $ echo $PS1

    Die Ausgabe könnte wie folgt aussehen:
    code:
    1:
    
    \[\033[01;30m\]\u@\h\[\033[01;34m\] \w $\[\033[00m\]

    Das sieht jetzt etwas unübersichtlich aus, ist aber nur halb so schlimm - verstehen müssen wir es eigentlich nicht, dennoch der Vollständigkeit halber ein kurzer Überblick:

  • \[ startet eine Sequenz von Zeichen, die nicht angezeigt werden.
  • \033 Ein ASCII-Escape-Charakter, kann auch als \e geschrieben werden.
  • [01;30m\] 01 bedeutet hier, dass der Text fett dargestellt wird, 30 ist die Farbe (hier grau), m beendet die Escape-Sequenz und \] "schließt" das \[ von oben.
  • \u@ Name des aktuellen Users gefolgt von einem @-Zeichen.
  • \h der Hostname.
  • \[\033[01;34m\] das gleiche wie oben, bloß mit einer anderen Farbe.
  • \w $ das aktuelle Verzeichnis gefolgt von einem Dollar-Zeichen.
  • \[\033[00m\] wieder das gleiche wie schon die vergangen 2 Male - diese Einstellungen beziehen sich dann auf die Darstellung der eingetippten Kommandos.

    Aber um zurück zum Thema zu kommen, die aktuelle Uhrzeit können wir einfügen, indem wir - z.B. am Anfang der PS1-Variable - ein " \A" einfügen. Da das aber noch reichlich unspektakulär ist, umschließen wir das Ganze mit eckigen Klammern und färben es grün ein:
    code:
    1:
    
    user@host ~ $ PS1="\[\033[0;32m\]\[[\A] $PS1"

    Die Farbe/Darstellung ist natürlich austauschbar. sofern alles passt, können wir unsere .bashrc entsprechend anpassen:
    code:
    1:
    2:
    3:
    4:
    5:
    
    #vorher
    PS1='\[\033[01;30m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
    #nachher
    PS1='\[\033[0;32m\][\A] \]\[\033[01;30m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
    

    Selbstverständlich gibt es neben \w, \A etc. noch weitere Parameter, diese finden sich in der Manpage der Bash unter PROMPTING


Mehr demnächst...


Letztes Update: 10.11.08


__________________
Have you tried turning it off and on again?

/join #dedies-board.de
25.08.2008 20:19 Haui ist offline E-Mail an Haui senden Homepage von Haui Beiträge von Haui suchen Nehmen Sie Haui in Ihre Freundesliste auf Jabber Screennamen von Haui: haui45@jabber.ccc.de

rich20 rich20 ist männlich
Routinier


images/avatars/avatar-219.gif

Dabei seit: 22.01.2006
Beiträge: 287

Level: 39 [?]
Erfahrungspunkte: 1.722.019
Nächster Level: 1.757.916

35.897 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Hallo Haui,

ist es recht, wenn man hier antwortet, oder sollte dies extra geschehen.
Habe deinen Tipp befolgt,

"\e[5~": history-search-backward
"\e[6~": history-search-forward

waren schon vorhanden und nachdem ich die # weggenommen habe, funktioniert die Suche mit <Bild-Auf>.
danach habe ich den Code für "Dateien suchen leicht gemacht " eingefügt.

Aber irgendwie funktioniert es bei mir nicht. Es lassen sich danach keine Buchstaben mehr in die Konsole eintippen.

Ubuntu 8.04
25.08.2008 23:23 rich20 ist offline E-Mail an rich20 senden Beiträge von rich20 suchen Nehmen Sie rich20 in Ihre Freundesliste auf

Haui Haui ist männlich
Haudegen


images/avatars/avatar-123.jpg

Dabei seit: 29.04.2005
Beiträge: 522

Level: 43 [?]
Erfahrungspunkte: 3.271.977
Nächster Level: 3.609.430

337.453 Erfahrungspunkt(e) für den nächsten Levelanstieg

Themenstarter Thema begonnen von Haui
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Zitat:
Original von rich20
Hallo Haui,

ist es recht, wenn man hier antwortet, oder sollte dies extra geschehen.

Hallo,

hier ist es ok. Fröhlich

Zitat:
Aber irgendwie funktioniert es bei mir nicht. Es lassen sich danach keine Buchstaben mehr in die Konsole eintippen

So wie sich das anhört, hast du die Funktionen in die /etc/inputrc geschrieben, das ist aber falsch!
Alle Funktionen müssen in die bashrc, also für deinen User z.B. /home/rich/.bashrc geschrieben werden. Sorry, wenn ich das nicht deutlich genug geschrieben habe. Hab's jetzt oben ergänzt.


__________________
Have you tried turning it off and on again?

/join #dedies-board.de
25.08.2008 23:31 Haui ist offline E-Mail an Haui senden Homepage von Haui Beiträge von Haui suchen Nehmen Sie Haui in Ihre Freundesliste auf Jabber Screennamen von Haui: haui45@jabber.ccc.de

rich20 rich20 ist männlich
Routinier


images/avatars/avatar-219.gif

Dabei seit: 22.01.2006
Beiträge: 287

Level: 39 [?]
Erfahrungspunkte: 1.722.019
Nächster Level: 1.757.916

35.897 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Nein Haui,

du hast es schon ganz deutlich geschrieben.
Es war wieder mal ein richtig schlampiger Fehler beim Lesen von mir. dumm

Man sollte erst genau lesen, bevor man fragt.

Danke für den Tipp, es funktioniert wunderbar! Winken
25.08.2008 23:49 rich20 ist offline E-Mail an rich20 senden Beiträge von rich20 suchen Nehmen Sie rich20 in Ihre Freundesliste auf

Haui Haui ist männlich
Haudegen


images/avatars/avatar-123.jpg

Dabei seit: 29.04.2005
Beiträge: 522

Level: 43 [?]
Erfahrungspunkte: 3.271.977
Nächster Level: 3.609.430

337.453 Erfahrungspunkt(e) für den nächsten Levelanstieg

Themenstarter Thema begonnen von Haui
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Seltsam...früher wurden bearbeitete Beiträge wieder "nach oben geschickt" - hast du da was geändert, dedie? großes Grinsen



Geht wieder großes Grinsen

Gruß dedie


__________________
Have you tried turning it off and on again?

/join #dedies-board.de
10.11.2008 22:19 Haui ist offline E-Mail an Haui senden Homepage von Haui Beiträge von Haui suchen Nehmen Sie Haui in Ihre Freundesliste auf Jabber Screennamen von Haui: haui45@jabber.ccc.de

rich20 rich20 ist männlich
Routinier


images/avatars/avatar-219.gif

Dabei seit: 22.01.2006
Beiträge: 287

Level: 39 [?]
Erfahrungspunkte: 1.722.019
Nächster Level: 1.757.916

35.897 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Hallo Haui,

gibt es eventuell auch eine vereinfachte, vor Allem genauere Textsuche für die Shell? Die integrierte Suche in Ubuntu habe ich nach einer Stunde entnervt abgebrochen.

Aber auch die Shell liefert nichts vernünftiges. Suchbegriff war "regelmäßig". Die Ergebnisse unten zeigen mir lediglich an, dass es irgendwo in meinem Userkonto Dateien mit diesen Texten gibt.

:~$ find /home/rich -type f -name "*.html" -exec grep regelmäßig {} \;
Die Pinsel wechselt regelmäßig rechte und linke Hand,
<p>regelmäßig ausgeführt werden sollen,</p>
:~$

oder

:~$ find /home/rich -type f -name "*.php" -exec grep regelmäßig {} \;
Es empfiehlt sich, die Homepage regelmäßig zu besuchen, um Updates und
Es empfiehlt sich, die Homepage regelmäßig zu besuchen, um Updates und
Es empfiehlt sich, die Homepage regelmäßig zu besuchen, um Updates und
:~$

Nachtrag: Tippfehler ausgebessert

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rich20: 11.12.2008 02:21.

11.12.2008 02:04 rich20 ist offline E-Mail an rich20 senden Beiträge von rich20 suchen Nehmen Sie rich20 in Ihre Freundesliste auf

Haui Haui ist männlich
Haudegen


images/avatars/avatar-123.jpg

Dabei seit: 29.04.2005
Beiträge: 522

Level: 43 [?]
Erfahrungspunkte: 3.271.977
Nächster Level: 3.609.430

337.453 Erfahrungspunkt(e) für den nächsten Levelanstieg

Themenstarter Thema begonnen von Haui
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Hallo,

mit deiner Befehlszeile bist du ja fast schon am Ziel. Um die Dateinamen mit auszugeben kannst du statt grep einfach grep -H verwenden. Das Ergebnis sieht dann etwa so aus:
Zitat:
/home/rich/index.html: Die Pinsel wechselt regelmäßig rechte und linke Hand,
/home/rich/wasauchimmer.html: <p>regelmäßig ausgeführt werden sollen,</p>


Falls du nur an den Dateinamen interessiert bist, bietet sich grep -l an, das zeigt dir die Namen der Dateien an, die den Suchbegriff mindestens einmal enthalten.


HTH


__________________
Have you tried turning it off and on again?

/join #dedies-board.de
11.12.2008 14:10 Haui ist offline E-Mail an Haui senden Homepage von Haui Beiträge von Haui suchen Nehmen Sie Haui in Ihre Freundesliste auf Jabber Screennamen von Haui: haui45@jabber.ccc.de

rich20 rich20 ist männlich
Routinier


images/avatars/avatar-219.gif

Dabei seit: 22.01.2006
Beiträge: 287

Level: 39 [?]
Erfahrungspunkte: 1.722.019
Nächster Level: 1.757.916

35.897 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden   Zum Anfang der Seite springen

Hallo Haui,

funktioniert wunderbar. Diese Dateien hätte ich ansonsten nie im Leben gefunden.
Da frage ich mich, für was es diese integrierte Suchfunktion gibt, wenn diese bei "Enthält den Text" nach einer Stunde noch nichts gefunden hatte.

Mit deinem Befehl war das Ganze nach nicht mal 40 Sekunden erledigt. yes

Vielen vielen Dank!
11.12.2008 14:53 rich20 ist offline E-Mail an rich20 senden Beiträge von rich20 suchen Nehmen Sie rich20 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Dedies-Board » Linux » FAQs » Kleine Tipps für die bash

Impressum|Boardregeln


secure-graphic.de
Board Blocks: 368.799 | Spy-/Malware: 5.599 | Bad Bot: 1.542 | Flooder: 281.746 | httpbl: 6.555
CT Security System 10.1.7 © 2006-2022 Security & GraphicArt

Ja, auch Dedies-Board verwendet Cookies. Hier erfahrt ihr alles zum Datenschutz
Verstanden;