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.
Índice
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
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 ls
comando 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 grep
alias.
alias grep = 'grep --color = auto'
- O
alias
comando é 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=auto
opção.
O alerta Alias
Como um aparte rápido, e para que você saiba o que ele faz, o alert
alias é 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 sleep
comando ficará suspenso por cinco segundos., O alert
alias 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.
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
Após cinco segundos, vemos este alerta do sistema:
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
Nosso alerta de sistema agora tem um ícone de erro.
Definindo um Alias Trivial
Como vimos, para definir um alias, usamos o alias
comando.
Vamos criar um pseudônimo para o clear
comando. Nosso alias será chamado cls
e 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 ls
para colocar alguma saída na janela do terminal e então usar nosso novo alias cls
para limpar a tela.
alias cls = clear
ls -l
cls
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
Isso iniciará o gedit
editor com o arquivo “.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:
O primeiro deles é a definição do alert
alias. A segunda é uma if
declaraçã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 ls
aliases.
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
Vamos editar o arquivo e adicionar alguns aliases a ele. Este comando irá abrir o arquivo “.bash_aliases” no gedit
editor.
gedit .bash_aliases
Adicionamos três aliases. O primeiro é o nosso cls
alias que usamos anteriormente. O próximo é chamado h.
e é uma forma abreviada de chamar o history
comando.
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 ftc
alias.
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 ftc
alias, use unalias
assim:
unalias ftc
Você pode usar unalias
para remover aliases definidos e qualquer um dos aliases predefinidos.
Para remover todos os aliases de seu sistema, use a -a
opçã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 alias
linha. 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 gedit
e carregue o arquivo “.bashrc” com este comando:
gedit .bashrc
Você precisa adicionar a seção destacada mostrada abaixo.
Você pode destacar a seção de alias e pressionar Ctrl+C
e, a seguir, mover para onde deseja a nova seção e pressionar Ctrl+V
para 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”.
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
Isso abrirá o arquivo vazio “.bash_functions” em gedit
.
Vamos adicionar uma função simples chamada up
. up
terá um único parâmetro de linha de comando, que é um dígito. up
irá então ligar para cd ..
esse número de vezes. Então, se você usou o comando
até 2
up
chamaria 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
:
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 levels
e 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 $1
significa “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 levels
for 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 levels
um novo valor, que é um a menos que seu valor atual.
Em seguida, voltamos ao topo do loop, a comparação entre o valor de levels
e zero é feita mais uma vez. Se levels
for maior que zero, o corpo do loop é executado novamente. Se não for maior que zero, o loop termina, passamos para a done
instruçã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
Podemos testar a função movendo para algum local na árvore de diretórios e usando up
para voltar a um ponto “mais alto” na árvore de diretórios.
cd ./work/backup/
até 2
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 type
comando para lembrá-lo . O legal aqui é que você também consegue ver a definição.
Vamos usar type
em nosso ftc
alias e nossa up
função.
digite ftc
digite
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”.