Comando fc de Bash: Maneja fácilmente la shell de Bash como un profesional

¿Alguna vez has ejecutado un comando en Bash y has obtenido un error debido a una palabra mal escrita? ¿O tal vez olvidaste los últimos tres comandos que ejecutaste? En lugar de volver a escribir o recordar los comandos anteriores, el comando Bash fc puede ayudarte a hacer ediciones rápidas y volver a ejecutar comandos anteriores.

En este artículo, aprenderás cómo aprovechar fc para editar y volver a ejecutar comandos de tu historial de comandos. Después de leer esta guía, estarás utilizando fc como el guerrero de la línea de comandos que deseas ser.

Prerrequisitos

Este artículo será un tutorial. Si planeas seguirlo paso a paso, necesitas una computadora con Linux o una computadora con Windows 10 con Windows Subsystem for Linux (WSL) habilitado. Este tutorial utilizará Ubuntu 20.04 LTS.

Acerca del comando fc en Bash

fc no es una aplicación de Linux, sino una utilidad interna de la shell en Bash. Bash está disponible en la mayoría de las principales distribuciones de Linux. Con unos pocos golpes de teclado, el comando fc en Bash te permite listar, editar o ejecutar comandos anteriores.

El comando fc también está disponible en Shell Z (ZSH). Pero el ejemplo en este artículo usará fc en Bash.

¿Ejecutaste un comando largo que resultó ser incorrecto? fc te ahorrará tener que volver a escribir todo el comando. En cambio, fc te permite editar el comando usando el editor de texto de tu elección. ¡Después de guardar tus ediciones, el comando editado se ejecutará automáticamente!

¿Listo para probar fc? ¡Vamos a sumergirnos!

Listando Comandos Anteriores

¿Te alejaste de tu computadora, volviste y olvidaste qué comando ejecutaste por última vez? O tal vez no recuerdas si has ejecutado múltiples comandos en la secuencia correcta. ¿Qué haces? Relájate, fc te ayudará a recordar. Así es cómo.

1. Abre una terminal de Bash en tu computadora.

2. Para que fc sea útil, debe tener algún tipo de historial de comandos con el que trabajar. Dado que acabas de abrir una nueva ventana de terminal, es posible que aún no haya un historial de comandos. Para construir un historial de comandos para probar, copia cada comando a continuación y ejecútalo en tu terminal. Estos comandos no son intrusivos y no estás poniendo en peligro tu computadora.

# Limpiar la pantalla
 clear
 
# Imprimir una cadena en la sesión de terminal
 echo 'working on the command line with fc'
 
# Mostrar alguna información del sistema
 uname -a
 
# Usar el comando PS para obtener información del proceso
 ps aux

3. A continuación, enumera todos los comandos en el historial ejecutando el siguiente comando. La opción -l instruye a fc a solo listar todos los comandos anteriores y no ejecutarlos.

fc -l

Como puedes ver a continuación, el comando fc mostró los cuatro comandos que emitiste anteriormente. Los números a la izquierda indican el orden en que ejecutaste cada comando.

Listing command history with fc

Edición y Re-ejecución del Último Comando

Imagina una situación donde estás instalando una aplicación, y cometiste un error de ortografía. Como resultado, el comando falla. En lugar de volver a escribir todo el comando, ¿por qué no editarlo y volver a ejecutarlo automáticamente? Para hacerlo, sigue estos pasos.

1. Simula la instalación de una aplicación que no existe ejecutando el siguiente comando en tu terminal. Observa que intencionalmente escribirás mal el nombre de la aplicación caffiene.

sudo apt install caffiene -y

Como resultado, la instalación intentada fallará. Obtendrás un mensaje similar al siguiente.

Failed installation message

2. Para corregir el último comando que ejecutaste, ejecuta el siguiente comando en la terminal. Al hacerlo, se abrirá el búfer de historial de comandos en el editor de texto predeterminado. En este ejemplo, el editor de texto predeterminado es nano.

fc

La captura de pantalla a continuación muestra el último comando dentro del editor nano.

Editing the last command with nano.

Si nano no es tu editor de texto preferido, puedes instruir a fc para que utilice un editor diferente, como vi. Para hacerlo, incluye la opción -e seguida del nombre del editor de texto. Por ejemplo, fc -e vi abrirá el historial de comandos en el editor de texto vi.

3. Una vez que estés en el editor de texto nano, corrige la ortografía del nombre de la aplicación de caffiene a caffeine.

4. Después de corregir el nombre de la aplicación, presiona CTRL+X para salir de nano.

5. En el próximo aviso que te pida ¿Guardar el búfer modificado?, presiona Y —> Enter para guardar los cambios.

Editing the last command and saving changes to the history buffer

Justo después de salir del editor de texto, fc ejecuta automáticamente el comando que editaste.

Automatically re-executing the edited command

Editar y Volver a Ejecutar un Comando Anterior

Con fc, no solo puedes editar el último comando que has ejecutado, sino que puedes editar cualquiera de los comandos anteriores que hayas ejecutado. Por ejemplo, para editar el comando echo 'trabajando en la línea de comandos con fc', sigue estos pasos.

1. Lista el comando anterior en el terminal ejecutando el siguiente comando.

fc -l

2. Encuentra el comando que deseas editar en la lista de historial de comandos y toma nota del número a su izquierda. En este ejemplo, el número de comando es 2.

Listing the command history and finding the command number to edit

3. Para editar el comando con el número de entrada 2, ejecuta el siguiente comando en el terminal. El comando se abrirá en el editor de texto para su edición.

fc 2

4. Una vez en el editor de texto, ahora edita el comando según sea necesario.

5. Después de editar el comando, presiona CTRL+X para salir de nano.

6. En el próximo indicador que te pregunte ¿Guardar el búfer modificado?, presiona Y —> Enter para guardar los cambios.

Editing a past command entry in the history buffer

Después de guardar el comando y salir del editor de texto, el comando editado se ejecutará automáticamente en la terminal.

Edición y Reejecución de Múltiples Comandos

Si piensas que fc solo puede editar y ejecutar un comando anterior a la vez, ¡te llevarás una sorpresa! ¿Por qué? fc te permite editar varios comandos anteriores también. ¿Cómo es útil editar varios comandos anteriores? Por un lado, puedes cambiar el orden de ejecución de los comandos.

Supongamos que deseas editar los comandos anteriores del número 2 al 7. Para hacerlo, sigue estos pasos.

1. Ejecuta el siguiente comando en tu terminal Bash y presiona Enter. El comando siguiente se lee como fc <space> 2 <space> 7, lo que significa que fc abrirá los comandos del 2 al 7 para editar.

fc 2 7

2. Luego, edita los comandos según sea necesario. Para este ejemplo:

  • Elimina el comando sudo apt install caffiene -y.
  • Intercambia el orden de uname -a y ps aux.
  • Elimina clear.
Editing command history entries 2 through 7 at once

3. Después de editar los comandos, presiona CTRL+X para salir de nano.

4. En el próximo indicador que te pregunte ¿Guardar el búfer modificado?, presiona Y —> Enter para guardar los cambios.

Las órdenes que editaste se ejecutarán automáticamente después de salir del editor de texto.

Automatically re-executing the edited command

Volver a Ejecutar un Comando Anterior sin Editar

Supongamos que solo necesitas ejecutar un comando anterior sin editarlo primero. fc tiene una opción para eso. Sigue los pasos a continuación para ejecutar un comando anterior desde una entrada especificada en el historial.

  1. Enumera el comando anterior en la terminal ejecutando el comando a continuación.
fc -l

2. En la lista de historial de comandos, encuentra el comando que deseas ejecutar nuevamente y toma nota del número a su izquierda. En este ejemplo, el número de comando es 2.

Listing the command history and finding the command number to execute

3. Para ejecutar el comando anterior específico, ejecuta el siguiente comando en la terminal. La opción -s instruye a fc a omitir la edición y continuar ejecutando el comando número 2.

fc -s 2

La captura de pantalla a continuación muestra que fc ejecutó el comando número 2 del historial de comandos.

Executing a previous command from the history buffer without editing

Conclusión

Este artículo tiene como objetivo despertar tu interés en un comando útil pero a menudo pasado por alto y olvidado llamado fc. Aprendiste cómo usar fc para evitar volver a escribir comandos previamente ejecutados, lo cual puede ser una pérdida de tiempo.

Con el conocimiento que ahora tienes sobre fc, ¿es algo que crees que usarías? ¿O seguirás prefiriendo volver a escribir comandos en la terminal? ¡Haz una elección sabia!

Source:
https://adamtheautomator.com/bash-fc-command/