Comando fc do Bash: Manipule Facilmente o Shell Bash Como um Profissional

Você já executou um comando no Bash e obteve um erro por causa de uma palavra mal escrita? Ou talvez tenha esquecido os últimos três comandos que você executou? Em vez de reescrever ou lembrar comandos anteriores, o comando Bash fc pode ajudar a fazer edições rápidas e reexecutar comandos anteriores.

Neste artigo, você aprenderá como aproveitar o fc para editar e reexecutar comandos do seu histórico de comandos. Depois de ler este guia, você estará dominando o fc como o guerreiro da linha de comando que deseja ser!

Pré-requisitos

Este artigo será um tutorial. Se você planeja seguir passo a passo, você precisa de um computador Linux ou um computador com Windows 10 com Windows Subsystem for Linux (WSL) ativado. Este tutorial usará Ubuntu 20.04 LTS.

Sobre o comando Bash fc

fc não é um aplicativo Linux, mas um utilitário de shell integrado no Bash. O Bash está disponível na maioria das principais distribuições Linux. Com alguns toques de tecla, o comando Bash fc permite que você liste, edite ou execute comandos anteriores.

O comando fc também está disponível no Z Shell (ZSH).

Você executou um comando longo que acabou sendo incorreto? O fc irá poupar você de digitar o comando inteiro novamente. Em vez disso, o fc permite que você edite o comando usando o editor de texto de sua escolha. Após salvar as edições, o(s) comando(s) editado(s) serão executados automaticamente!

Pronto para testar o fc? Vamos lá!

Listando Comandos Anteriores

Já se afastou do seu computador, voltou e esqueceu qual comando você executou por último? Ou talvez não se lembre se executou vários comandos na sequência correta. O que fazer? Relaxe, o fc irá ajudar você a lembrar. Veja como.

1. Abra um terminal Bash no seu computador.

2. Para que o fc seja útil, ele deve ter algum tipo de histórico de comandos para trabalhar. Como você acabou de abrir uma nova janela de terminal, pode ser que ainda não haja um histórico de comandos. Para criar um histórico de comandos para teste, copie cada comando abaixo e execute no seu terminal. Esses comandos não são intrusivos e não colocam seu computador em perigo.

# Limpar a tela
 clear
 
# Imprimir uma string na sessão do terminal
 echo 'working on the command line with fc'
 
# Mostrar algumas informações do sistema
 uname -a
 
# Usar o comando PS para obter informações do processo
 ps aux

3. Em seguida, liste todos os comandos no histórico executando o comando abaixo. A opção -l instrui o fc a listar apenas todos os comandos anteriores sem executá-los.

fc -l

Como você pode ver abaixo, o comando fc exibiu os quatro comandos que você emitiu anteriormente. Os números à esquerda indicam a ordem em que você executou cada comando.

Listing command history with fc

Edição e Reexecução do Último Comando

Imagine uma situação em que você está instalando um aplicativo e cometeu um erro de digitação. Como resultado, o comando falha. Em vez de reescrever o comando inteiro, por que não editá-lo e reexecutá-lo automaticamente? Para fazer isso, siga estas etapas.

1. Simule a instalação de um aplicativo inexistente executando o comando abaixo no seu terminal. Observe que você irá intencionalmente errar o nome do aplicativo caffiene.

sudo apt install caffiene -y

Como resultado, a instalação tentada falhará. Você receberá uma mensagem semelhante à mostrada abaixo.

Failed installation message

2. Para corrigir o último comando que você executou, execute o comando abaixo no terminal. Isso abrirá o buffer de histórico de comandos no editor de texto padrão. Neste exemplo, o editor de texto padrão é nano.

fc

A captura de tela abaixo mostra o último comando dentro do editor nano.

Editing the last command with nano.

Se o nano não é o seu editor de texto preferido, você pode instruir o fc a usar um editor diferente, como o vi. Para fazer isso, inclua a opção -e seguida pelo nome do editor de texto. Por exemplo, fc -e vi abrirá o histórico de comandos no editor de texto vi.

3. Depois de entrar no editor de texto nano, corrija a grafia do nome da aplicação de caffiene para caffeine.

4. Após corrigir o nome da aplicação, pressione CTRL+X para sair do nano.

5. Na próxima solicitação que pedir para Salvar buffer modificado?, pressione Y —> Enter para salvar as alterações.

Editing the last command and saving changes to the history buffer

Imediatamente após sair do editor de texto, o fc executa automaticamente o comando que você editou.

Automatically re-executing the edited command

Editando e Reexecutando um Comando Anterior

Com o fc, não só você pode editar o último comando que executou, mas também pode editar qualquer um dos comandos anteriores que executou. Por exemplo, para editar o comando echo 'trabalhando na linha de comando com fc', siga estas etapas.

1. Liste o comando anterior no terminal executando o comando abaixo.

fc -l

2. Encontre o comando que deseja editar na lista de histórico de comandos e anote o número à esquerda dele. Neste exemplo, o número do comando é 2.

Listing the command history and finding the command number to edit

3. Para editar o comando com o número de entrada 2, execute o comando abaixo no terminal. O comando será aberto no editor de texto para edição.

fc 2

4. Uma vez no editor de texto, agora edite o comando conforme necessário.

5. Após editar o comando, pressione CTRL+X para sair do nano.

6. Na próxima solicitação que pedir para você Salvar buffer modificado?, pressione Y —> Enter para salvar as alterações.

Editing a past command entry in the history buffer

Após salvar o comando e sair do editor de texto, o comando que você editou será executado automaticamente no shell.

Edição e Reexecução de Múltiplos Comandos

Se você pensa que o fc só pode editar e executar um comando anterior por vez, então está prestes a ter uma surpresa. Por quê? O fc permite que você edite vários comandos anteriores também! Como é útil editar vários comandos anteriores? Por um lado, você pode alterar a ordem de execução dos comandos.

Suponha que você queira editar os comandos anteriores de 2 a 7. Para fazer isso, siga os passos abaixo.

1. Execute o comando abaixo no seu terminal Bash e pressione Enter. O comando abaixo é lido como fc <espaço> 2 <espaço> 7, o que significa que o fc abrirá os comandos de 2 a 7 para edição.

fc 2 7

2. Em seguida, edite os comandos conforme necessário. Para este exemplo:

  • Exclua o comando sudo apt install caffiene -y.
  • Inverta a ordem de uname -a e ps aux.
  • Exclua o clear.
Editing command history entries 2 through 7 at once

3. Após editar os comandos, pressione CTRL+X para sair do nano.

4. Na próxima solicitação que perguntar se deseja Salvar buffer modificado?, pressione Y —> Enter para salvar as alterações.

As instruções que você editou serão executadas automaticamente após sair do editor de texto.

Automatically re-executing the edited command

Reexecutando um Comando Anterior Sem Edição

Suponha que você precise executar um comando anterior sem editar primeiro. fc tem uma opção para isso. Siga as etapas abaixo para executar um comando anterior a partir de uma entrada específica no histórico.

  1. Liste o comando anterior no terminal executando o comando abaixo.
fc -l

2. Na lista de histórico de comandos, encontre o comando que deseja executar novamente e anote o número à sua esquerda. Neste exemplo, o número do comando é 2.

Listing the command history and finding the command number to execute

3. Para executar o comando anterior específico, execute o comando abaixo no shell. A opção -s instrui o fc a pular a edição e continuar a executar o comando número 2.

fc -s 2

A captura de tela abaixo mostra o fc executando o comando número 2 a partir do histórico de comandos.

Executing a previous command from the history buffer without editing

Conclusão

Este artigo buscou despertar seu interesse por um comando útil, mas muitas vezes esquecido, chamado fc. Você aprendeu como usar o fc para evitar reescrever comandos previamente executados, o que pode ser uma perda de tempo.

Com o conhecimento que você agora possui sobre o fc, é algo que você acha que usaria? Ou ainda prefere digitar os comandos no shell? Faça uma escolha sábia!

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