El fc comando, abreviatura de f ix c ommands, es un comando integrado de shell que se utiliza para enumerar, editar y volver a ejecutar los comandos ingresados más recientemente en un shell interactivo. Puede editar los comandos ingresados recientemente en su editor favorito y ejecutarlos sin tener que volver a escribir los comandos completos. Este comando puede ser útil para corregir errores ortográficos en los comandos ingresados anteriormente y evita la repetición de comandos largos y complicados. Dado que está integrado en el shell, está disponible en la mayoría de los shells, incluidos Bash, Zsh, Ksh, etc. En este breve tutorial, aprenderemos a usar el comando fc en Linux.
Lista de los comandos ejecutados recientemente con el comando fc
Si ejecuta fc -l
comando sin argumentos, mostrará los últimos 16 comandos.
$ 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
Para invertir el orden de los comandos, use -r
bandera.
$ fc -r
Puede suprimir los números de línea usando -n
bandera.
$ 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
Ahora no verá los números de línea.
Para enumerar el resultado a partir de un comando específico, simplemente use el número de línea junto con -l
opción. Por ejemplo, para mostrar los comandos a partir del número de línea 520 hasta el presente, hacemos:
$ 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
Para enumerar comandos dentro de un rango específico, por ejemplo, 520 a 525 , hacer:
$ fc -l 520 525 520 ls -l 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu
En lugar de usar los números de línea, también podemos usar cadenas. Por ejemplo, enumere los comandos a partir de pwd
comando hasta el reenvío, solo use la letra inicial de ese comando (es decir, p ) como a continuación.
$ 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
Para ver todo entre pwd
a more
comando, puede usar cualquiera de los siguientes:
$ fc -l p m
O use la combinación de la primera letra del comando de inicio y el número de línea del comando final:
$ fc -l p 528
O simplemente números de línea de los comandos de inicio y fin:
$ fc -l 521 528
Estos tres comandos mostrarán el mismo resultado.
Editar y volver a ejecutar el último comando automáticamente
A veces, es posible que haya escrito mal un comando anterior. En tales situaciones, puede editar fácilmente los errores ortográficos del comando utilizando su editor predeterminado y ejecutarlo sin tener que volver a escribirlo.
Para editar el último comando y volver a ejecutarlo, haz lo siguiente:
$ fc
Esto abrirá su último comando en el editor predeterminado.
Como puede ver en la captura de pantalla anterior, mi último comando fue "fc -l"
. Ahora puede realizar cualquier cambio en el comando y volver a ejecutarlo automáticamente una vez que guarde y salga del editor. Esto puede ser útil cuando usa comandos o argumentos largos y complicados.
Nota importante: Tenga en cuenta que esto también puede ser un destructivo . Por ejemplo, si el comando anterior era un comando letal como "rm -fr <some-path>"
, se ejecutará automáticamente y es posible que pierda sus datos importantes. Por lo tanto, DEBE tener mucho cuidado al usar fc
comando.
Cambiar el editor predeterminado para editar comandos
Otra opción notable de fc es "e"
que se utiliza para elegir un editor diferente para editar los comandos. Por ejemplo, podemos usar "nano"
editor para editar el último comando como se muestra a continuación.
$ fc -e nano
Este comando abrirá el editor nano (en lugar del editor predeterminado) para editar el último comando.
Puede que le resulte lento usar -e
opción para cada comando. Para hacer que el nuevo editor sea el predeterminado, solo configure la variable de entorno FCEDIT
al nombre del editor que quieras fc usar.
Por ejemplo, para configurar "nano" como el nuevo editor predeterminado, edite su ~/.profile
o archivo de entorno:
$ vi ~/.profile
Agregue la siguiente línea:
FCEDIT=nano
También puede usar la ruta completa del editor como se muestra a continuación.
FCEDIT=/usr/local/bin/emacs
Escribe :wq
para guardar y cerrar el archivo. Para actualizar los cambios, ejecute:
$ source ~/.profile
Ahora, puede escribir "fc" para editar el último comando usando "nano"
redactor.
Vuelva a ejecutar el último comando sin editarlo
Ya sabíamos que si ejecutamos "fc" sin ningún argumento, carga el editor con el comando más reciente. A veces, es posible que no desee editar, sino simplemente ejecutar el último comando. Para ello, utilice guión (-
) al final como se muestra a continuación.
$ echo "Welcome to OSTechNix" Welcome to OSTechNix $ fc -e - echo "Welcome to OSTechNix" Welcome to OSTechNix
Como puede ver, fc no editó el último comando (es decir, echo "Bienvenido a OSTechNix") incluso si usé -e
opción.
Tenga en cuenta que algunas de las opciones son específicas del shell. Es posible que no funcionen en otras conchas. Por ejemplo, las siguientes opciones se pueden usar en zsh cáscara. No funcionarán en shells Bash o Ksh.
Mostrar cuándo se ejecutaron los comandos
Para ver cuándo se ejecutaron los comandos, use -d como a continuación.
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
Ahora ve el tiempo de ejecución de los comandos ejecutados más recientemente.
También podemos mostrar la marca de tiempo completa de cada comando usando -f
opción.
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
Por supuesto, la gente europea puede usar el formato de fecha europeo usando -E
opción.
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
- Cuando se ejecuta sin ningún argumento, fc cargará el comando más reciente en el editor de texto predeterminado.
- Cuando se ejecuta con un argumento numérico, fc carga el editor con el comando con ese número especificado.
- Cuando se ejecuta con un argumento de cadena, fc carga el comando más reciente que comienza con esa cadena especificada.
- Cuando se ejecuta con dos argumentos para fc , los argumentos especifican el comienzo y el final de un rango de comandos.
Para obtener más detalles, consulte las páginas man.
$ man fc
Lectura relacionada:
- Diferentes formas de repetir su último comando en Linux
- Cómo borrar un comando específico del historial de Bash en Linux
- Cómo borrar el historial de la línea de comandos en Linux