Bash: Letzten Befehl mit anderen Argumenten wiederholen
Hier wird wieder Tipparbeit gespart: Längere Befehle könnt Ihr ganz fix angepasst wiederverwerten.
Auf der Kommandozeile führt man häufig Befehle wieder und wieder mit kleinen Anpassungen durch - bis das Ergebnis passt. Oder nutzt einen Befehl mehrmals nacheinander mit unterschiedlichen Argumenten. Für die meisten heißt das vermutlich: Mit den Pfeiltasten herumnavigieren, mit ENTF löschen und neu schreiben - das ist aber zu kompliziert.
Simples Beispiel
Ein ganz einfaches Beispiel: Ihr pingt eine Seite (google.de) an und lasst das Ergebnis in eine Datei (tmp_ping_google) schreiben:
ping -c1 google.de > tmp_ping_google
Wenn Ihr das nun auch für Tutonaut.de machen wollt, heißt das: Befehl per Pfeiltaste-Rauf aufrufen, die beiden google-Instanzen löschen und durch tutonaut ersetzen und dann erneut ausführen. Selbst bei einem so kurzem Befehl mit nur zwei google-Vorkommen ist das schon lästig. Bei längeren Pipes ...
Hier hilft das kleine Bash-eigene Tool fc, mit dem sich Befehle aus der History bearbeiten oder modifiziert aufrufen lassen. Mit einem von der fc-Manpage inspiriertem Alias kann ich für Tutonaut.de nun einfach folgendes machen:
redo google=tutonaut
Was natürlich den Befehl
ping -c1 tutonaut.de > tmp_ping_tutonaut
ausführt. Hinter redo steckt ein simpler Alias:
alias redo='fc -s'
Die manpage schlägt schlicht "r" vor, redo scheint mir aber besser zu merken. Wenn Ihr nach dem ersten Ping-Befehl noch weitere Nicht-Ping-Befehle genutzt habt,könnt Ihr auch explizit den letzten Ping-Befehl modifizieren oder einen Befehl über die History-Nummer ansprechen:
redo google=tutonaut ping
redo google=tutonaut 1481
fc ersetzt alle Vorkommen eines Worts - oft genügt aber auch nur ein Vorkommen: das Erste!
Bonus: Befehle tauschen
Auch der umgekehrte Fall ist nicht unüblich: Ihr lasst die Argumente wie sie sind, nutzt aber einen anderen Befehl. Vielleicht guckt Ihr zunächst in ein Verzeichnis, um dann gegebenenfalls dorthin zu wechseln, also:
ls /etc/NetworkManager/conf.d/
cd /etc/NetworkManager/conf.d/
In solchen Fällen ist es noch einfacher - das erste Vorkommen eines Worts tauscht Ihr per:
^ls^cd
Da kann man sich wirklich dran gewöhnen!
Moin, hab mal eine frage, gibt es auch eine möglichkeit wie unter windows wie bei mrt oder pingplotter unter tracerout zu Speicher zweck ist das meine Leitung über den ganzen tag geprüft wird ob wir Packet loss und wie sich der ping verändert. Laufen lassen würde ich dieses gerne auf einem raspberry pi 3 b.
Ich bin mir nicht ganz sicher, was das Malware Removal Tool (mrt?) da tut, wie pingplotter unter traceroute läuft (??) … – irgendwas fehlt da. Vielleicht suchst Du sowas???
Winmtr meinte ich sorry. Danke für den Tipp aber leider suche ich eine Möglichkeit dieses unter den raspberry pi sprich raspbian Lite laufen zu lassen. Gibt es eine Möglichkeit ein Befehl für Kommandozeile das dieser ein traceroute macht und die einzelnen hops in eine Datei speichert? Ich möchte dieses den ganzen tag automatisch laufen lassen um zu checken wann und wo ich Packetloos bekomme damit ich die datei mein Provider zur Verfügung stellen kann.
Tools wie Wireshark oder auch collectl könnten vielleicht entsprechende Funktionen liefern. Vielleicht genügt ein simples Ping?
Das würde Tutonaut.de 3 mal anpingen, die Zusammenfassung über das grep-Kommando filtern und per awk auf die Packet-Loss-Information beschränken – kann man natürlich anpassen. Das könnte man dann in ein Skript packen und kontinuierlich ausführen und in eine Datei schreiben lassen, etwa:
Da könnte man jetzt noch mit rumspielen und zum Beispiel weitere Seiten einfügen. Wenn es nicht um bestimmte Seiten geht, sondern um alle Verluste über den Tag, könnte collectl besser geeignet sein. Ob das für Deine Zwecke passt, müsstest Du ausprobieren – ganz trivial ist collectl auf den ersten Blick nicht.
Nachtrag: ss und netstat könnten auch helfen.
Wow vielen Dank für deine Mühe , das werde ich nachher gleich mal ausprobieren.