O que acontece no Linux quando um comando é executado com sucesso?

1. O que acontece no Linux quando um comando é executado com sucesso?

Ricardo Kromer Cavati
ricardokcavati

(usa Ubuntu)

Enviado em 10/11/2021 - 09:47h

Resposta: O terminal não exibe nada quando os comandos são executados com sucesso, alguma mensagem só será apresentada caso haja erro no comando digitado.


  


2. Re: O que acontece no Linux quando um comando é executado com sucesso?

Clodoaldo Santos
clodoaldops

(usa Linux Mint)

Enviado em 10/11/2021 - 09:51h

Geralmente aparece uma saída, uma resposta, do terminal
Mas de qual comando vc está falando?




3. Re: O que acontece no Linux quando um comando é executado com sucesso?

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 10/11/2021 - 14:50h

Na verdade por padrão o comando retornará um valor, no caso é o 0.
Como a maioria dos comandos linux são escritos em C, existe uma padronização para o último comando do programa ser o "return 0", sendo assim quando o comando for executado com sucesso, ele retornará 0, algo como zero error (sem erros).
Faça o seguinte:
execute o comando date
depois rode echo $? para imprimir o sinal de saida do último comando. Vai ser omstrado um 0, caso o comando anterior tenha falahado por algum motivo, mostrará outra mensagem diferente de 0.
Ver mais aqui:
https://www.cyberciti.biz/faq/bash-get-exit-code-of-command/



4. Re: O que acontece no Linux quando um comando é executado com sucesso?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/11/2021 - 16:54h

Nem todos comandos tem o "exit code".
Por exemplo:
Sed e awk.


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



5. Re: O que acontece no Linux quando um comando é executado com sucesso?

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 10/11/2021 - 17:26h


msoliver escreveu:

Nem todos comandos tem o "exit code".
Por exemplo:
Sed e awk.

Eu me referia a programas escritos em C, não sei em qual linguagem o sed e o awk foram escritos, porque em C padrão todo programa o main deve retornar um valor, em geral é o 0.
Se são escritos em C, desconheço os motivos de não possuirem exit code.


6. Re: O que acontece no Linux quando um comando é executado com sucesso?

José Lucas
NidoBr

(usa Manjaro Linux)

Enviado em 10/11/2021 - 17:43h


msoliver escreveu:

Nem todos comandos tem o "exit code".
Por exemplo:
Sed e awk.


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


No manual do AWK, consta que ele possui código de saída e pode ser customizado com o comando "exit" interno do AWK, já o SED é normal retorna 0 se for bem sucedido e 1 caso contrario.


7. Re: O que acontece no Linux quando um comando é executado com sucesso?

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 10/11/2021 - 20:12h


O fsck, por exemplo, retorna ao shell ($?)um código dependendo do sucesso ou não da operação.

0 – nenhum erro.
1 – erros corrigidos.
2 – o sistema deve ser reiniciado.
4 – erros não corrigidos.
8 – erro operacional.
16 – erro de uso ou de sintaxe.
32 – cancelado pelo usuário.
128 – erro de biblioteca compartilhada


8. Re: O que acontece no Linux quando um comando é executado com sucesso?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/11/2021 - 17:31h


NidoBr escreveu:


msoliver escreveu:

Nem todos comandos tem o "exit code".
Por exemplo:
Sed e awk.


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________

No manual do AWK, consta que ele possui código de saída e pode ser customizado com o comando "exit" interno do AWK, já o SED é normal retorna 0 se for bem sucedido e 1 caso contrario.


Exemplificando a minha afirmação!
cat ltr.txt
ABCDEFGHIJKLMNOPQRSTUVWXYZ
sed -r 's/[A-Z]/-ALTERADO-/' ltr.txt ;echo "Exit Code:$?"
-ALTERADO-BCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0
sed -r 's/[0-9]/-ALTERADO-/' ltr.txt ;echo "Exit Code:$?"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0
awk '$0~/^[0-9]+$/{print $0}' ltr.txt;echo "Exit Code:$?"
Exit Code:0
awk '$0~/^[A-Z]+$/{print $0}' ltr.txt;echo "Exit Code:$?"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0
sed -r 's/[A-Z]/-ALTERADO-/' ltr.txt && echo ok || echo not
-ALTERADO-BCDEFGHIJKLMNOPQRSTUVWXYZ
ok
sed -r 's/[0-9]/-ALTERADO-/' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok
sed -r 's/[A-Z]+/-ALTERADO-/' ltr.txt && echo ok || echo not
-ALTERADO-
ok
sed -r 's/[0-9]+/-ALTERADO-/' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok
awk '$0~/^[0-9]+$/{print $0}' ltr.txt && echo ok || echo not
ok
awk '$0~/^[A-Z]+$/{print $0}' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok

No Grep o comportamento é diferente:
grep -E '^[0-9]+' ltr.txt && echo ok || echo not
not
grep -E '^[A-Z]+' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok

Essas situações são contornáveis!
Mas isso está fora do escopo!

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



9. Re: O que acontece no Linux quando um comando é executado com sucesso?

José Lucas
NidoBr

(usa Manjaro Linux)

Enviado em 11/11/2021 - 18:33h


msoliver escreveu:


NidoBr escreveu:


msoliver escreveu:

Nem todos comandos tem o "exit code".
Por exemplo:
Sed e awk.


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________

No manual do AWK, consta que ele possui código de saída e pode ser customizado com o comando "exit" interno do AWK, já o SED é normal retorna 0 se for bem sucedido e 1 caso contrario.


Exemplificando a minha afirmação!
cat ltr.txt
ABCDEFGHIJKLMNOPQRSTUVWXYZ
sed -r 's/[A-Z]/-ALTERADO-/' ltr.txt ;echo "Exit Code:$?"
-ALTERADO-BCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0
sed -r 's/[0-9]/-ALTERADO-/' ltr.txt ;echo "Exit Code:$?"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0
awk '$0~/^[0-9]+$/{print $0}' ltr.txt;echo "Exit Code:$?"
Exit Code:0
awk '$0~/^[A-Z]+$/{print $0}' ltr.txt;echo "Exit Code:$?"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0
sed -r 's/[A-Z]/-ALTERADO-/' ltr.txt && echo ok || echo not
-ALTERADO-BCDEFGHIJKLMNOPQRSTUVWXYZ
ok
sed -r 's/[0-9]/-ALTERADO-/' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok
sed -r 's/[A-Z]+/-ALTERADO-/' ltr.txt && echo ok || echo not
-ALTERADO-
ok
sed -r 's/[0-9]+/-ALTERADO-/' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok
awk '$0~/^[0-9]+$/{print $0}' ltr.txt && echo ok || echo not
ok
awk '$0~/^[A-Z]+$/{print $0}' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok

No Grep o comportamento é diferente:
grep -E '^[0-9]+' ltr.txt && echo ok || echo not
not
grep -E '^[A-Z]+' ltr.txt && echo ok || echo not
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ok

Essas situações são contornáveis!
Mas isso está fora do escopo!

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


O SED e o AWK retornam '0' (sucesso) se o comando for "executado", e retornam um valor diferente de '0' se o comando não puder ser executado, como por exemplo se o arquivo não existir ou não tiver permissão para aquela ação. Mas no caso do SED e do AWK o comando é considerado "executado" independente se as instruções passadas a eles tiverem ou não sucesso.
Ex:

$ cat ltr.txt
ABCDEFGHIJKLMNOPQRSTUVWXYZ

# Arquivo existe, o comando foi executado e expressão corresponde:
sed -r 's/[A-Z]/-ALTERADO-/' ltr.txt ;echo "Exit Code:$?"
-ALTERADO-BCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0

# Arquivo não existe, comando não foi executado:
$ sed -r 's/[A-Z]/-ALTERADO-/' ARQUIVO_NÃO_EXISTE.txt ;echo "Exit Code:$?"
sed: não foi possível ler ARQUIVO_NÃO_EXISTE.txt: Arquivo ou diretório inexistente
Exit Code:2

# Arquivo existe, comando executado mas expressão não correspondeu:
$ sed -r 's/[0-9]/-ALTERADO-/' ltr.txt ;echo "Exit Code:$?"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0

# Arquivo existe, o comando foi executado e expressão corresponde:
$ awk '{print $0}' ltr.txt ;echo "Exit Code:$?"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:0

# Arquivo não existe, comando não foi executado:
$ awk '{print $0}' ARQUIVO_NÃO_EXISTE.txt ;echo "Exit Code:$?"
awk: fatal: não foi possível abrir arquivo "ARQUIVO_NÃO_EXISTE.txt" para leitura: Arquivo ou diretório inexistente
Exit Code:2

# Como tinha dito podemos definir um status de saída com a instrução 'exit' interna do AWK.
$ awk '{print $0} END {exit 23}' ltr.txt ;echo "Exit Code:$?"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Exit Code:23


Espero que tenha dado para entender :-)


10. Re: O que acontece no Linux quando um comando é executado com sucesso?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/11/2021 - 19:56h

O SED e o AWK retornam '0' (sucesso) se o comando for "executado", e retornam um valor diferente de '0' se o comando não puder ser executado, como por exemplo se o arquivo não existir ou não tiver permissão para aquela ação. Mas no caso do SED e do AWK o comando é considerado "executado" independente se as instruções passadas a eles tiverem ou não sucesso.

Não fui claro na minha explanação....
Vamos lá....
Estou querendo dizer que no sed ou no awk,
se casou ou não com o "padrão" fornecido,
sempre retorna "zero".
O que não ocorre com o grep......
É isso.....
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



11. Re: O que acontece no Linux quando um comando é executado com sucesso?

José Lucas
NidoBr

(usa Manjaro Linux)

Enviado em 11/11/2021 - 20:09h


msoliver escreveu:

O SED e o AWK retornam '0' (sucesso) se o comando for "executado", e retornam um valor diferente de '0' se o comando não puder ser executado, como por exemplo se o arquivo não existir ou não tiver permissão para aquela ação. Mas no caso do SED e do AWK o comando é considerado "executado" independente se as instruções passadas a eles tiverem ou não sucesso.

Não fui claro na minha explanação....
Vamos lá....
Estou querendo dizer que no sed ou no awk,
se casou ou não com o "padrão" fornecido,
sempre retorna "zero".
O que não ocorre com o grep......
É isso.....
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



Obrigado pela explicação, o que eu quis mostrar é que eles possuem código de saída ao serem executados, já que a pergunta do titulo se refere a isso.
:-)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts