Pesquisa de site

10 operadores de encadeamento úteis no Linux com exemplos


Encadear comandos do Linux significa combinar vários comandos e executá-los com base no comportamento do operador utilizado entre eles.

O encadeamento de comandos no Linux é algo como escrever scripts de shell curtos no próprio shell e executá-los diretamente no terminal. O encadeamento permite automatizar o processo.

Além disso, uma máquina autônoma pode funcionar sistematicamente com a ajuda de operadores encadeados.

Este artigo tem como objetivo esclarecer os operadores de encadeamento de comandos usados com frequência. Ele fornece descrições curtas e exemplos correspondentes que podem aumentar sua produtividade e permitir que você escreva códigos concisos e significativos, ao mesmo tempo que às vezes reduz a carga do sistema.

1. Operador E comercial (&) – Execute o comando Linux em segundo plano

A função de ‘&’ é fazer o comando ser executado em segundo plano. Basta digitar o comando seguido de um espaço em branco e ‘&‘. Você pode executar mais de um comando em segundo plano, de uma só vez.

Execute um único comando do Linux chamado ‘ping’ em segundo plano:

ping -­c5 linux-console.net &

Execute dois ou vários comandos apt em segundo plano, simultaneamente:

apt update & apt upgrade &

2. Operador ponto e vírgula (;) – Executar vários comandos

O operador ponto e vírgula (;) possibilita a execução de vários comandos de uma só vez e a execução do comando ocorre sequencialmente.

apt update ; apt upgrade ; mkdir test

A combinação de comandos acima executará primeiro a instrução update, depois a instrução upgrade e, finalmente, criará um diretório ‘test’ no diretório de trabalho atual.

3. Operador AND (&&) – Execute o segundo comando após sucesso

O Operador AND (&&) executaria o segundo comando apenas, se a execução do primeiro comando fosse BEM SUCEDIDA, ou seja, o status de saída do o primeiro comando é 0. Este comando é muito útil para verificar o status de execução do último comando.

Por exemplo, quero visitar o site linux-console.net usando o comando links, no terminal, mas antes disso preciso verificar se o host é live ou não.

ping -c3 linux-console.net && links linux-console.net

4. Operador OR (||) – Execução Condicional de Comando

O Operador OR (||) é muito parecido com uma instrução ‘else’ em programação. O operador || permite executar o segundo comando somente se a execução do primeiro comando falhar, ou seja, o status de saída do primeiro comando é ‘1’.

Por exemplo, quero executar 'apt update' a partir de uma conta não root e se o primeiro comando falhar, então o segundo comando 'links linux-console.net' irá executar.

apt update || links linux-console.net

No comando acima, como o usuário não teve permissão para atualizar o sistema, significa que o status de saída do primeiro comando é '1' e, portanto, o último comando 'links linux-console.net' é executado.

E se o primeiro comando for executado com sucesso, com status de saída ‘0‘? Obviamente! O segundo comando não será executado.

mkdir test || links linux-console.net

Aqui, o usuário cria uma pasta ‘test’ em seu diretório inicial, para a qual o usuário tem permissão. O comando foi executado com sucesso, fornecendo um status de saída ‘0’ e, portanto, a última parte do comando não foi executada.

5. Operador NOT (!) – Execução Seletiva de Comandos

O operador NOT (!) é muito parecido com uma instrução ‘except’. Este comando executará tudo, exceto a condição fornecida. Para entender isso, crie um diretório ‘tecmint’ em seu diretório inicial e ‘cd‘ para ele.

mkdir tecmint 
cd tecmint

A seguir, crie vários tipos de arquivos na pasta ‘tecmint‘.

touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

Veja que criamos todos os novos arquivos dentro da pasta ‘tecmint‘.

ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

Agora exclua todos os arquivos, exceto o arquivo ‘html’ de uma só vez, de forma inteligente usando o comando rm.

rm -r !(*.html)

Só para verificar, última execução. Liste todos os arquivos disponíveis usando o comando ls.

ls 

a.html  b.html

6. Operador AND – OR (&& – ||) – Execução Condicional de Comandos

O operador acima é uma combinação dos operadores ‘AND’ e ‘OR‘. É muito parecido com uma declaração ‘if-else’.

Por exemplo, vamos fazer um ping para linux-console.net, se for bem-sucedido, echo ‘Verified‘, caso contrário, echo ‘Host Down‘.

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

Exemplo de resultado:

PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms 
Verified

Agora, desconecte sua conexão com a Internet e tente o mesmo comando novamente.

ping -c3 linux-console.net && echo "verified" || echo "Host Down"

Exemplo de resultado:

ping: unknown host linux-console.net 
Host Down

7. Operador PIPE (|) – Processamento de saída simplificado

Este operador PIPE é muito útil onde a saída do primeiro comando atua como uma entrada para o segundo comando. Por exemplo, canalize a saída de ‘ls -l‘ para ‘less‘ e veja a saída do comando.

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x  root    root     4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
drwxrwxr-x  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.png
...

8. Operador de combinação de comandos {}

Combine dois ou mais comandos, o segundo comando depende da execução do primeiro comando.

Por exemplo, verifique se um diretório ‘bin’ está disponível ou não e produza a saída correspondente.

[ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

9. Operador de Precedência() – Gerenciando Ordem de Execução de Comando

O operador () possibilita a execução de comandos em ordem de precedência.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

No pseudocomando acima, e se o Command_x1 falhar? Nenhum dos Command_x2, Command_x3, Command_x4 seria executado, para isso usamos o Operador de Precedência, como:

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

No pseudocomando acima, se Command_x1 falhar, Command_x2 também falhará, mas ainda Command_x3 e Command_x4 serão executados dependendo do status de saída de Command_x3.

10. Operador de concatenação (\) – Concatenação de comando multilinha

O Operador de Concatenação (\), como o nome especifica, é usado para concatenar comandos grandes em várias linhas no shell. Por exemplo, o comando abaixo abrirá um arquivo de texto test(1).txt.

nano test\(1\).txt

É tudo por agora. Em breve farei outro artigo interessante. Até então Fique atento, saudável e conectado ao Tecmint. Não se esqueça de dar seu feedback valioso em nossa seção de comentários.