• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Pimp your Terminal

HPF-84E

Member
Wie der Titel es schon aussagt kann hier alles an zusätzlichen Änderungen und Tools die einem das Arbeiten
mit dem Terminal vereinfacht oder weil es „Cool" ist der Öffentlichkeit gezeigt werden.
Da ich keinen derartigen Thread hier gefunden habe fange ich einfach mal an.

Der richtige Ort für solche Sachen ist die „bashrc" im Benutzerverzeichnis.
Code:
nano ~/.bashrc

Meine Einträge die ich am Ende der schon vorgegebenen Einträge angehangen habe:
Code:
#prompt extras
cd ~/
PS1="\[\033[0;36m\]\t\[\033[1;35m\]^\[\033[0;32m\]\u\[\033[1;34m\]@\[\033[0;32m\]\h\[\033[1;35m\]:
\[\033[1;33m\]\w\[\033[0m\]\[\033[1;34m\]>\[\033[0m\] "

#bash history completition
source /usr/share/bash-completion/completions/fzf
source /usr/share/bash-completion/completions/fzf-key-bindings

Erklärung:
Mich hat es immer gestört im Terminal als Startordner den Schreibtisch zu sehen da habe ich
nämlich keine Dateien. Und ich möchte mich sofort durch die Dateistruktur hangeln ohne erst mit einen
„cd ~"
dorthin zu navigieren. Daher der Befehl
„cd ~/"
Jetzt reich ein „ls".

Danach habe ich mir einen farbigen Prompt mit Zeilenumbruch gebastelt. Das kleine „w" ziemlich am Ende
bewirkt die komplette Pfadangabe im Prompt.

Als nächstes habe ich mir noch das kleine Helferchen fzf installiert. Das ist sogar im Repo. vorhanden.
Code:
zypper se fzf
oder bei GitHub https://github.com/junegunn/fzf
Die Bashhistory ist einfach zu umständlich. Jetzt reicht ein Strg+r und evt. ein passendes Wort um an
den Befehl zu kommen den man so dringend benötig einem aber einfach nicht einfallen will. Probiert es aus.

Ein Beispiel als Screenshot: https://paste.opensuse.org/66063673

Jetzt dürft Ihr. :D
 

abgdf

Guru
Vielleicht sowas (in "/usr/local/bin"):
Code:
#!/usr/bin/perl

use warnings;
use strict;

# lsdir.pl - Lists the directories in a directory.

# Set color to light blue:
print "\033[1;34m";

my @a = <*>;
for my $i (@a) {
    if (-d $i) {
        print "$i\n";
    }
}

# Reset color:
print "\033[0m";

und

Code:
#!/usr/bin/perl

use warnings;
use strict;

# lstxts.pl - Lists the text-files in a directory.

my @a = <*>;
my $check;
for my $i (@a) {
    $check = `file "$i"`;
    if ($check =~ m/text/) {
        print "$i\n";
    }
}
 
OP
H

HPF-84E

Member
Hi,

@ abgdf
Da hast du ja direkt einen raus gehauen, :D

Also ich verstehe jetzt nur das du dir beim ersten Skript die Ordner in Blau anzeigen lässt mit „lsdir". „lsdir" ist aber doch eigentlich
Code:
ls -d
?

Beim zweiten Skript lässt du Dir die Textdateien anzeigen in einen Ordner.
Das scheint mir ein kompletter Eigenbau zu sein.
Im Skripten bin ich nicht so auf der Höhe.

Wenn man sowas brauch im z.B. Berufsleben ist es bestimmt eine große Hilfe. :thumbs:
 

abgdf

Guru
HPF-84E schrieb:
@ abgdf
Da hast du ja direkt einen raus gehauen, :D
Ja. :)
HPF-84E schrieb:
Also ich verstehe jetzt nur das du dir beim ersten Skript die Ordner in Blau anzeigen lässt mit „lsdir". „lsdir" ist aber doch eigentlich
Code:
ls -d
?
Hmm, bekommst Du bei Dir mit
Code:
ls -d
die Verzeichnisse im aktuellen Verzeichnis? Geht bei mir irgendwie nicht (weiß nicht, warum nicht) (daher das Skript).
HPF-84E schrieb:
Beim zweiten Skript lässt du Dir die Textdateien anzeigen in einen Ordner.
Das scheint mir ein kompletter Eigenbau zu sein.
:) Sind ja nur ein paar Zeilen. Perl-Skripte schreiben ist ein Hobby von mir. Hier sind ein paar andere, auch ein paar Zeilen länger. Ach ja, ein Tutorial zu Perl hab' ich auch geschrieben. Gibt aber auch gute Bücher.

Aber hier geht es ja um bash. Z.B. starte ich das Terminal mit
Code:
xterm +sb -font '-*-terminus-*-*-*-*-24-*-*-*-*-*-*-*' -fg white -bg black
Mit dem "Terminus"-Font, von dem es ein Paket in SuSE gibt (soweit ich weiß).
Große Schrift, weiß auf schwarz. Sonst könnte ich das Terminal gar nicht vernünftig benutzen.
Die komplizierte Zeile gebe ich natürlich nicht jedes Mal ein, sondern das ist auf einen Hotkey gelegt - bei LXDE in der Datei "~/.config/openbox/lxde-rc.xml".

Code:
shopt -s direxpand
in "~/.bashrc" (bzw. in "/etc/bash.bashrc.local") bewirkt bei mir, daß Verzeichnisnamen in bash mit TAB expandiert werden. Hängt aber von der bash-Version ab, ob die Zeile benötig wird. In neueren Versionen könnte das schon automatisch aktiviert sein.
 
OP
H

HPF-84E

Member
abgdf schrieb:
Hmm, bekommst Du bei Dir mit
Code:
ls -d
die Verzeichnisse im aktuellen Verzeichnis? Geht bei mir irgendwie nicht (weiß nicht, warum nicht) (daher das Skript)
Stimmt. Das bekomme ich so auch nicht hin.

Aber hier geht es ja um bash. Z.B. starte ich das Terminal mit
Code:
xterm +sb -font '-*-terminus-*-*-*-*-24-*-*-*-*-*-*-*' -fg white -bg black

Nöö, auch Fish oder zfsh oder .... Egal. Alles worauf man selber Stolz ist oder meint daß mal der Öffentlichkeit zu zeigen. ;)

Gräfin Klara schrieb:
abgdf schrieb:
Ach ja, ein Tutorial zu Perl hab' ich auch geschrieben.
Ich möchte das gerne nocheinmal festhalten.
Deine Dokumente sind in Format, Grammatik und Inhalt
Sehr gut!

Lässt sich auch noch nach der Übersetzung durch Chrome im Browser flüssig lesen.
Bevor man sich abends irgendeinen Dünnpfiff in der Glotze anschaut kann man ja auch mal so eine Einleitung aus Spaß an der Sache abarbeiten. Ob man dann weiter machen will ist ja jedem seine eigene Entscheidung.

Grüße
 

Christina

Moderator
Teammitglied
HPF-84E schrieb:
Mich hat es immer gestört im Terminal als Startordner den Schreibtisch zu sehen da habe ich
nämlich keine Dateien. Und ich möchte mich sofort durch die Dateistruktur hangeln ohne erst mit einen
„cd ~"
dorthin zu navigieren.
Wie wird bei dir das KDE-Teminal oder xterm gestartet? Mit einer Startoption wie z.B. das hier?
Code:
konsole --workdir /home/"user"/Schreibtisch
Code:
cd ~/Schreibtisch; xterm
Ein benutzerdefinierter Befehl oder ein Arbeitsverzeichnis in den Einstellungen (Profile) von Konsole-KDE?
12333023.png
 
OP
H

HPF-84E

Member
Ja, Guten 'nabend,

Christina schrieb:
Ein benutzerdefinierter Befehl oder ein Arbeitsverzeichnis in den Einstellungen (Profile) von Konsole-KDE?
12333023.png

Ja da hast du ja jetzt meinen wunden Punkt gefunden, hahahah. :D

Ich benutze XFCE mit dem XFCE-Terminal. Da habe ich nochmal nachgeschaut. In den Einstellungen/Allgemein die Option „Arbeitsverzeichnis" aktiviert. Meinen Eintrag in der „.bashrc" auskommentiert und siehe da ; alles Bombe.

Ja, sorry. Manchmal bin ich einfach zu kompliziert. :irre:

So geht es auch.
Dank Dir für den Zaunpfahl. :thumbs:

Grüße
 

Christina

Moderator
Teammitglied
HPF-84E schrieb:
Ich benutze XFCE mit dem XFCE-Terminal. Da habe ich nochmal nachgeschaut. In den Einstellungen/Allgemein die Option „Arbeitsverzeichnis" aktiviert. Meinen Eintrag in der „.bashrc" auskommentiert und siehe da ; alles Bombe.
Ich meine das anders.
Wenn du das xfce4-terminal startest und der Prompt erscheint im Verzeichnis ~/Schreibtisch,
dann rufst du das Terminal vielleicht mit einer Startoption auf und weißt das gar nicht.
Code:
xfce4-terminal --default-working-directory=/home/"user"/Schreibtisch

Bei mir ist die Option [Arbeitsverzeichnis] in den XFCE4-Terminal-Einstellungen leer, und der Prompt erscheint trotzdem in /home/christina/, also ~/. Das ist auch beim GNOME-Terminal und xterm so.
Ich möchte damit sagen, du hast irgendwo in deinen lokalen Einstellungen etwas geändert und stolperst jetzt darüber.

Lege doch mal testweise einen neuen Benutzer an und starte damit xfce4-terminal und xterm. Dann sollte der Prompt auch bei ~/ erscheinen, statt in ~/Schreibtisch.
 
OP
H

HPF-84E

Member
Christina schrieb:
Ich möchte damit sagen, du hast irgendwo in deinen lokalen Einstellungen etwas geändert und stolperst jetzt darüber.

Ja, über die Verküpfung „Terminal hier starten".
Wenn Blödheit weh tuen würde hätte ich an diesem Tag schon Morgens vor Schmerzen geschrien. :blush:

Aber ich möchte mich für das Interesse bedanken. :thumbs:

Um mit dem Eigentlichen Sinn dieses Threads fortzufahren hier mein Terminator:
https://paste.opensuse.org/85641102

Das Problem beim Terminator zu Anfang war das eine Option um Befehle pro Fenster einzustellen sind diese er aber nicht angenommen hat. Nach lesen der Manpage und der Anleitung auf der Hersteller Webseite war ich auch nicht schlauer. Irgendwo im Internetz habe ich dann die Lösung gefunden. Die Befehle müssen natürlich der entsprechenden Shell übergeben werden. In meinen Fall einfach der Bash.
Hier die entscheidenden Zeilen aus der Terminatorconfig:
Code:
    [[[terminal3]]]
      type = Terminal
      parent = child2
      order = 0
      profile = default
      uuid = a541d53d-3861-4a29-97f0-9928da34c73e
      command = screenfetch;bash
    [[[terminal4]]]
      type = Terminal
      parent = child2
      order = 1
      profile = default
      uuid = 546677ed-1c6d-4dba-a756-9785a2ee8dbe
      command = cd ~/bin/btm/ && ./btm;bash

Mehr habe ich bisher gar nicht gemacht und der Rest sind alles Grundeinstellungen des Systems.
Jetzt würde ich schon mal gerne was von Euch sehen. :D
 

Christina

Moderator
Teammitglied
HPF-84E schrieb:
Ja, über die Verküpfung „Terminal hier starten".
Das geht im thunar Filemanager per Rechtsklick an jeder Stelle im Verzeichnisbaum, auch auf dem Schreibtisch.
Ich habe mir aber in die XFCE-Leiste einen Starter eingefügt. Ich benutze nur den.
Code:
cat ~/.config/xfce4/panel/launcher-10/276452415012.desktop
[Desktop Entry]
…
Exec=xfce4-terminal --geometry 100x33+463+255
…

xterm starte ich als
Code:
xterm -bg lightyellow
lg Christina
 
OP
H

HPF-84E

Member
'nabend

Lustige Entdeckung die ich vorhin gemacht hatte. Ich hatte ein wenig Langeweile und habe einfach im Terminal ein paar Buchstaben ins Terminal eingetippt und dann 2 mal die Tabulaturtaste gedrückt. Beim Buchstaben y sind mir zwei Befehle aufgefallen die ich ausprobieren wollte.

Code:
yes

Bei einer Eingabe ohne weitere Zeichenkette wird einfach unendlich der Buchstabe y geschrieben. Abbruch mit strg+c. Wofür man diese Tool braucht? Keine Ahnung!

als nächstes habe ich

Code:
you

ausprobiert. Daraufhin wurde ich direkt aufgefordert mein Root-Passwort einzugeben. Gefragt, getan und es öffnet sich zu meiner Überraschung das Grafische Fenster von Yast-Online-Update.
Ja, klar! Yast-Online-Update. Könnte man auch von alleine darauf kommen. Lustig finde ich da das in keiner Manpage etwas zu dieser Kurzform etwas verzeichnet ist.

Was man alle finden oder entdecken kann beim stöbern im Terminal. :lol:
 

Jägerschlürfer

Moderator
Teammitglied
Ich bin kein Freund von gepimpten Terminals.
Ich mag es eher klassisch neutral.
Zum Einsatz kommt bei mir tilix, da ich hier problemlos mehrere Terminalfenster in einem Fenster öffnen kann. Entweder nebeneinander oder untereinander.

Was mich aber bewegt hat, hier zu antworten ist das navigieren im Terminal selbst.

Bei mir ist es so, dass wenn ich im Teminal unterwegs bin, ich weiss, wo die Datei liegt, die ich bearbeiten oder anschauen möchte.
Das Terminal startet bei mir direkt im Homeverzeichnis. Liegt die Datei im Homeverzeichnis in einem weiteren Ordner, geht es mit
Code:
cd Documents/
direkt dorthin. Wobei ich hier nicht den kompletten Ordnernamen eingebe, sondern die TAB Taste hierfür nutze.

Liegt die Datei in einem anderen Verzeichnis, das sich nicht im Homeverzeichnis befindet, wird direkt in das gewünschte Verzeichnis mittels z.b.
Code:
cd /usr/share/wallpapers/
gewechselt. Auch hier kommt wieder die TAB Taste ins Spiel, damit ich weniger tippen muss.

Navigieren in einem Terminal ist also ganz einfach und geht sehr schnell.
 
OP
H

HPF-84E

Member
Jägerschlürfer schrieb:
Was mich aber bewegt hat, hier zu antworten ist das navigieren im Terminal selbst.

Gute Idee. :thumbs: Ich habe da auch was.

Navigieren mit Leerzeichen im Dateinamen

Da haben viele Nutzer Probleme mit beim navigieren im Terminal.

Beispiel:
Ich habe viele ähnlich aufgebaute Dateinamen im Ordne Musik mit Leerzeichen im Namen
Code:
cd M
# 1xTab
~/Musik
# Alle Dateien auflisten
~/Musik ls   #Liste gekürzt (ich habe da natürlich mehr drin)
Tower Of Power - Direct Plus! - 1997
Tower Of Power - East Bay Grease - 1970
Tower Of Power - Great American Soulbook - 2009
Tower Of Power - Hipper Than Hip, Yesterday, Today, & Tomorrow, Live (1974) - 2013
Tower Of Power - In The Slot - 1975
Tower Of Power - Live And In Living Color - 1976
Tower Of Power - Monster On A Leash - 1991
Tower Of Power - Oakland Zone - 2003
Tower Of Power - Power - 1987
Tower Of Power - Rhythm & Business - 1997
Tower Of Power - Souled Out - 1995
Tower Of Power - Soul Side Of Town - 2018
Tower Of Power - Soul Vaccination, Live - 1999
Tower Of Power - Soul With A Capital ''S'', The Best Of Tower Of Power - 2002
Tower Of Power - T.O.P (1993)
# Ich möchte jetzt die 2. von sehr ähnlich benannten Dateien im unteren Teil der Liste
cd Tow
# wieder 1xTab und schwubs
cd Tower\ Of\ Power\ -\
#hier negiert cd die Leerzeichen und wartet auf weitere Zeichen also:
cd Tower\ Of\ Power\ -\Soul\ V
#wieder 1xTab und Enter
~/Musik/Tower Of Power - Soul Vaccination, Live - 1999
#Ordnerinhalt anzeigen
~/Musik/Tower Of Power - Soul Vaccination, Live - 1999>ls
01. Soul With A Captial S.mp3
02. I Like Your Style.mp3
03. Soul Vaccination.mp3
04. Down To The Night Club (Bump City).mp3
05. Willin' To Learn.mp3
06. Souled Out.mp3
07. Diggin' On James Brown.mp3
08. To Say The Least You're The Most.mp3
09. You Strike My Main Nerve.mp3
10. Can't You See (You Doin' Me Wrong).mp3
11. You Got To Funkifize.mp3
12. So Very Hard To Go.mp3
13. What Is Hip.mp3
14. You're Still A Young Man.mp3
15. So I Got To Groove.mp3
Back.jpg
Front.jpg
#und wieder zurück ins Home
cd
#oder nur einen Ordner zurück mit
cd ..

Das ganze funktioniert auch mit mv oder rm u.s.w.
Mit ein bisschen Übung ist man genauso schnell wie mit einen Grafischen Dateimanager
 

abgdf

Guru
HPF-84E schrieb:
Navigieren mit Leerzeichen im Dateinamen
Damit mich solche Dateinamen gar nicht erst nerven, habe ich ein Skript, das die Leerzeichen in Unterstriche ändert (und noch einige andere Änderungen vornimmt). Es bennnet also die Datei um. Es heißt "lower.pl".
 
abgdf schrieb:
Hmm, bekommst Du bei Dir mit
Code:
ls -d
die Verzeichnisse im aktuellen Verzeichnis? Geht bei mir irgendwie nicht (weiß nicht, warum nicht) (daher das Skript).

Nur der Vollständigkeit halber:

Code:
ls -l | grep ^d

... würde das auch ohne weiteres Scripten können. Aber ich finde das schon toll was du machst und werde mich auch mal intensiver mit dieser Art der Automatisierung befassen.

Da ich gerne mit "alacarte" in den xfce-Menüs herumfrickele, das aber nicht völlig narrensicher ist, habe ich mir dafür eine kleine Sicherungsfunktion eingebaut:
Code:
alias alac='cp -v ~/.config/menus/xfce-applications.menu ~/.config/menus/xfce-applications.menu.bak; alacarte'

Und es gibt noch etliche weitere Kurzbefehle, die ich mir gebastelt habe, die aber sehr spezifisch sind und sich auf Tools in Arch Linux beziehen. Daher werde ich sie hier nicht breittreten.

VLG
Stephan
 

Christina

Moderator
Teammitglied
abgdf schrieb:
Hmm, bekommst Du bei Dir mit
Code:
ls -d
die Verzeichnisse im aktuellen Verzeichnis? Geht bei mir irgendwie nicht (weiß nicht, warum nicht)
Code:
ls -d
ls -ld
zeigt das aktuelle Verzeichnis ( ./ )
Code:
ls -d Musik/
ls -ld Musik/
zeigt das Verzeichnis Musik
Code:
ls -d */
ls -d ./*/
ls -d ../*/
ls -d ~/*/
ls -d Musik/*/
zeigt die Unterverzeichnisse (die erste Ebene)
Code:
ls -d Musik/*/*/
find Musik/ -maxdepth 2 -type d
zeigt die Unterverzeichnisse (die ersten zwei Ebenen)
Code:
find Musik/ -type d
zeigt alle Unterverzeichnisse (alle Ebenen)
 
Oben