Como criar aliases e funções de shell no Linux

Uma janela de terminal em um laptop Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

Crie seus próprios comandos do Linux usando aliases e funções de shell Bash. Domine tarefas repetitivas, trunque processos demorados e configure comandos padrão com as opções que você sempre usa e se esforça para lembrar.

Aliases e scripts de shell são técnicas poderosas em sistemas operacionais Linux e Unix que permitem que você aprimore sua experiência de linha de comando para ser exatamente o que você deseja. Você pode definir seus próprios comandos adequados às suas necessidades específicas e para aliviar o fardo de tarefas repetitivas.

Aliases e scripts de shell fazem o mesmo tipo de trabalho. Eles permitem que você defina – e nomeie – um conjunto de funcionalidades do shell Bash que pode ser chamado pelo nome que você deu a ele. Digitar o nome é mais fácil e conveniente do que digitar todas as etapas ou comandos toda vez que quiser usá-los.

A diferença entre um alias e um script é de complexidade e escala. Os scripts são melhores para conter pedaços de código mais longos e elaborados. Os aliases são perfeitos para manter conjuntos de comandos mais curtos e sucintos.

Aliases predefinidos

Alguns aliases são predefinidos para você. Para ver a lista de aliases definidos em seu sistema, use o comando alias sem parâmetros:

apelido

alias em uma janela de terminal

Esses são os aliases definidos na máquina de teste Ubuntu em que este artigo foi pesquisado. Se eu tivesse definido quaisquer aliases personalizados, eles também apareceriam nesta lista.

No topo da lista, há um alias de aparência complicada chamado alert. Chegaremos a isso em um momento. Há vários aliases diferentes para o lscomando e um grupo de aliases que fornecem saída de cores para a grep família de comandos . Por exemplo, com esses aliases definidos, sempre que você digitar:

grep

O sistema irá interpretá-lo como:

grep --color = auto

Isso mostra um ponto importante com aliases. Eles podem ter o mesmo nome dos comandos existentes. Eles podem até conter o comando original dentro de si.

Aqui está a definição do grepalias.

alias grep = 'grep --color = auto'
  • O aliascomando é usado para definir um alias.
  • O nome do alias é fornecido a seguir. Neste exemplo, é grep.
  • O sinal de igual conecta o nome do alias ao corpo do alias. Para todos os aliases, exceto os muito simples, o corpo do alias é colocado entre aspas simples '.
  • O corpo do alias é a seção que é executada quando o alias é usado na linha de comando.

O corpo deste alias simplesmente chama o  grep comando com a --color=autoopção.

O alerta Alias

Como um aparte rápido, e para que você saiba o que ele faz, o alertalias é usado para avisar quando um comando foi concluído. Também indica se o comando foi concluído com sucesso ou não. Ele fornece um alerta gráfico do sistema na parte superior da tela.

Aqui está um exemplo simples. O sleepcomando ficará suspenso por cinco segundos., O alertalias será então chamado. O alias verifica a resposta do comando anterior. Ele extrai o último comando do arquivo de histórico. Ele determina se o comando foi concluído com sucesso ou não. Em seguida, apresenta os resultados em um alerta do sistema.

Recomendado:  Como desativar a tela de bloqueio do seu switch Nintendo

Se o comando foi concluído conforme o esperado, o ícone no alerta do sistema é uma pequena janela de terminal. Se o comando retornou um código de erro, o ícone no alerta do sistema é um ícone de erro vermelho.

dormir 5; alerta

dormir 5;  alerta em uma janela de terminal

Após cinco segundos, vemos este alerta do sistema:

Alerta do sistema para o comando de suspensão

O ícone é uma pequena janela de terminal, o que significa que tudo correu bem. Vamos tentar novamente com um comando que sabemos que falhará:

Condenado ao fracasso; alerta

Condenado ao fracasso;  alerta em uma janela de terminal

Nosso alerta de sistema agora tem um ícone de erro.

Alerta do sistema para um comando com falha com ícone de erro

Definindo um Alias ​​Trivial

Como vimos, para definir um alias, usamos o aliascomando.

Vamos criar um pseudônimo para o clearcomando. Nosso alias será chamado clse ele irá chamar o clear comando .

Nossa definição de alias é tão trivial que não garante ser incluída em aspas simples. Se o corpo do alias for mais complexo do que isso, ou se contiver espaços, coloque-o entre aspas simples. Vamos definir o alias, usar lspara colocar alguma saída na janela do terminal e então usar nosso novo alias  clspara limpar a tela.

alias cls = clear
ls -l
cls

alias cls = clear em uma janela de terminal

A tela está limpa. Sucesso, embora de curta duração. O alias sobreviverá apenas enquanto a janela do terminal permanecer aberta. Assim que a janela for fechada, o alias desaparecerá.

Então, como tornamos nossos aliases permanentes?

O arquivo .bashrc e os aliases

Você pode estar se perguntando onde os aliases pré-empacotados são definidos. ele está no arquivo “.bashrc” em sua pasta de início. Este arquivo é lido e os comandos dentro dele executados sempre que você inicia um shell interativo. Ou seja, quando você abre uma janela de terminal.

Digite o seguinte comando em sua pasta pessoal para ver o conteúdo do arquivo “.bashrc” com destaque de sintaxe.

gedit .bashrc

gedit .bashrc em uma janela de terminal

Isso iniciará o gediteditor com o arquivo “.bashrc” carregado nele.

gedit com .bashrc carregado nele

As áreas destacadas mostram duas áreas onde os aliases são definidos.

Rolar pelo documento revelará duas outras seções relacionadas a aliases:

gedit com .bashrc carregado nele, e a seção .bash_aliases destacada

O primeiro deles é a definição do alertalias. A segunda é uma ifdeclaração. Isso se traduz em “se o arquivo“ .bash_aliases ”existir, leia-o.”

Se você tiver apenas alguns apelidos que deseja definir, pode colocá-los em seu arquivo “.bashrc”. Coloque-os abaixo da seção que contém os lsaliases.

Se você vai criar muitos apelidos, ou apenas gosta da ideia de ter seus apelidos encapsulados em seus próprios arquivos, você pode defini-los em seu arquivo “.bash_aliases”. Uma vantagem de criá-los em seu arquivo “.bash_aliases” é que você não pode alterar acidentalmente nenhuma das configurações no arquivo “.bashrc”. Outra vantagem é que seus apelidos são facilmente copiados para novos sistemas porque eles são totalmente divorciados do arquivo “.bashrc”.

Armazenamento de aliases no arquivo .bash_aliases

O arquivo “.bash_aliases” não existirá até que você o crie. Você pode criar o arquivo com este comando:

toque em .bash_aliases

toque em .bash_aliases em uma janela de terminal

Vamos editar o arquivo e adicionar alguns aliases a ele. Este comando irá abrir o arquivo “.bash_aliases” no gediteditor.

gedit .bash_aliases

editor gedit com .bash_aliases carregado nele

Adicionamos três aliases. O primeiro é o nosso clsalias que usamos anteriormente. O próximo é chamado h.e é uma forma abreviada de chamar o historycomando.

Recomendado:  Como fazer um calendário no Microsoft Word

O terceiro alias é chamado ftc. Isso significa “contagem de tipo de arquivo”.

Esse alias é mais complexo, portanto, é colocado entre aspas simples. Ele usa uma cadeia de comandos ligados por tubos. Ele produz uma lista ordenada das diferentes extensões de arquivo e nomes de diretório, com uma contagem para cada entrada da lista.

Quando salvamos o arquivo “.bash_aliases”, podemos esperar que nossos aliases estejam ativos e acessíveis. Esse não é o caso. O arquivo deve ser lido pelo shell Bash antes que as definições de alias estejam ativas. Isso é feito sempre que um shell interativo é aberto.

Também podemos usar o shell Bash embutido .para ler e executar os comandos em um arquivo. Como nosso arquivo “.bash_alias” é lido quando “.bashrc” é processado, devemos realizar nosso teste chamando “.bashrc”. Dessa forma, podemos verificar se o arquivo “.bash_alias” é chamado de “.bashrc” e se nossos apelidos estão vivos e bem.

Os comandos que usamos são:

gedit .bash_alias

Para editar o arquivo “.bash_alias”.

. .bashrc

Isso lerá e executará os comandos em “.bashrc”, que chamará “.bash_alias”.

ftc

Isso chamará o ftcalias.

.  .bashrc em uma janela de terminal

Nosso alias responde, o que significa que o Bash leu “.bashrc” e “.bash_aliases”, e nossos novos aliases agora estão ativos.

Agora você pode ir em frente e adicionar novos aliases ao arquivo “.bash_aliases” conforme eles ocorrem para você. Se você estiver fazendo coisas mais de uma ou duas vezes, considere criar um apelido para isso.

Removendo Aliases

Existe um comando para remover aliases de  forma que BAsh não os reconheça nem responda a eles. Refrescantemente direto, o comando é chamado unalias.

Para usá-lo, forneça o nome do apelido que você deseja que o Bash esqueça. Para fazer o Bash esquecer nosso ftcalias, use unaliasassim:

unalias ftc

Você pode usar unaliaspara remover aliases definidos e qualquer um dos aliases predefinidos.

Para remover todos os aliases de seu sistema, use a -aopção (todos):

unalias -a

A perda de memória de Bash não será permanente, no entanto. Na próxima vez que você abrir uma janela de terminal, os aliases “esquecidos” estarão de volta. Para realmente eliminá-los, você precisa removê-los de seus arquivos “.bashrc” e “.bash_alias”.

Se você acha que gostaria de tê-los de volta, não os exclua do seu arquivo “.bashrc”. Em vez disso, comente-os adicionando um hash #ao início de cada aliaslinha. Para tornar seu arquivo “.bash_alias” ineficaz, renomeie-o. Se o seu arquivo “.bashrc” não puder vê-lo, ele não o lerá. Reverter essas etapas para restaurar seus apelidos é uma questão trivial.

Funções Shell

Aliases Lika, funções do shell Bash podem ser definidas dentro do arquivo “.bashrc”, mas geralmente é mais simples colocá-los em seus próprios arquivos de definições. Vamos chamá-lo de “.bash_functions”, seguindo a convenção usada para o arquivo “.bash_aliases”.

Isso significa que precisamos dizer ao arquivo “.bashrc” para ler nossas definições. Podemos copiar e corrigir o trecho de código que lê no arquivo “.bash_aliases”. Inicie gedite carregue o arquivo “.bashrc” com este comando:

gedit .bashrc

gedit .bashrc em uma janela de terminal

Você precisa adicionar a seção destacada mostrada abaixo.

Recomendado:  Como instalar o macOS High Sierra no VirtualBox no Windows 10

Você pode destacar a seção de alias e pressionar Ctrl+Ce, a seguir, mover para onde deseja a nova seção e pressionar Ctrl+Vpara colar uma cópia do texto. Então, tudo o que você precisa fazer é alterar os dois lugares onde diz “.bash_aliases” para “.bash_functions”.

gedit com .bashrc carregado e uma nova seção .bash) _functions destacada

Podemos salvar essas alterações e fechar gedit.

Agora vamos criar e editar o arquivo “.bash_functions” e colocar uma definição de função nele.

toque em .bash_functions
gedit .bash_functions

toque em .bash_functions em uma janela de terminal

Isso abrirá o arquivo vazio “.bash_functions” em gedit.

Vamos adicionar uma função simples chamada up. upterá um único parâmetro de linha de comando, que é um dígito. upirá então ligar para cd ..esse número de vezes. Então, se você usou o comando

até 2

upchamaria cd ..duas vezes e subiria dois níveis na árvore de diretórios.

Existem diferentes maneiras de definir uma função. Aqui está um:

function up () {

A palavra functioné opcional. Se você é um tradicionalista, use-o, se não se incomodar em digitar, deixe-o de fora.

Aqui está toda a nossa função em gedit:

A função up () do shell Bash no gedit

function up () {

Isso marca o início de nossa definição de função e dá nome à função up.

níveis = $ 1

Isso cria uma variável chamada levelse a define com o valor do primeiro parâmetro. Este parâmetro será um dígito fornecido pelo usuário ao chamar a função. A $1significa “primeiro parâmetro de linha de comando.”

enquanto ["$ níveis" -gt "0"]; Faz

Em seguida, entramos em um loop. Isso se traduz como “enquanto o valor de levelsfor maior que zero, faça o que está contido no corpo do loop”.

Dentro do corpo do loop, temos dois comandos. Eles são:

cd ..

Suba um nível na árvore de diretórios.

níveis = $ (($ níveis - 1))

Defina levelsum novo valor, que é um a menos que seu valor atual.

Em seguida, voltamos ao topo do loop, a comparação entre o valor de levelse zero é feita mais uma vez. Se  levelsfor maior que zero, o corpo do loop é executado novamente. Se não for maior que zero, o loop termina, passamos para a doneinstrução e a função termina.

Salve essas alterações e feche gedit.

Leremos e executaremos os comandos em “.bashrc” que devem ler e executar os comandos em nosso arquivo “.bash_functions”.

. .bashrc

.  .bashrc em uma janela de terminal

Podemos testar a função movendo para algum local na árvore de diretórios e usando uppara voltar a um ponto “mais alto” na árvore de diretórios.

cd ./work/backup/
até 2

cd ./work/backup/ em uma janela de terminal

A função funciona. Nós movemos dois níveis de diretório mais altos na árvore.

Acompanhando o tipo

Conforme você constrói um conjunto de aliases e uma biblioteca de funções, pode se tornar difícil lembrar se um comando específico é um alias ou uma função. Você pode usar o typecomando para lembrá-lo . O legal aqui é que você também consegue ver a definição.

Vamos usar typeem nosso ftcalias e nossa upfunção.

digite ftc
digite

digite ftc em uma janela de terminal

Recebemos um lembrete muito útil do tipo de comando de cada um, junto com suas definições.

Comece a Coletar

Aliases e funções podem acelerar o uso da linha de comando tremendamente. Eles podem encurtar as sequências de comandos e permitem que você associe as opções que sempre usa com os comandos padrão.

Cada vez que você vir uma única linha bacana ou uma função útil, pode adaptá-la e personalizá-la e, em seguida, adicioná-la aos seus arquivos “.bash_aliases” ou “.bash_functions”.