Se você trabalha com tecnologia é bem provável que você faça uso de um shell por boa parte do dia. Por padrão o shell de sistemas GNU/linux é o bash, ou alternativas como o dash. Para facilitar o uso e aumentar a produtividade do usuário o bash tem várias funções que podem ser desconhecidas por alguns de seus usuários. Neste texto irei listar comandos e atalhos úteis para o dia a dia.
Comandos
A shell guarda um histórico de comandos executados e permite reutilizar comandos ou partes dele.
A referência ao histórico é feita pelo caractere !. Pode-se inserir apenas uma palavra de um comando do histórico e realizar modificações.
Selecionando um item do histórico
Executando o comando history são exibidos os comandos executados com um número. Referencia-se este comando adicionando o número após o !. Por exemplo, na figura abaixo !221 seria o comando history:
Pode-se utilizar números negativos para fazer referências a comandos anteriores ao atual. Na imagem anterior o comando history poderia ser referenciado também como !-1 e !-2 seria o comando echo loren ipsum dolor sit amet. !-1 também pode ser escrito como !!. A referência também pode ser feita como uma busca. !foo referencia o comando mais recente que inicie com foo e !?bar? referencia o comando mais recente que contenha bar. Pode-se referenciar também o comando que está sendo digitado com !#.
Logo após a referência do comando pode ser adicionado um : para fazer referência a apenas alguns parâmetros ou palavras. !!:1 é o primeiro argumento do comando anterior, !!:0 é o comando, !!:$ é o último e !!:1-4 são os argumentos de 1 a 4. Nos casos anteriores, no lugar de !! poderia ser escrito só !. Também é possível utilizar !!:* para utilizar todos os argumentos (equivalente a !!:1-$) ou !!:3* para utilizar do terceiro até o último.
É possível realizar modificações na linha ou palavra selecionada. Para adicionar uma modificação basta adicionar um : e a modificação. Para realizar uma substituição utiliza-se s para modificar uma vez e gs para modificar todas ocorrências. Por exemplo, assuma que !! seja o comando echo Lorem ipsum dolor sit amet. Para substituir o Lorem por lorem utiliza-se !!:s/Lorem/lorem/. Também podemos utilizar ^Lorem^lorem^.
Em resumo:
- Referência a um comando
nno histórico =!n - Referência a um comando anterior =
!-n - Referência ao comando anterior =
!-1=!! - Referência ao último comando
cat=!cat - Referência ao último comando com
arquivo.txt=!?arquivo.txt? - Referência ao comando sendo digitado =
!# - Referência a um argumento
n=:n - Referência a todos os argumentos =
:* - Referência aos argumentos
matén=:m-n - Referência aos argumentos
naté o último =:n* - Realizar uma substituição =
:s/velho/novo/ - Realizar todas substituições =
:gs/velho/novo/ - Realizar uma substituição no último comando =
^velho^novo^
Executando vários comandos
O comando fc permite abrir comandos do histórico em um editor de textos para que eles possam ser executados. Para editar o último comando make, utiliza-se fc -s make. Para editar os 3 últimos comandos, utiliza-se fc -3 -1. Para executar do comando 16 ao 20 no histórico, utiliza-se fc 16 20. fc -l também pode ser utilizado para mostrar os últimos comandos.
Em resumo:
- Editar e executar o último comando make =
fc -s make - Editar e executar os últimos 5 comandos =
fc -5 -1 - Editar e executar os comandos de 7 a 15 =
fc 7 15 - Listar os últimos comandos =
fc -l
Atalhos
Ao digitar texto no prompt do bash é possível realizar alguns comandos de edição por meio da biblioteca GNU readline. Os atalhos podem ser configurados por meio de um arquivo. Mais detalhes sobre a configuração e atalhos padrão podem ser encontrados na página do man, na página da wikipédia, ou no manual do usuário.
Movimento
As teclas ⬅️, ➡️, Home e End já são conhecidas. Além delas você pode utilizar Ctrl + seta ou Alt + seta para mover o cursor por palavra.
Além destas opções, a biblioteca permite utilizar Ctrl + b e Alt + b para mover o cursor para a esquerda um caractere e uma palavra, respectivamente, Ctrl + f e Alt + f para mover para a direita, Ctrl + a para mover para o início da linha e Ctrl + e para mover para o final. Ctrl + l é utilizado para limpar a tela e Ctrl + Alt + l para limpar a tela e o scroll.
Poderíamos resumir desta forma:
- ⬅️ =
Ctrl + b - ➡️ =
Ctrl + f -
Ctrl + <-ouAlt + <-=Alt + b -
Ctrl + ->ouAlt + ->=Alt + f -
Home=Ctrl + a -
End=Ctrl + e
Em teclados menores que exigem o uso da tecla Fn para acessar as teclas de seta, Home e End pode ser mais confortável utilizar os atalhos do readline.
Histórico de comandos
Utiliza-se comumente as teclas ⬆️ e ⬇️ para percorrer a lista de comandos no histórico e a tecla Enter para executá-los. Pode-se utilizar Ctrl + p, Ctrl + n e Ctrl + j para os mesmos fins. Para ir até o comando mais antigo do histórico utiliza-se Alt + < e Alt + > para o mais novo.
Se você frequentemente fica utilizando a seta ⬆️ para encontrar o comando, existem atalhos para realizar buscas no histórico. Ctrl + r é utilizado para buscar comandos mais antigos que o atual e Ctrl + s é utilizado para buscar comandos mais novos. Ao utilizar um destes atalhos o prompt vai mudar e você pode ir digitando o que deve ser buscado.
Para reutilizar o primeiro argumento do comando anterior utiliza-se Ctrl + Alt + y. Pode-se selecionar outro argumento teclando a tecla Esc + número e Ctrl + Alt + y. Para o último argumento utiliza-se Alt + . ou Alt + _. Por exemplo, assuma que o comando anterior seja echo Lorem ipsum dolor sit amet. Ao utilizar Ctrl + Alt + y a palavra Lorem seria inserida, Esc + 3 a palavra dolor e Alt + . a palavra amet.
Ao executar vários comandos sucessivos repetidas vezes, no lugar de executar o primeiro com Enter ou Ctrl + j, você pode utilizar Ctrl + o e já será inserido o próximo comando do histórico.
Resumo:
- ⬆️ =
Ctrl + p - ⬇️ =
Ctrl + n -
Enter=Ctrl + j - início do histórico =
Alt + < - fim do histórico =
Alt + > - busca "acima" =
Ctrl + r - busca "abaixo" =
Ctrl + s - Inserir o primeiro argumento do comando anterior =
Ctrl + Alt + y - Inserir o n-ésimo argumento =
Esc + ne apósCtrl + Alt + y - Inserir o último argumento =
Alt + . - Executar um comando do histórico e inserir o próximo =
Ctrl + o
Edição da linha
As teclas <- Backspace e Delete já são conhecidas. No lugar da tecla <- Backspace pode-se utilizar Ctrl + ?. No lugar da tecla Delete pode-se utilizar Ctrl + d.
Para trocar duas palavras de lugar, utiliza-se Alt + t. Utiliza-se Alt + u e Alt + l para transformar a palavra em maiúsculas e minúsculas, respectivamente. Alt + c transforma a letra sob o cursor para maiúscula e todas as outras da palavra em minúscula.
Em resumo:
-
<- Backspace=Ctrl + ? -
Delete=Ctrl + d - Transformar palavra em maiúsculas =
Alt + u - Transformar palavra em minúsculas =
Alt + l - Capitalizar letra na palavra =
Alt + c
Recortar e Colar
Ctrl + w e Alt + d são utilizados para recortar do cursor para o início e fim da palavra, respectivamente. Ctrl + y é utilizado para colar texto recortado. Ctrl + u e Ctrl + k são utilizados para recortar do cursor para o início e fim da linha, respectivamente.
Em resumo:
- Recortar do cursor pro início da linha =
Ctrl + u - Recortar do cursor pro início da palavra =
Ctrl + w - Recortar do cursor pro fim da palavra =
Alt + d - Recortar do cursor pro fim da linha =
Ctrl + k - Colar texto recortado =
Ctrl + y
Compleção
Utiliza-se Tab para completar a palavra até o cursor. Para exibir todas as possíveis compleções utiliza-se Alt + ?.
Em resumo:
- Completar =
Tab - Mostrar todas possibilidades para completar =
Alt + ?
Outros
- Abortar um comando sem executar =
Ctrl + g - Desfazer edição =
Ctrl + _ - Busca por caractere até final da linha =
Ctrl + ] - Busca por caractere até início da linha =
Ctrl + Alt + ]
Top comments (0)