Viele Linux-Benutzer haben ein nachhaltiges Erfolgserlebnis erlebt, nachdem sie einen besonders cleveren Befehl komponiert haben, der mehrere Aktionen in nur einer Zeile erreicht oder der es schafft, in einer Zeile das zu tun, was normalerweise 10 Klicks und ebenso viele Fenster in einer grafischen Benutzeroberfläche (GUI) erfordert. Abgesehen davon, dass sie legendär sind, sind Einzeiler großartige Beispiele dafür, warum das Terminal als ein so mächtiges Werkzeug gilt.
Am Ende dieses Artikels haben Sie:
- Eine Liste mit 20 Befehlen, die Ihnen die Arbeit unter Linux erleichtern
- Ein Verständnis der Möglichkeiten, einfache Befehle zu kombinieren, um leistungsfähigere Befehle zu erstellen
- Mehr Spaß, als Sie vielleicht erwarten, diese Befehle auszuführen
Ohne besondere Reihenfolge der Wichtigkeit sind dies unsere 20 besten Einzeiler für das Linux-Terminal. Obwohl wir einige der längeren Befehle mit \
geteilt haben Symbol für eine bessere Lesbarkeit können Sie sie alle in einer einzigen Zeile in Ihrem Terminal eingeben, da es sich schließlich um Einzeiler handelt.
1. Wenden Sie einen Befehl auf Dateien mit unterschiedlichen Namen an
Die Shell {}
Betreiber ist dafür großartig. Hier ist ein Beispiel mit drei Verzeichnissen, die in {}
eingeschlossen sind :
$ mkdir -p -v /home/josevnz/tmp/{dir1,anotherdir,similardir}
2. Bearbeiten Sie eine Datei an Ort und Stelle
Möchten Sie eine Zeichenfolge in einer oder mehreren Dateien ersetzen, ohne einen Editor zu verwenden? Sicher, sed
zur Rettung:
$ sed -i 's#ORIGINAL_VALLUE#NEW_VALUE#g' myfile1 myfile2
Aber warten Sie, Perl-Liebhaber werden Ihnen sagen, dass sie dasselbe tun können:
$ perl -p -i -e 's#ORIGINAL#NEW_VALUE#' myfile1 myfile2
3. Teilen Sie eine Datei schnell über einen Webserver
Heben Sie Ihre Hand, wenn Sie dies nicht mindestens einmal verwendet haben So teilen Sie schnell ein Verzeichnis:
$ cd $mydir && python3 -m http.server 8888
4. Finden Sie Fehler mit journalctl
Manchmal gehen Dinge kaputt. Sie können die neuesten Fehler mit einer Kombination aus journalctl
finden , zusammen mit den klassischen Tools sort
und uniq
:
$ journalctl --no-pager --since today \
--grep 'fail|error|fatal' --output json|jq '._EXE' | \
sort | uniq -c | sort --numeric --reverse --key 1
898172 "/usr/bin/dockerd"
752 "/usr/local/sbin/node_exporter"
30 "/usr/bin/gnome-shell"
26 "/usr/bin/cat"
22 "/usr/libexec/gsd-media-keys"
[...]
In diesem Fall scheint der Docker-Daemon unzufrieden zu sein.
[ Laden Sie dieses eBook herunter, um sich auf Ihre Red Hat Remote Exam vorzubereiten. ]
5. Erstellen Sie eine Sicherungskopie per verschlüsselter Dateiübertragung
Verwenden Sie ssh
und tar
um sichere Backups zu erstellen. Sie passen zusammen wie Erdnussbutter und Marmelade:
$ tar --create --directory /home/josevnz/tmp/ --file - *| \
ssh raspberrypi "tar --directory /home/josevnz \
--verbose --list --file -"
Sie können den Backup-Auftrag durch Komprimierung und Verschlüsselung aufpeppen – genau wie das Hinzufügen von Zutaten zu Ihrem Sandwich.
6. Sofortige Dateien schreiben
Dies ist ein großartiger Trick, wenn Sie mehrzeilige Dokumente schreiben müssen:
$ cat<<DOC>/my/new/file
Line1
Line2
A $VARIABLE
DOC
Sie können auch einfach cat > file
, und wenn Sie mit der Bearbeitung fertig sind, geben Sie einfach das EOF-Zeichen ein (Strg+D ):
[josevnz@dmaf5 temp]$ cat > testfile
This is a test
multiple lines
and here we go
[josevnz@dmaf5 temp]$
7. Suchen Sie nach einer Datei und schließen Sie einige Erweiterungen ein und andere aus
Dieses Beispiel verwendet grep
Möglichkeit, nach bestimmten Dateien zu suchen. Es ist ziemlich schnell und leicht zu merken:
$ grep -R 'import' --include='*.java' --color MySourceCodeDir
Oder Sie versuchen es mit find
Weise (verwenden Sie xargs
um eine große Anzahl von Übereinstimmungen richtig zu handhaben):
$ find MySourceCodeDir/ -name '*.java' -type f -print| xargs \
grep --color 'import
Warum find
, können Sie fragen? Sie können find
kombinieren mit -exec
um zuerst Aktionen für Ihre Dateien auszuführen und dann die Ergebnisse an den Filter weiterzugeben. Die Verarbeitungsmöglichkeiten sind hier endlos.
8. Speicher ohne top oder htop überwachen
Dieser betrügt fast. Es wiederholt einen Befehl wie free
, alle fünf Sekunden und hebt die Unterschiede hervor:
$ watch -n 5 -d '/bin/free -m'
9. Festplattenpartitionsgrößen anzeigen
Verwenden Sie lsbk
(Listenblock) und jq
(um ein JSON auf der Befehlszeile zu manipulieren), um Partitionsinformationen anzuzeigen:
$ lsblk --json | jq -c '.blockdevices[]|[.name,.size]'
["loop0","55.5M"]
["loop1","156M"]
["loop2","32.3M"]
["zram0","4G"]
["nvme0n1","476.9G"]
10. Schnell einen Dateityp anzeigen
Das Was ist Funktion wird mit wi
aufgerufen . Es teilt Ihnen schnell den Typ einer Datei mit.
So prüfen Sie eine einzelne Datei:
$ function wi { test -n "$1" && stat --printf "%F\n" "$1"; }
So prüfen Sie mehrere Dateien:
$ function wi { test "$#" -gt 0 && stat --printf "%n: %F\n" "$@"; }
HINWEIS :Funktionen sind überlegen und können die gleiche Arbeit wie ein Alias erledigen.
11. Anzeige der Größe eines installierten RPM
Wenn Sie ein RPM-basiertes System haben, werden Sie früher oder später Ihre Abfragen formatieren. Hier ist ein Beispiel:
$ rpm --queryformat='%12{SIZE} %{NAME}\n' \
-q java-11-openjdk-headless
[ Trainieren und testen Sie unsere neuesten Kurse und Prüfungen von Red Hat Training &Certification:Red Hat Enterprise Linux Skills Path. ]
12. Zeigt die Gesamtgröße einer Gruppe von Dateien an
In diesem Fall die find
Der Befehl fungiert als Filter, zeigt die Größe jeder Datei in Bytes an und schließlich die Gesamtgröße:
$ t=0; for n in $(find ~/Documents -type f -name '*.py' -print | xargs \
stat --printf "%s "); do ((t+=n)); done; echo $t
Oder, wenn Sie eine (bessere) Funktion wollen, versuchen Sie diesen Ansatz:
$ function size { t=0; test -d "$1" && for n in $(find $1 \
-type f -name '*.py' -print| \
xargs stat --printf "%s "); do ((t+=n)); done; echo $t; }
size $mydir
13. Alle Git-Repositories in einem Verzeichnis aktualisieren
Sie wissen bereits, wie nützlich Git ist. Hier ist ein Trick, um Ihre Updates effizienter zu gestalten:
$ for i in */.git; do cd $(dirname $i); git pull; cd ..; done
14. Stellen Sie ein Webverzeichnis mithilfe von Containern bereit
Container sind heute von entscheidender Bedeutung. Dieser Einzeiler legt ein Verzeichnis über Podman offen:
$ podman run --rm -v .:/usr/share/nginx/html:ro,Z \
-p 30080:80 -d nginx
15. Prüfen Sie das Wetter
Finden Sie mit dieser Funktion heraus, ob Sie heute eine Jacke brauchen:
weather() { curl -s --connect-timeout 3 -m 5 http://wttr.in/$1; }
16. Zeigen Sie die Top 10 IP-Adressen an, die einen Webserver treffen
Hier ist eine Aufgabe, die Webadministratoren häufig mit Nginx verwenden (es funktioniert möglicherweise auch mit Apache), um die Top-10-Internetprotokolladressen zu ermitteln, die einen Webserver aus dem Zugriffsprotokoll treffen:
$ cat /var/log/nginx/access.log | cut -f 1 -d ' ' | sort | \
uniq -c | sort -hr | head -n 10
17. Runde Floats in Bash mit Pythons Hilfe
Sie können mit Python ziemlich coole Sachen machen, aber dieses Beispiel rundet nur Zahlen:
$ echo "22.67892" | python3 -c "print(f'{round(float(input()))}')"
23
18. Führen Sie einen Minirechner aus
Diese Funktion definiert einen Schnellrechner auf der Befehlszeile mit variabler Genauigkeit (der Standardwert ist 2). Es verwendet bc. Erstellen Sie die Funktion wie folgt:
$ function qqbc() { echo "scale=${2:-2}; $1" | bc -l
Führen Sie als Nächstes eine schnelle Berechnung durch:
$ qqbc "2/3"
.66
Falls Sie zusätzliche Genauigkeit benötigen, definieren Sie einfach einen zweiten Parameter:
$ qqbc "2/3" 4
.6666
Dieses Tool heißt qqbc
weil es eine Verbesserung der alten Funktion qbc
ist .
19. Konvertieren Sie eine CSV-Datei in JSON
Dieser Trick ist eine Modifikation dieses beliebten Rezepts zum Konvertieren von CSV-Dateien in das JSON-Format:
$ python3 -c \
"import csv,json,sys;print(json.dumps(list(csv.reader(open(sys.argv[1])))))" \
covid19-vaccinations-town-age-grp.csv
20. Befehle mit Docker installieren und ausführen
Wenn Sie Docker installiert haben und einen Befehl ausführen möchten, ohne eine Reihe von Abhängigkeiten auf Ihrem System zu installieren (während einer schnellen Ausführung), ist dies möglicherweise alles, was Sie brauchen:
$ docker run --rm --interactive curlimages/curl curl \
--verbose --location --fail --silent --output - \
https://example.com
Der Befehl führt die neueste Version von curl
aus aus einem Behälter und entfernt ihn später. Beachten Sie, dass der Befehl mit einem Bindestrich endet (-
), was curl
mitteilt an Ihr Terminal auszugeben. Die Möglichkeiten sind hier endlos.
Abschluss
Die Fähigkeit, leistungsstarke Kombinationen einfacher Befehle zu erstellen, ist einer der Gründe, warum Unix und Linux so beliebt sind.
Glücklicherweise. Es ist nicht schwer, diese Einzeiler zu lernen. Konzentrieren Sie sich darauf, sich daran zu erinnern, was ein einfacher Befehl bewirkt, und denken Sie dann darüber nach, wie Sie viele einfache Befehle kombinieren können, um ein leistungsstarkes Rezept zu erstellen.
Überprüfen Sie immer den man
Seite oder verwenden Sie die info
Befehl, um herauszufinden, was das Tool sonst noch kann. Sie werden überrascht sein zu erfahren, dass ein Tool alles kann, ohne es mit einem anderen Dienstprogramm zu kombinieren.
Es gibt viele Seiten im Internet mit vielen einzeiligen Beispielen. Wir hoffen, dass diese Beispiele Sie dazu anregen, selbst bessere Einzeiler zu schreiben.