Der fc Befehl, kurz für f ix c Befehle, ist ein Shell-integrierter Befehl, der verwendet wird, um die zuletzt eingegebenen Befehle in einer interaktiven Shell aufzulisten, zu bearbeiten und erneut auszuführen. Sie können die kürzlich eingegebenen Befehle in Ihrem bevorzugten Editor bearbeiten und ausführen, ohne die gesamten Befehle erneut eingeben zu müssen. Dieser Befehl kann hilfreich sein, um die Rechtschreibfehler in den zuvor eingegebenen Befehlen zu korrigieren, und vermeidet die Wiederholung langer und komplizierter Befehle. Da es in die Shell integriert ist, ist es in den meisten Shells verfügbar, einschließlich Bash, Zsh, Ksh usw. In diesem kurzen Tutorial werden wir lernen, den Befehl fc unter Linux zu verwenden.
Listen Sie die zuletzt ausgeführten Befehle mit dem fc-Befehl auf
Wenn Sie fc -l
ausführen Befehl ohne Argumente, werden die letzten 16 angezeigt Befehle.
$ fc -l 507 fish 508 fc -l 509 sudo netctl restart wlp9s0sktab 510 ls -l 511 pwd 512 uname -r 513 uname -ms 514 touch ostechnix.txt 515 vi ostechnix.txt 516 echo "Welcome to OSTechNix" 517 sudo apcman -Syu 518 sudo pacman -Syu 519 more ostechnix.txt 520 wc -l ostechnix.txt 521 cat ostechnix.txt 522 clear
Um die Reihenfolge der Befehle umzukehren, verwenden Sie -r
Flagge.
$ fc -r
Mit -n
können Sie die Zeilennummern unterdrücken Flagge.
$ fc -ln nano ~/.profile source ~/.profile source ~/.profile fc -ln fc -l sudo netctl restart wlp9s0sktab ls -l pwd uname -r uname -ms echo "Welcome to OSTechNix" sudo apcman -Syu cat ostechnix.txt wc -l ostechnix.txt more ostechnix.txt clear
Jetzt sehen Sie die Zeilennummern nicht mehr.
Um das Ergebnis ab einem bestimmten Befehl aufzulisten, verwenden Sie einfach die Zeilennummer zusammen mit -l
Möglichkeit. Zum Beispiel, um die Befehle ab Zeilennummer 520 anzuzeigen bis heute tun wir:
$ fc -l 520 520 ls -l 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu 526 cat ostechnix.txt 527 wc -l ostechnix.txt 528 more ostechnix.txt 529 clear 530 fc -ln 531 fc -l
Um einen Befehl innerhalb eines bestimmten Bereichs aufzulisten, zum Beispiel 520 bis 525 , tun:
$ fc -l 520 525 520 ls -l 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu
Anstelle der Zeilennummern können wir auch Strings verwenden. Listen Sie beispielsweise die Befehle auf, die mit pwd
beginnen Befehl bis zum erneuten Senden verwenden Sie einfach den Anfangsbuchstaben dieses Befehls (z. B. p ) wie unten.
$ fc -l p 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu 526 cat ostechnix.txt 527 wc -l ostechnix.txt 528 more ostechnix.txt 529 clear 530 fc -ln 531 fc -l 532 fc -l 520 533 fc -l 520 525 534 fc -l 520 535 fc -l 522 536 fc -l l
Um alles zwischen pwd
zu sehen zu more
Befehl können Sie entweder verwenden:
$ fc -l p m
Oder verwenden Sie die Kombination aus Anfangsbuchstabe des Startbefehls command und Zeilennummer des Endbefehls:
$ fc -l p 528
Oder nur Zeilennummern von Start- und Endbefehlen:
$ fc -l 521 528
Alle diese drei Befehle zeigen das gleiche Ergebnis an.
Den letzten Befehl automatisch bearbeiten und erneut ausführen
Manchmal könnten Sie einen vorherigen Befehl falsch geschrieben haben. In solchen Situationen können Sie die Rechtschreibfehler des Befehls einfach mit Ihrem Standardeditor korrigieren und ihn ausführen, ohne ihn erneut eingeben zu müssen.
Um den letzten Befehl zu bearbeiten und erneut auszuführen, tun Sie Folgendes:
$ fc
Dadurch wird Ihr letzter Befehl im Standardeditor geöffnet.

Wie Sie im obigen Screenshot sehen, war mein letzter Befehl "fc -l"
. Jetzt können Sie Änderungen am Befehl vornehmen und ihn automatisch erneut ausführen, sobald Sie den Editor speichern und beenden. Dies kann nützlich sein, wenn Sie lange und komplizierte Befehle oder Argumente verwenden.
Wichtiger Hinweis: Bitte beachten Sie, dass dies auch zerstörerisch sein kann . Zum Beispiel, wenn der vorherige Befehl ein tödlicher Befehl wie "rm -fr <some-path>"
war , wird es automatisch ausgeführt und Sie können Ihre wichtigen Daten verlieren. Sie MÜSSEN also sehr vorsichtig sein, wenn Sie fc
verwenden Befehl.
Ändern Sie den Standardeditor, um Befehle zu bearbeiten
Eine weitere bemerkenswerte Option von fc ist "e"
die verwendet wird, um einen anderen Editor zum Bearbeiten der Befehle auszuwählen. Zum Beispiel können wir "nano"
verwenden Editor, um den letzten Befehl wie unten zu bearbeiten.
$ fc -e nano
Dieser Befehl öffnet den Nano-Editor (anstelle des Standard-Editors), um den letzten Befehl zu bearbeiten.

Es kann zeitaufwändig sein, -e
zu verwenden Option für jeden Befehl. Um den neuen Editor zu Ihrem Standard zu machen, setzen Sie einfach die Umgebungsvariable FCEDIT
an den Namen des gewünschten Editors fc zu verwenden.
Um beispielsweise „nano“ als neuen Standardeditor festzulegen, bearbeiten Sie Ihr ~/.profile
oder Umgebungsdatei:
$ vi ~/.profile
Fügen Sie die folgende Zeile hinzu:
FCEDIT=nano
Sie können auch den vollständigen Pfad des Editors wie unten verwenden.
FCEDIT=/usr/local/bin/emacs
Geben Sie :wq
ein um die Datei zu speichern und zu schließen. Um die Änderungen zu aktualisieren, führen Sie Folgendes aus:
$ source ~/.profile
Jetzt können Sie einfach "fc" eingeben, um den letzten Befehl mit "nano"
zu bearbeiten Herausgeber.
Führen Sie den letzten Befehl erneut aus, ohne ihn zu bearbeiten
Wir wussten bereits, wenn wir "fc" ohne Argumente ausführen, lädt es den Editor mit dem neuesten Befehl. Manchmal möchten Sie vielleicht nicht bearbeiten, sondern einfach den letzten Befehl ausführen. Verwenden Sie dazu den Bindestrich (-
)-Symbol am Ende, wie unten gezeigt.
$ echo "Welcome to OSTechNix" Welcome to OSTechNix $ fc -e - echo "Welcome to OSTechNix" Welcome to OSTechNix
Wie Sie sehen, hat fc den letzten Befehl (d. h. echo "Welcome to OSTechNix") nicht bearbeitet, selbst wenn ich -e
verwendet habe Option.
Bitte beachten Sie, dass einige der Optionen Shell-spezifisch sind. Sie funktionieren möglicherweise nicht in anderen Shells. Beispielsweise können die folgenden Optionen in zsh verwendet werden Hülse. Sie funktionieren nicht in Bash- oder Ksh-Shells.
Anzeige wann die Befehle ausgeführt wurden
Verwenden Sie -d, um anzuzeigen, wann die Befehle ausgeführt wurden wie unten.
fc -ld 1 18:41 exit 2 18:41 clear 3 18:42 fc -l 4 18:42 sudo netctl restart wlp9s0sktab 5 18:42 ls -l 6 18:42 pwd 7 18:42 uname -r 8 18:43 uname -ms 9 18:43 cat ostechnix.txt 10 18:43 echo "Welcome to OSTechNix" 11 18:43 more ostechnix.txt 12 18:43 wc -l ostechnix.txt 13 18:43 cat ostechnix.txt 14 18:43 clear 15 18:43 fc -l
Jetzt sehen Sie die Ausführungszeit der zuletzt ausgeführten Befehle.
Wir können auch den vollständigen Zeitstempel jedes Befehls mit -f
anzeigen Option.
fc -lf 1 4/5/2018 18:41 exit 2 4/5/2018 18:41 clear 3 4/5/2018 18:42 fc -l 4 4/5/2018 18:42 sudo netctl restart wlp9s0sktab 5 4/5/2018 18:42 ls -l 6 4/5/2018 18:42 pwd 7 4/5/2018 18:42 uname -r 8 4/5/2018 18:43 uname -ms 9 4/5/2018 18:43 cat ostechnix.txt 10 4/5/2018 18:43 echo "Welcome to OSTechNix" 11 4/5/2018 18:43 more ostechnix.txt 12 4/5/2018 18:43 wc -l ostechnix.txt 13 4/5/2018 18:43 cat ostechnix.txt 14 4/5/2018 18:43 clear 15 4/5/2018 18:43 fc -l 16 4/5/2018 18:43 fc -ld
Natürlich können die Europäer das europäische Datumsformat mit -E
verwenden Option.
fc -lE 2 5.4.2018 18:41 clear 3 5.4.2018 18:42 fc -l 4 5.4.2018 18:42 sudo netctl restart wlp9s0sktab 5 5.4.2018 18:42 ls -l 6 5.4.2018 18:42 pwd 7 5.4.2018 18:42 uname -r 8 5.4.2018 18:43 uname -ms 9 5.4.2018 18:43 cat ostechnix.txt 10 5.4.2018 18:43 echo "Welcome to OSTechNix" 11 5.4.2018 18:43 more ostechnix.txt 12 5.4.2018 18:43 wc -l ostechnix.txt 13 5.4.2018 18:43 cat ostechnix.txt 14 5.4.2018 18:43 clear 15 5.4.2018 18:43 fc -l 16 5.4.2018 18:43 fc -ld 17 5.4.2018 18:49 fc -lf
TL;DR
- Wenn es ohne Argumente ausgeführt wird, lädt fc den neuesten Befehl in den Standard-Texteditor.
- Bei Ausführung mit einem numerischen Argument lädt fc den Editor mit dem Befehl mit dieser angegebenen Nummer.
- Bei Ausführung mit einem String-Argument lädt fc den neuesten Befehl beginnend mit diesem angegebenen String.
- Wenn fc mit zwei Argumenten ausgeführt wird, geben die Argumente den Anfang und das Ende einer Reihe von Befehlen an.
Hinweis: Einige Optionen sind in neueren BASH-Versionen veraltet.
Weitere Einzelheiten finden Sie in den Manpages.
$ man fc
Verwandte Lektüre:
- Verschiedene Möglichkeiten, Ihren letzten Befehl unter Linux zu wiederholen
- So löschen Sie einen bestimmten Befehl aus dem Bash-Verlauf in Linux
- So löschen Sie den Befehlszeilenverlauf in Linux