Wir arbeiten schnell und effizient in der Konsole

Im Netzwerk finden Sie viele Tipps für ein effektives Arbeiten in der Konsole. In den meisten dieser Artikel sprechen die Autoren über Plattitüden wie "Hotkeys lernen" oder " sudo !! führt den letzten Befehl unter Sudo aus". Ich werde Ihnen sagen, was zu tun ist, wenn Sie die sudo !! bereits gelernt haben und etwas über sudo !! wissen sudo !! .


Das Terminal sollte sofort starten


Wie lange brauchen Sie, um das Terminal zu starten? Und noch einer? Mein Terminal wurde lange Zeit mit Strg + Alt + T gestartet und ich fand es schnell. Als ich jedoch von Openbox zu i3 wechselte, begann ich, das Terminal über Win + Enter auszuführen. Diese Kombination war in der Standardkonfiguration enthalten. Und weißt du was? Ich denke nicht mehr, dass Strg + Alt + T schnell ist.


Natürlich liegt der Witz nicht im Millisekundengewinn, sondern in der Tatsache, dass Sie das Terminal auf der Ebene der Reflexe öffnen, ohne es zu bemerken.


Wenn Sie häufig im Terminal arbeiten, aber nach der Maus greifen, um es zu starten, versuchen Sie, einen praktischen Hotkey einzurichten. Ich bin sicher, es wird dir gefallen.


Zsh statt Bash


Ich weiß, dass dies ein Hollywood-Thema ist. Zsh sollte mindestens für drei Funktionen installiert werden: erweiterte automatische Vervollständigung, Tippfehlerkorrektur und Vervollständigung mehrerer Pfadnamen: Wenn eine Registerkarte /u/s/d in /usr/share/doc verwandelt. Arch Linux hat in seiner Installations-CD lange auf zsh umgestellt. Ich hoffe, dass zsh eines Tages die Standard-Shell in Ubuntu wird. Dies wird ein historischer Moment sein.


Der Einstieg in zsh ist überhaupt nicht schwierig. Installieren Sie es über den Paketmanager und nehmen Sie eine vorgefertigte Konfiguration vor. Ich empfehle die von Arch Linux verwendete Konfiguration:


 wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc 

Es bleibt nur die "Standard-Shell" in zsh zu ändern und sich anzumelden.


 chsh -s $(which zsh) 

Alles, arbeite weiter, als wäre nichts passiert.


Was sollte eine Shell-Eingabeaufforderung sein


Die Shell-Eingabeaufforderung ist der kleine Text, der vor Ihrem Befehl im Terminal angezeigt wird. Es muss an Ihren Arbeitscharakter angepasst werden. Stellen Sie es sich wie ein Armaturenbrett vor. Geben Sie dort nützliche Informationen ein, damit Sie besser navigieren können. Machen Sie es sich bequem, besonders wenn Sie es jeden Tag sehen!


Die Shell-Eingabeaufforderung sollte das aktuelle Verzeichnis der Shell anzeigen. Wenn das aktuelle Verzeichnis nicht in der Shell-Eingabeaufforderung angezeigt wird, müssen Sie es im Kopf behalten und es regelmäßig mit dem pwd überprüfen. Nicht so. Denken Sie an wichtigere Dinge und verschwenden Sie keine Zeit mit dem pwd .


Wenn Sie regelmäßig von Ihrem Benutzer zu root wechseln, benötigen Sie eine Angabe des aktuellen Benutzers. Oft ist es nicht wichtig, den spezifischen Benutzernamen, sondern dessen Status (regulär oder root). Der einfachste Weg, dies zu tun, ist Farbe: rote Shell-Eingabeaufforderung an der Wurzel, grün am Benutzer. Sie werden also niemals die Wurzelschale mit der üblichen verwechseln.


Wenn Sie über ssh eine Verbindung zu den Servern herstellen, müssen Sie Ihre lokale Shell irgendwie von der Server-Shell unterscheiden. Zu diesem Zweck sollte die Shell-Eingabeaufforderung den Hostnamen oder besser noch einen Indikator für die SSH-Verbindung enthalten.


Die Shell-Eingabeaufforderung kann den Rückkehrcode des letzten Befehls anzeigen. Ich möchte Sie daran erinnern, dass ein Null-Rückkehrcode bedeutet, dass der Befehl erfolgreich abgeschlossen wurde, ungleich Null - der Befehl ist fehlgeschlagen. Der Rückkehrcode für den letzten Befehl kann mit echo $? , aber alles auf der Tastatur zu tippen ist zu lang. Besser, die Shell-Eingabeaufforderung informiert Sie, wenn der Befehl fehlgeschlagen ist.


Wenn Sie mit Git-Repositorys arbeiten, ist es hilfreich, den Repository-Status in der Shell-Eingabeaufforderung anzuzeigen: den aktuellen Zweig und den Status des Arbeitsverzeichnisses. Auf diese Weise sparen Sie Zeit bei den Befehlen git status und git branch und werden beim Festschreiben nicht in der Verzweigung verwechselt.


Jemand fügt seiner Shell-Eingabeaufforderung einen Uhr- oder virtuellen Terminalnamen (tty) oder beliebige Kringel hinzu. Das ist alles überflüssig. Besser mehr Platz für Teams lassen.


Meine Shell-Eingabeaufforderung unter verschiedenen Bedingungen sieht folgendermaßen aus:



Der Screenshot zeigt, dass der Titel des Terminalfensters eine ähnliche Aufgabe ausführt. Dies ist auch ein Teil des Dashboards und kann auch angepasst werden.


Wie implementiere .zshrc das alles in deiner .zshrc ? Die PROMPT Variable ist für die linke Eingabeaufforderung und RPROMPT für die rechte RPROMPT . Die EUID Variable hilft dabei, den Status des Benutzers (regulär oder EUID und das Vorhandensein einer SSH_CLIENT Verbindung zu SSH_CLIENT - SSH_CLIENT oder SSH2_CLIENT . Wir erhalten folgendes Werkstück:


 if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi else # not SSH if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi fi 

Ich gebe nicht ausdrücklich den Code an, der zum Kopieren und Einfügen bereit ist, da eine bestimmte Implementierung Geschmackssache ist. Wenn Sie sich nicht darum kümmern möchten und mein Screenshot Sie nicht abschreckt , können Sie die Konfiguration vom Github übernehmen .


Zusammenfassung:


  • Das erforderliche Minimum ist das aktuelle Verzeichnis.
  • Die Mundschale sollte deutlich sichtbar sein.
  • Ein Benutzername enthält keine Nutzdaten, wenn Sie immer unter demselben Benutzer sitzen.
  • Der Hostname ist nützlich, wenn Sie über SSH eine Verbindung zu Servern herstellen. Nicht erforderlich, wenn Sie immer auf demselben Computer arbeiten.
  • Das erfolglose Ausführen des letzten Befehls ist hilfreich, um sofort zu sehen.
  • Der Status des Git-Repositorys spart Zeit bei den Befehlen git status und git branch und ist ein zusätzlicher Schutz gegen den Narren.

Aktive Nutzung des Befehlsverlaufs


Die meisten Befehle in Ihrem Leben geben Sie mehrmals ein, was bedeutet, dass es bequem wäre, sie aus dem Verlauf zu ziehen, anstatt sie erneut einzugeben. Alle modernen Muscheln können sich an die Geschichte der Teams erinnern und bieten verschiedene Möglichkeiten, nach dieser Geschichte zu suchen.


Vielleicht wissen Sie bereits, wie Sie mit Strg + R in die Geschichte eintauchen können. Es hat zwei wesentliche Nachteile:


  1. Um die Suche zu starten, muss das Eingabefeld leer sein. Das heißt, Im Fall "Ich habe angefangen, einen Befehl einzugeben - ich habe mich an die Suche erinnert" müssen Sie löschen, was gestartet wurde, drücken Sie Strg + R und wiederholen Sie die Eingabe. Das ist sehr lange.
  2. Die Vorwärtssuche funktioniert standardmäßig nicht, weil Strg + S stoppt das Terminal.

So funktioniert die schnellste und bequemste Suche:


  1. Sie beginnen ein Team zu tippen
  2. Erinnerst du dich an die Suche?
  3. Sie drücken einen Hotkey und die Shell bietet Teams aus der Geschichte, die genau gleich begonnen haben.

Beispielsweise möchten Sie ein lokales Verzeichnis mit rsync mit einem Remote-Verzeichnis synchronisieren. Sie haben dies bereits vor ein paar Stunden getan und möchten das Team aus der Geschichte herausholen. Geben Sie rsync , drücken Sie ein- oder zweimal eine bestimmte Kombination, und der gewünschte Befehl kann ausgeführt werden. Sie müssen den Verlaufssuchmodus nicht zuerst aktivieren, die Shell-Eingabeaufforderung ändert sich nicht in (reverse-i-search)': springt nirgendwo etwas. Sie iterieren einfach über die Befehle aus der Geschichte. Genau wie bei den Pfeilen ↑ ↓ iterieren Sie über zuvor eingegebene Befehle, nur mit einem Filter am Anfang des Befehls. Es ist verdammt praktisch und spart viel Zeit.


In Fisch- und Ipython-Muscheln ist eine solche Suche bereits Pfeilen zugeordnet. Ich denke, dass viele nur wegen eines solchen Pfeilverhaltens auf Fisch umgestiegen sind.


In bash und zsh funktioniert diese Suche standardmäßig nicht. Sie müssen sie manuell aktivieren. Ich habe PgUp für die Rückwärtssuche und PgDown für die Vorwärtssuche konfiguriert. Es ist weit, nach ihnen zu greifen, aber ich bin bereits daran gewöhnt. Vielleicht werde ich in Zukunft etwas näheres zuweisen, zum Beispiel Strg + P und Strg + N.


Für bash müssen Sie /etc/inputrc oder ~/.inputrc ein paar Zeilen ~/.inputrc :


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

Wenn Sie zshrc fertig zshrc , ist die Suche dort höchstwahrscheinlich bereits PgUp und PgDown zugeordnet. Wenn nicht, fügen Sie ~/.zshrc


 bindkey "^[[5~" history-beginning-search-backward # pg up bindkey "^[[6~" history-beginning-search-forward # pg down 

Es ist merkwürdig, dass ich im Laufe der Zeit angefangen habe, Teams zu schreiben, unter der Annahme, dass ich sie später aus der Geschichte abholen würde. Hier sind ein paar Tricks:


Teams kombinieren , die immer nacheinander ausgeführt werden


 ip link set eth1 up && dhclient eth1 mkdir /tmp/t && mount /dev/sdb1 /tmp/t 

Mit absoluten Pfaden anstelle von relativen Pfaden können Sie einen Befehl aus einem beliebigen Verzeichnis ausführen:
vim ~/.ssh/config anstelle von vim .ssh/config , systemd-nspawn /home/chroot/stretch anstelle von systemd-nspawn stretch usw.


Wildcard-Maskierung macht Teams vielseitiger. Normalerweise mit chmod und chown .


 chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq 

Hotkeys


Ich werde das notwendige Minimum auflisten.


Alt +. - ersetzt das letzte Argument des vorherigen Befehls. Sie können auch die Sequenz !$ .
Strg + A, Strg + E - Gehen Sie zum Anfang bzw. Ende des bearbeiteten Befehls.
Strg + U, Strg + Y - schneide alles in die Zwischenablage und füge es aus der Zwischenablage ein. Es hilft, wenn Sie einen komplexen Befehl drucken und dann verstehen, dass Sie einen anderen Befehl davor ausführen müssen. Hmm, wo soll der aktuelle Eingang ausgeblendet werden? Hier und versteck dich.
Strg + W - löscht ein Wort links vom Cursor. Wenn geklemmt und gehalten, wird die Befehlszeile schnell gelöscht. Standardmäßig wird der Text nicht gelöscht, sondern im Puffer abgelegt (für Strg + Y).
Strg + K - wird vom Cursor bis zum Zeilenende gelöscht. Strg + A, Strg + K löscht schnell die Befehlszeile.
PgUp, PgDown, Strg + R - Suche nach Verlauf.
Strg + L - Löschen Sie das Terminal.


Reaktionsfähigkeit der Tastatur


Ich erzähle Ihnen von einer kleinen Einstellung, mit der Sie schneller scrollen, sich im Text bewegen oder löschen können. Was machen wir, wenn wir etwas lange löschen wollen? Halten Sie die Rücktaste gedrückt und beobachten Sie, wie der Cursor zurückläuft und zusätzliche Buchstaben aufnimmt. Was passiert damit? Wenn die Rücktaste gedrückt wird, wird ein Zeichen gelöscht, es gibt eine leichte Verzögerung, dann wird die automatische Wiederholung ausgelöst: Die Rücktaste entfernt die Zeichen nacheinander, als würden sie ständig darauf klopfen.


Ich empfehle, die Verzögerung und die automatische Wiederholungsrate an Ihre Fingergeschwindigkeit anzupassen. Die Verzögerung, bevor eine automatische Wiederholung erforderlich ist, besteht darin, dass Sie nur ein Zeichen löschen möchten. Dadurch haben Sie Zeit, den Schlüssel loszulassen. Eine zu lange Verzögerung führt dazu, dass auf eine automatische Wiederholung gewartet wird. Nicht lange genug, um zu nerven, aber genug, um die Übertragung von Gedanken vom Kopf zum Computer zu verlangsamen. Je höher die Wiederholungsfrequenz, desto schneller wird der Text gelöscht und desto schwieriger ist es, diesen Vorgang rechtzeitig zu stoppen. Die Essenz der Einstellung besteht darin, einen Mittelweg zu finden.


Also der magische Befehl:


 xset r rate 190 20 

190 - die Dauer der Verzögerung in Millisekunden,
20 - Häufigkeit in der Anzahl der Wiederholungen pro Sekunde.


Ich empfehle, mit diesen Werten zu beginnen und die Verzögerung schrittweise zu verringern, bis falsch positive Ergebnisse auftreten, und dann etwas zurück. Wenn Sie eine sehr kurze Verzögerung einstellen, kann die Tastatur nicht mehr verwendet werden. Sie müssen den X-Server oder den gesamten Computer neu starten. Also sei vorsichtig.


Fügen Sie diesen Befehl irgendwo zum X-Autostart hinzu, um die Parameter zu speichern.


Fortschrittsbalken


Ich muss ziemlich oft lange Prozesse starten: eine Art mutiges Backup, Kopieren über das Netzwerk, Auspacken / Packen von Archiven, Erstellen von Paketen usw. Normalerweise starte ich einen solchen Prozess, wechsle zu einer anderen Aufgabe und überprüfe regelmäßig, ob mein langer Prozess beendet ist. Es kommt vor, dass ich in die Arbeit eintauche und sie vergesse. Die Lösung besteht darin, eine Benachrichtigung über den Abschluss des Prozesses hinzuzufügen, die mich aus der Trance führen wird.


Hierfür können Sie verschiedene Tools verwenden: notify-send, dzen2, beep, aplay. Alle von ihnen sind auf ihre Weise gut, arbeiten aber nicht mit ssh. Daher verwende ich einen Terminal-Piepton:


 long-running-command; echo $'\a' 

Bei der ASCII-Codierung gibt es ein 0x7-Zeichen namens bell . Es wurde entwickelt, um mit einem PC-Lautsprecher zu piepen. Ein PC-Lautsprecher ist nicht auf dem neuesten Stand, nicht überall und im Kopfhörer immer noch nicht zu hören. Einige Terminals verwenden daher die sogenannte visuelle Glocke. Ich benutze urxvt und dadurch wird die visuelle Glocke auf der Dringlichkeitsflagge eingeschaltet. In diesem Fall sagt Ihnen ein Fenster, dass es Aufmerksamkeit benötigt.


Sie können jetzt überprüfen, wie Ihr Terminal auf das Klingelsymbol reagiert:


 sleep 3; echo $'\a' 

Sie haben drei Sekunden Zeit, um zu einem anderen Fenster zu wechseln. Andernfalls funktioniert es möglicherweise nicht.


Leider ist eine visuelle Klingel über Dringlichkeit nicht in allen Terminals verfügbar. Ich habe die beliebtesten überprüft.


Terminalvisuelle Glocke über Dringlichkeit
konsolein den Einstellungen enthalten
urxvtist da
xfce4-terminalin den Einstellungen enthalten
xtermNein
cooler Retro-BegriffNein
lxterminalNein
Gnom-TerminalNein

Das Schreiben von echo $'\a' hat zu lange echo $'\a' , daher habe ich einen Alias wake .


Aliase


Die Befehle cp , scp und rm sollten immer rekursiv funktionieren. Das Argument -r ist nur ein schlechtes Erbe! Es gibt noch eine Entschuldigung für cp :


 cp * foodir 

Es werden nur Dateien nach foodir kopiert, und mit der Option -r wird angenommen, dass Sie sich entschieden haben, foodir nach sich selbst zu kopieren. Aber wie oft brauchen Sie diese Funktion?


rm und scp haben überhaupt keine Ausreden, sie sind nur langweilig! Der Befehl mkdir hat eine ähnliche Situation mit dem Schalter -p . Fühlen Sie sich also frei, ~/.zshrc


 alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p' 

Wow, wie habe ich vorher ohne das gelebt! Sie können noch weiter gehen und -f zu rm hinzufügen, jedoch auf eigene Gefahr und Gefahr. Ich halte mich vorerst zurück.


Sie verwenden höchstwahrscheinlich bereits verschiedene Variationen von ls , da dies die beliebtesten Aliase sind.


 alias ls='ls -F --color=auto' alias la='ls -A --color=auto' alias ll='ls -l --color=auto -h' alias lla='ll -A --color=auto -h' 

Nun, Farbe grep ist viel schöner als farblos:


 alias grep='grep --colour=auto' 

Vergessen Sie nicht, dass Aliase in Skripten nicht funktionieren! Dort müssen alle Schlüssel angegeben werden.


Blinddruckverfahren


Egal wie banal es auch sein mag, mit der blinden Zehn-Finger-Druckmethode können Sie schneller drucken. Anfangs wird es schwierig, aber mit der Zeit werden Sie auf beispiellose Geschwindigkeiten beschleunigen.


Die Beherrschung der Blinddruckmethode ist am besten im Urlaub oder im Urlaub, wenn Sie niemand überstürzt. Im Lernprozess kann auf keinen Fall nicht eilen. Ihre Aufgabe ist es, sich zu merken, wo sich der Buchstabe befindet. Und nicht so sehr mit dem Gehirn als mit den Muskeln. Besser langsam aber fehlerfrei tippen als schnell mit Fehlern. Denken Sie daran: Meister erreichen hohe Geschwindigkeiten nicht auf Kosten schneller Finger, sondern weil sie keine Fehler machen.


Lassen Sie sich zunächst nicht von Keyboardern mitreißen. Es ist psychologisch schwierig, während des Wettbewerbs ruhig zu bleiben. Lernen Sie auf Simulatoren. Es ist gut, wenn der Simulator Wörter anbietet, die mental ausgesprochen werden können. Ich habe auf vse10 und Typingstudy Online-Simulatoren studiert. Der berühmte Simulator „Solo on the Keyboard“ kam mir dumm vor.


Es lohnt sich, mit der mittleren Reihe von Fyvaprolge zu beginnen. Erst wenn Sie sich daran erinnern, wo sich der Schlüssel befindet, lohnt es sich, weiterzumachen. Erst danach.


Machen Sie Pausen. Ruhe dein Gehirn und deine Finger aus. Fühlen Sie, dass Fehler eingedrungen sind - es ist Zeit, eine Pause zu machen.


Zuerst beherrschte ich die Blinddruckmethode auf Russisch und begann mit der Beschleunigung. Jetzt verbessere ich meine Kenntnisse im englischen Layout.

Source: https://habr.com/ru/post/de425137/


All Articles