GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Tipps für den Alltag an der Kommandozeile

Als Standard-Shell für viele der Linux- und Unix-Varianten enthält Bash eine Vielzahl von zu wenig genutzten Funktionen, sodass es schwierig war, sich zu entscheiden, was man diskutieren sollte. Letztendlich habe ich mich entschieden, mich auf Bash-Tipps zu konzentrieren, die die täglichen Aktivitäten erleichtern.

Als Berater sehe ich eine Vielzahl unterschiedlicher Umfelder und Arbeitsstile. Ich habe diese Erfahrung genutzt, um die Tipps auf vier große Kategorien einzugrenzen:Terminal- und Zeilentricks, Navigation und Dateien, Verlauf und hilfreiche Befehle. Diese Kategorien sind völlig willkürlich und dienen eher der Ordnung meiner eigenen Gedanken als irgendeiner endgültigen Einordnung. Viele der hier enthaltenen Tipps könnten subjektiv in mehr als eine Kategorie passen.

Hier sind ohne weiteres Umschweife einige der hilfreichsten Bash-Tricks, die mir begegnet sind.

Mit dem Bash-Verlauf arbeiten

Eine der besten Möglichkeiten, Ihre Produktivität zu steigern, besteht darin, zu lernen, den Bash-Verlauf effektiver zu nutzen. In Anbetracht dessen ist vielleicht eine der wichtigsten Optimierungen, die Sie in einer Mehrbenutzerumgebung vornehmen können, das Aktivieren des histappend Option zu Ihrer Shell. Führen Sie dazu einfach den folgenden Befehl aus:

shopt -s histappend 

Dadurch können mehrere Terminalsitzungen gleichzeitig in den Verlauf schreiben. In den meisten Umgebungen ist diese Option nicht aktiviert. Das bedeutet, dass Historien oft verloren gehen, wenn Sie mehr als eine einzelne Bash-Sitzung geöffnet haben (entweder lokal oder über SSH).

Eine weitere häufige Aufgabe besteht darin, den letzten Befehl mit sudo zu wiederholen . Angenommen, Sie möchten ein Verzeichnis mkdir /etc/ansible/facts.d erstellen . Wenn Sie kein Root sind, schlägt dieser Befehl fehl. Nach meinen Beobachtungen drücken die meisten Benutzer up Pfeil, scrollen Sie zum Anfang der Zeile und fügen Sie sudo hinzu Befehl. Es gibt einen einfacheren Weg. Führen Sie den Befehl einfach so aus:

sudo !!

Bash führt sudo aus und dann die Gesamtheit des vorherigen Befehls. So sieht es genau aus, wenn es nacheinander ausgeführt wird:

[user@centos ~]$ mkdir -p /etc/ansible/facts.d
mkdir: cannot create directory ‘/etc/ansible’: Permission denied

[user@centos ~]$ sudo !!
sudo mkdir -p /etc/ansible/facts.d

Wenn !! ausgeführt wird, wird der vollständige Befehl an das Terminal ausgegeben, damit Sie wissen, was gerade ausgeführt wurde.

Ähnlich, aber viel seltener verwendet, ist !* Abkürzung. Dies teilt Bash mit, dass Sie alle *Argumente* wollen aus dem vorherigen Befehl, der im aktuellen Befehl wiederholt werden soll. Dies kann für einen Befehl nützlich sein, der viele Argumente enthält, die Sie wiederverwenden möchten. Ein einfaches Beispiel ist das Erstellen einer Reihe von Dateien und das Ändern der Berechtigungen für sie:

[user@centos tmp]$ touch file1 file2 file3 file4
[user@centos tmp]$ chmod 777 !*
chmod 777 file1 file2 file3 file4

Es ist nur unter bestimmten Umständen praktisch, kann Ihnen aber einige Tastenanschläge ersparen.

Apropos Tastenanschläge speichern, lassen Sie uns über das Auffinden von Befehlen in Ihrem Verlauf sprechen. Die meisten Benutzer werden etwa so vorgehen:

history |grep <some command>

Es gibt jedoch eine einfachere Möglichkeit, Ihren Verlauf zu durchsuchen. Wenn Sie

drücken
ctrl + r

Bash führt eine umgekehrte Suche in Ihrem Verlauf durch. Sobald Sie mit der Eingabe beginnen, werden die Ergebnisse angezeigt. Zum Beispiel:

(reverse-i-search)`hist': shopt -s histappend

Im obigen Beispiel habe ich hist eingegeben und es stimmte mit shopt überein Befehl, den wir zuvor behandelt haben. Wenn Sie weiterhin ctrl + r drücken , Bash durchsucht weiterhin alle anderen Übereinstimmungen rückwärts.

Unser letzter Trick ist weniger ein Trick als vielmehr ein hilfreicher Befehl, mit dem Sie die am häufigsten verwendeten Befehle in Ihrem Verlauf zählen und anzeigen können.

[user@centos tmp]$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head 
81 ssh
50 sudo
46 ls
45 ping
39 cd
29 nvidia-xrun
20 nmap
19 export

In diesem Beispiel können Sie diesen ssh sehen ist im Moment bei weitem der am häufigsten verwendete Befehl in meiner Geschichte.

Navigation und Dateibenennung

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Sie wissen wahrscheinlich bereits, dass Sie beim Eingeben eines Befehls, eines Dateinamens oder eines Ordnernamens auf die tab klicken können Taste einmal, um den Wortlaut für Sie zu vervollständigen. Dies funktioniert, wenn es eine einzelne exakte Übereinstimmung gibt. Allerdings wissen Sie das vielleicht nicht, wenn Sie tab drücken zweimal, es zeigt Ihnen alle Übereinstimmungen basierend auf dem, was Sie eingegeben haben. Zum Beispiel:

[user@centos tmp]$ cd /lib <tab><tab>
lib/ lib64/

Dies kann für die Dateisystemnavigation sehr nützlich sein. Ein weiterer hilfreicher Trick ist die Aktivierung von cdspell in deiner Hülle. Sie können dies tun, indem Sie shopt -s cdspell ausgeben Befehl. Dies wird Ihnen helfen, Ihre Tippfehler zu korrigieren:

[user@centos etc]$ cd /tpm
/tmp
[user@centos tmp]$ cd /ect
/etc

Es ist nicht perfekt, aber jedes bisschen hilft!

Was ist, wenn Sie nach einem erfolgreichen Verzeichniswechsel zu Ihrem vorherigen Verzeichnis zurückkehren müssen? Dies ist keine große Sache, wenn Sie nicht sehr tief in der Verzeichnisstruktur sind. Aber wenn Sie sich in einem ziemlich tiefen Pfad befinden, wie z. B. /var/lib/flatpak/exports/share/applications/ , könnten Sie Folgendes eingeben:

cd /va<tab>/lib/fla<tab>/ex<tab>/sh<tab>/app<tab>

Glücklicherweise erinnert sich Bash an Ihr vorheriges Verzeichnis, und Sie können dorthin zurückkehren, indem Sie einfach cd - eingeben . So würde es aussehen:

[user@centos applications]$ pwd
/var/lib/flatpak/exports/share/applications

[user@centos applications]$ cd /tmp
[user@centos tmp]$ pwd
/tmp

[user@centos tmp]$ cd -
/var/lib/flatpak/exports/share/applications

Das ist alles schön und gut, aber was ist, wenn Sie eine Reihe von Verzeichnissen haben, in denen Sie einfach navigieren möchten? Bash hat Sie auch dort abgedeckt. Es gibt eine Variable, die Sie festlegen können, die Ihnen hilft, effektiver zu navigieren. Hier ist ein Beispiel:

[user@centos applications]$ export CDPATH='~:/var/log:/etc'
[user@centos applications]$ cd hp
/etc/hp

[user@centos hp]$ cd Downloads
/home/user/Downloads

[user@centos Downloads]$ cd ansible
/etc/ansible

[user@centos Downloads]$ cd journal
/var/log/journal

Im obigen Beispiel setze ich mein Home-Verzeichnis (gekennzeichnet durch die Tilde:~ ), /var/log und /etc . Alles auf der obersten Ebene dieser Verzeichnisse wird automatisch ausgefüllt, wenn Sie darauf verweisen. Verzeichnisse, die nicht an der Basis der in CDPATH aufgelisteten Verzeichnisse liegen wird nicht gefunden. Wenn zum Beispiel das Verzeichnis, nach dem Sie suchen, /etc/ansible/facts.d/ war Dies würde nicht durch Eingabe von cd facts.d abgeschlossen werden . Dies liegt daran, dass das Verzeichnis ansible befindet sich unter /etc , facts.d ist nicht. Daher CDPATH ist nützlich, um an die Spitze einer Baumstruktur zu gelangen, auf die Sie häufig zugreifen, aber die Verwaltung kann umständlich werden, wenn Sie eine große Ordnerstruktur durchsuchen.

Lassen Sie uns abschließend über zwei häufige Anwendungsfälle sprechen, die jeder irgendwann einmal durchführt:Ändern einer Dateierweiterung und Umbenennen von Dateien. Auf den ersten Blick mag das nach dem Gleichen klingen, aber Bash bietet ein paar verschiedene Tricks, um diese Aufgaben zu erfüllen.

Obwohl es sich um eine "down-and-dirty"-Operation handeln kann, müssen die meisten Benutzer irgendwann eine schnelle Kopie einer Datei erstellen, an der sie arbeiten. Die meisten kopieren den Dateinamen genau und hängen einfach eine Dateierweiterung wie .old an oder .bak . In Bash gibt es dafür eine schnelle Abkürzung. Angenommen, Sie haben einen Dateinamen wie spideroak_inotify_db.07pkh3 von denen Sie eine Kopie behalten möchten. Sie könnten Folgendes eingeben:

cp spideroak_inotify_db.07pkh3 spideroak_inotify_db.07pkh3.bak

Sie können dies schnell erledigen, indem Sie Kopieren/Einfügen-Vorgänge verwenden, die Registerkarte „Complete“ verwenden, möglicherweise eine der Tastenkombinationen verwenden, um ein Argument zu wiederholen, oder einfach das Ganze austippen. Der folgende Befehl sollte sich jedoch als noch schneller erweisen, sobald Sie sich daran gewöhnt haben, ihn einzugeben:

cp spideroak_inotify_db.07pkh3{,.old}

Dies kopiert (wie Sie sich denken können) die Datei, indem Sie .old anhängen Dateierweiterung der Datei. Das ist großartig, könnten Sie sagen, aber ich möchte eine große Anzahl von Dateien auf einmal umbenennen. Sicher, Sie könnten Schreiben Sie eine for-Schleife, um mit diesen umzugehen (und tatsächlich mache ich das oft für etwas Kompliziertes), aber warum sollten Sie, wenn es ein praktisches Dienstprogramm namens rename gibt ? Es gibt einige Unterschiede in der Verwendung dieses Dienstprogramms zwischen Debian/Ubuntu und CentOS/Arch. Die Debian-basierte Umbenennung verwendet eine SED-ähnliche Syntax:

user@ubuntu-1604:/tmp$ for x in `seq 1 5`; do touch old_text_file_${x}.txt; done

user@ubuntu-1604:/tmp$ ls old_text_file_*
old_text_file_1.txt old_text_file_3.txt old_text_file_5.txt
old_text_file_2.txt old_text_file_4.txt

user@ubuntu-1604:/tmp$ rename 's/old_text_file/shiney_new_doc/' *.txt

user@ubuntu-1604:/tmp$ ls shiney_new_doc_*
shiney_new_doc_1.txt shiney_new_doc_3.txt shiney_new_doc_5.txt
shiney_new_doc_2.txt shiney_new_doc_4.txt

Auf einer CentOS- oder Arch-Box würde es ähnlich aussehen:

[user@centos /tmp]$ for x in `seq 1 5`; do touch old_text_file_${x}.txt; done

[user@centos /tmp]$ ls old_text_file_*
old_text_file_1.txt old_text_file_3.txt old_text_file_5.txt
old_text_file_2.txt old_text_file_4.txt

[user@centos tmp]$ rename old_text_file centos_new_doc *.txt

[user@centos tmp]$ ls centos_new_doc_*
centos_new_doc_1.txt centos_new_doc_3.txt centos_new_doc_5.txt
centos_new_doc_2.txt centos_new_doc_4.txt

Bash-Tastenbelegung

Bash hat viele eingebaute Tastaturkürzel. Sie können eine Liste davon finden, indem Sie bind -p eingeben . Ich dachte, es wäre nützlich, einige hervorzuheben, obwohl einige wohlbekannt sind.

  • Strg + _ (rückgängig machen)
  • Strg + T (zwei Zeichen tauschen)
  • ALT + t (zwei Wörter tauschen)
  • ALT + . (gibt das letzte Argument des vorherigen Befehls aus)
  • Strg + x + * (Glob/Stern erweitern)
  • Strg + Pfeil (ein Wort vorgehen)
  • ALT + f (ein Wort vorgehen)
  • ALT + b (ein Wort zurückgehen)
  • Strg + x gefolgt von Strg + E (öffnet die Befehlszeichenfolge in einem Editor, damit Sie sie vor der Ausführung bearbeiten können)
  • Strg + E (Cursor zum Ende bewegen)
  • Strg + a (Cursor zum Start bewegen)
  • Strg + xx (an das andere Ende der Zeile gehen)
  • Strg + u (schneidet alles vor dem Cursor ab)
  • Strg + k (schneidet alles nach dem Cursor ab)
  • Strg + J (Pasten aus dem Puffer)
  • Strg + L (Kleinbuchstabe L, löscht Bildschirm)

Ich werde die offensichtlicheren nicht diskutieren. Einige der nützlichsten Verknüpfungen, die ich gefunden habe, sind jedoch diejenigen, mit denen Sie Wörter (oder Textabschnitte) löschen und rückgängig machen können. Angenommen, Sie wollten eine Reihe von Diensten mit systemd stoppen , aber Sie wollten nur einige davon starten, nachdem ein Vorgang abgeschlossen wurde. Sie könnten etwa so vorgehen:

systemctl stop httpd mariadb nfs smbd
<hit the up button to get the previous command>
<use 'ctrl + w' to remove the unwanted arguments>

Aber was ist, wenn Sie einen zu viel entfernt haben? Kein Problem – verwenden Sie einfach ctrl + _ um die letzte Änderung rückgängig zu machen.

Mit den anderen Ausschneidebefehlen können Sie schnell alles vom Cursor bis zum Ende oder Anfang der Zeile entfernen (mit Ctrl + k und Ctrl + u , bzw). Dies hat den zusätzlichen Vorteil, dass der ausgeschnittene Text in den Terminalpuffer gestellt wird, damit Sie ihn später einfügen können (mit ctrl + y ). Diese Befehle sind hier schwer zu demonstrieren, daher empfehle ich Ihnen dringend, sie selbst auszuprobieren.

Zu guter Letzt möchte ich eine selten verwendete Tastenkombination erwähnen, die in engen Umgebungen wie Containern äußerst praktisch sein kann. Wenn Sie jemals einen Befehl haben, der durch die vorherige Ausgabe verstümmelt aussieht, gibt es eine Lösung:Drücken Sie ctrl + x + ctrl + e öffnet den Befehl in dem Editor, der in der Umgebungsvariable EDITOR festgelegt ist. Auf diese Weise können Sie einen langen oder verstümmelten Befehl in einem Texteditor bearbeiten, der (möglicherweise) Text umbrechen kann. Wenn Sie Ihre Arbeit speichern und beenden, so wie Sie es beim Arbeiten an einer normalen Datei tun würden, wird der Befehl beim Verlassen des Editors ausgeführt.

Verschiedene Tipps

Möglicherweise stellen Sie fest, dass die Anzeige von Farben in Ihrer Bash-Shell Ihre Erfahrung verbessern kann. Wenn Sie eine Sitzung verwenden, in der die Farbgebung nicht aktiviert ist, finden Sie unten eine Reihe von Befehlen, die Sie in Ihr .bash_profile einfügen können um Ihrer Sitzung Farbe zu verleihen. Diese sind ziemlich einfach und sollten keiner eingehenden Erklärung bedürfen:

# enable colors
eval "`dircolors -b`"

# force ls to always use color and type indicators
alias ls='ls -hF --color=auto'

# make the dir command work kinda like in windows (long format)
alias dir='ls --color=auto --format=long'

# make grep highlight results using color
export GREP_OPTIONS='--color=auto'

# Add some colour to LESS/MAN pages
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;33m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;42;30m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;36m'

Neben dem Anpassen der verschiedenen Optionen in Bash können Sie auch einige nette Tricks anwenden, um Zeit zu sparen. Um beispielsweise zwei Befehle hintereinander unabhängig vom Exit-Status auszuführen, verwenden Sie den ; um die Befehle zu trennen, wie unten zu sehen:

[user@centos /tmp]$ du -hsc * ; df -h

Dies berechnet einfach den Speicherplatz, den jede Datei im aktuellen Verzeichnis einnimmt (und summiert ihn), und fragt dann das System nach der Festplattennutzung pro Blockgerät ab. Diese Befehle werden unabhängig von Fehlern ausgeführt, die von du generiert werden Befehl.

Was ist, wenn Sie möchten, dass nach erfolgreichem Abschluss des ersten Befehls eine Aktion ausgeführt wird? Sie können den && verwenden Kurzform, um anzugeben, dass Sie den zweiten Befehl nur ausführen möchten, wenn der erste Befehl einen erfolgreichen Beendigungsstatus zurückgibt. Angenommen, Sie möchten einen Computer nur neu starten, wenn die Aktualisierungen erfolgreich sind:

[root@arch ~]$ pacman -Syu --noconfirm && reboot

Manchmal möchten Sie beim Ausführen eines Befehls möglicherweise dessen Ausgabe erfassen. Die meisten Leute kennen das tee Befehl, der die Standardausgabe sowohl in das Terminal als auch in eine Datei kopiert. Wenn Sie jedoch eine komplexere Ausgabe von beispielsweise strace erfassen möchten , müssen Sie mit der E/A-Umleitung beginnen. Die Details der E/A-Umleitung würden den Rahmen dieses kurzen Artikels sprengen, aber für unsere Zwecke beschäftigen wir uns mit STDOUT und STDERR . Der beste Weg, genau das zu erfassen, was Sie sehen, besteht darin, beide in einer Datei zu kombinieren. Verwenden Sie dazu 2>&1 Weiterleitung.

[root@arch ~]$ strace -p 1140 > strace_output.txt 2>&1

Dadurch wird die gesamte relevante Ausgabe in eine Datei namens strace_output.txt geschrieben zur späteren Ansicht.

Manchmal müssen Sie während eines lang andauernden Befehls die Ausführung einer Aufgabe unterbrechen. Sie können die Tastenkombination „Stop“ ctrl + z verwenden einen Job zu stoppen (aber nicht zu töten). Der Auftrag wird der Auftragswarteschlange hinzugefügt, aber Sie sehen den Auftrag nicht mehr, bis Sie ihn fortsetzen. Dieser Job kann zu einem späteren Zeitpunkt mit dem Vordergrundbefehl fg fortgesetzt werden .

Außerdem können Sie einen Job auch einfach mit ctrl + s pausieren . Der Job und seine Ausgabe bleiben im Terminal-Vordergrund, und die Verwendung der Shell ist nicht an den Benutzer zurückgegeben. Der Job kann durch Drücken von ctrl + q fortgesetzt werden .

Wenn Sie in einer grafischen Umgebung mit vielen geöffneten Terminals arbeiten, finden Sie es möglicherweise praktisch, Tastenkombinationen zum Kopieren und Einfügen von Ausgaben zu haben. Verwenden Sie dazu die folgenden Tastenkombinationen:

# Copies highlighted text
ctrl + shift + c

# Pastes text in buffer
ctrl + shift + v

Angenommen, Sie sehen in der Ausgabe eines ausgeführten Befehls, dass ein anderer Befehl ausgeführt wird, und Sie möchten weitere Informationen erhalten. Es gibt einige Möglichkeiten, dies zu tun. Wenn sich dieser Befehl irgendwo in Ihrem Pfad befindet, können Sie which ausführen Befehl, um herauszufinden, wo sich dieser Befehl auf Ihrer Festplatte befindet:

[root@arch ~]$ which ls
/usr/bin/ls
ist

Mit diesen Informationen können Sie die Binärdatei mit der file untersuchen Befehl:

[root@arch ~]$ file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB pie executable x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d4e02b88e596e4f82c6cc62a5bc4ce5827209a49, stripped

Sie können alle möglichen Informationen sehen, aber die wichtigste für die meisten Benutzer ist das ELF 64-bit LSB Unsinn. Dies bedeutet im Wesentlichen, dass es sich um eine vorkompilierte Binärdatei handelt, im Gegensatz zu einem Skript oder einer anderen Art von ausführbarer Datei. Ein verwandtes Tool, mit dem Sie Befehle untersuchen können, ist command Werkzeug selbst. Führen Sie einfach command -V <command> aus gibt Ihnen verschiedene Arten von Informationen:

[root@arch ~]$ command -V ls
ls is aliased to `ls --color=auto`

[root@arch ~]$ command -V bash
bash is /usr/bin/bash

[root@arch ~]$ command -V shopt
shopt is a shell builtin

Zu guter Letzt ist einer meiner Lieblingstricks, besonders bei der Arbeit mit Containern oder in Umgebungen, in denen ich wenig Wissen oder Kontrolle habe, das echo Befehl. Dieser Befehl kann verwendet werden, um alles zu tun, von der Überprüfung, um sicherzustellen, dass Ihr for Schleife führt die erwartete Sequenz aus, damit Sie überprüfen können, ob Remote-Ports geöffnet sind. Die Syntax ist sehr einfach, um nach einem offenen Port zu suchen:echo > /dev/<udp or tcp>/<server ip>/<port> . Zum Beispiel:

user@ubuntu-1604:~$ echo > /dev/tcp/192.168.99.99/222
-bash: connect: Connection refused
-bash: /dev/tcp/192.168.99.99/222: Connection refused

user@ubuntu-1604:~$ echo > /dev/tcp/192.168.99.99/22

Wenn der Port für die Art der Verbindung, die Sie herzustellen versuchen, geschlossen ist, erhalten Sie die Meldung Connection refused Botschaft. Wenn das Paket erfolgreich gesendet wurde, erfolgt keine Ausgabe.

Ich hoffe, dass diese Tipps die Verwendung von Bash effizienter und angenehmer machen. In Bash sind viel mehr Tricks versteckt, als ich hier aufgelistet habe. Was sind einige Ihrer Favoriten?

Anhang 1. Liste der behandelten Tipps und Tricks

# History related 
ctrl + r (reverse search)
!! (rerun last command)
!* (reuse arguments from previous command)
!$ (use last argument of last command)
shopt -s histappend (allow multiple terminals to write to the history file)
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head (list the most used history commands)

# File and navigation
cp /home/foo/realllylongname.cpp{,-old}
cd -
rename 's/text_to_find/been_renamed/' *.txt
export CDPATH='/var/log:~' (variable is used with the cd built-in.)

# Colourize bash

# enable colors
eval "`dircolors -b`"
# force ls to always use color and type indicators
alias ls='ls -hF --color=auto'
# make the dir command work kinda like in windows (long format)
alias dir='ls --color=auto --format=long'
# make grep highlight results using color
export GREP_OPTIONS='--color=auto'

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;33m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m' # end the info box
export LESS_TERMCAP_so=$'\E[01;42;30m' # begin the info box
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;36m'

# Bash shortcuts
    shopt -s cdspell (corrects typoos)
    ctrl + _ (undo)
    ctrl + arrow (move forward a word)
    ctrl + a (move cursor to start)
    ctrl + e (move cursor to end)
    ctrl + k (cuts everything after the cursor)
    ctrl + l (clears screen)
    ctrl + q (resume command that is in the foreground)
    ctrl + s (pause a long running command in the foreground)
    ctrl + t (swap two characters)
    ctrl + u (cuts everything before the cursor)
    ctrl + x + ctrl + e (opens the command string in an editor so that you can edit it before it runs)
    ctrl + x + * (expand glob/star)
    ctrl + xx (move to the opposite end of the line)
    ctrl + y (pastes from the buffer)
    ctrl + shift + c/v (copy/paste into terminal)

# Running commands in sequence
&& (run second command if the first is successful)
; (run second command regardless of success of first one)

# Redirecting I/O
2>&1 (redirect stdout and stderr to a file)

# check for open ports
echo > /dev/tcp/<server ip>/<port>
`` (use back ticks to shell out)

# Examine executable
which <command>
file <path/to/file>
command -V <some command binary> (tells you whether <some binary> is a built-in, binary or alias)

Linux
  1. So löschen Sie den BASH-Befehlszeilenverlauf in Linux

  2. Bash-Bang-Befehle:Ein Must-Know-Trick für die Linux-Befehlszeile

  3. Bash Echo Die Befehlszeile wird in der Befehlszeile selbst ausgeführt (nicht in einem Skript)?

  4. Linux-Befehlszeilentipps zur Steigerung der Produktivität

  5. Ist das pdftotext-Befehlszeilentool für Mac?

3 Passwort-Manager für die Linux-Kommandozeile

Verlaufsbefehl in Linux (Bash-Verlauf)

So zeigen Sie den Bash-Verlauf ohne Zeilennummern an

Ein Papierkorb für die Ubuntu-Befehlszeile

Ripgrep – Das schnellste Kommandozeilen-Suchtool für Linux

15 Möglichkeiten, den Linux Watch-Befehl für alltägliche Aktivitäten zu verwenden