fbpx

Comandos Linux – Comando exec

Comando Bash exec builtin

Atualizado: 05/04/2019 por Computer Hope

comando exec

Em sistemas operacionais do tipo Unix, exec é um comando interno do shell Bash . Permite executar um comando que substitui completamente o processo atual. O processo atual do shell é destruído e totalmente substituído pelo comando que você especificar.

Descrição

exec é uma função crítica de qualquer sistema operacional semelhante ao Unix . Tradicionalmente, a única maneira de criar um novo processo no Unix é bifurcá- lo. A chamada do sistema de garfos faz uma cópia do programa de garfos. A cópia, em seguida, usa exec para executar o processo filho em seu espaço de memória.

Sintaxe

  exec [ -c ] [ -l ] [ -um nome ] [ comando [ argumentos ...]] [ redirecionamento ...]

Opções e argumentos

O comando exec builtin utiliza as seguintes opções e argumentos :

-um nomePasse o nome da string como o argumento zeroth ao comando . Esta opção está disponível nas versões 4.2 e superiores do bash. Quando usado, ele executa o comando e define a variável especial do shell $ 0 como o nome do valor, em vez do comando . Para mais informações, consulte o parâmetro especial 0 do bash .
-cExecute o comando em um ambiente vazio.
-euInsira um traço no início do argumento zeroth. Isso pode ser usado para iniciar um shell de login via exec . Para obter mais informações sobre shells de login e requisitos do bash sobre como eles podem ser chamados, consulte Chamada de shell no bash .
comandoO comando a ser executado. Se você não especificar um comando, o exec ainda poderá fornecer o redirecionamento .
argumentosOs argumentos para o comando que você deseja executar.
redirecionamentoQualquer redirecionamento para o comando. Se nenhum comando for especificado, o redirecionamento se aplicará ao shell atual.

Descrição

exec é útil quando você deseja executar um comando, mas não deseja que um shell bash seja o processo pai . Quando você executa um comando, ele substitui completamente o bash – nenhum novo processo é bifurcado, nenhum novo PID é criado e toda a memória controlada pelo bash é destruída e substituída . Isso pode ser útil se, por exemplo, você desejar conceder ao usuário acesso restrito a um determinado comando. Se o comando sair devido a um erro , o usuário não retornará ao shell privilegiado que o executou.

exec também pode ser usado sem nenhum comando, para redirecionar toda a saída do shell atual para um arquivo. Para obter mais informações sobre redirecionamento, consulte redirecionamento no shell bash .

Exemplos

  exec rbash

Substitua o shell bash atual por rbash , o shell de logon bash restrito. Como o shell bash original é destruído, o usuário não retornará a um shell bash privilegiado quando o rbash sair.

  exec> output.txt

Redirecione toda a saída para o arquivo output.txt para o processo atual do shell. Os redirecionamentos são um caso especial e o exec não destrói o processo atual do shell, mas o bash não imprimirá mais a saída na tela, gravando-a no arquivo. (Essa técnica é muito mais útil em scripts – se o comando acima for executado em um script, toda a saída do script será gravada em output.txt .)

  exec 3 <myinfile.txt

Abra myinfile.txt para leitura (” < “) no descritor de arquivo 3 .

O comando acima é um exemplo de abertura explícita de um descritor de arquivo . Veja como abrir descritores de arquivo no bash para obter mais informações.

Após executar o comando acima, você pode ler uma linha de myinfile.txt executando o comando read com a opção -u :

  read -u 3 mydata

Aqui, ” -u 3 ” diz à read para obter seus dados do descritor de arquivo 3, que se refere ao myinfile.txt . O conteúdo é lido, uma linha de cada vez, na variável mydata . Isso seria útil se usado como parte de um loop while, por exemplo.

Vejamos mais alguns comandos que abrem e fecham novos descritores de arquivos.

  exec 4> out.txt

O comando acima abre out.txt para escrever (” > “) no descritor de arquivo 4 .

  exec 3 <& -

Feche (” & – “) o descritor de leitura aberto (” < “) número 3 .

  exec 4> & -

Feche o número 4 do descritor de gravação aberto (” > “).

  exec 5 <> myfile.txt

Abra myfile.txt para leitura e gravação (” <> “) como descritor de arquivo 5 .

  exec 5 <> & -

Feche o descritor de leitura / gravação aberto 5.

  exec 6 >> myappendfile.txt

Abra myappendfile.txt para anexar (” >> “) como descritor de arquivo 6 .

  exec {myfd}> out.txt

Abra myfile.txt para escrever. Um novo número de descritor de arquivo, escolhido automaticamente, é atribuído à variável myfd .

  eco Texto> & myfd

Ecoe o texto ” Texto ” e redirecione a saída para o arquivo (neste caso, meuarquivo.txt ) descrito pelo descritor de gravação (” > “) cujo número é obtido desreferenciando (” & “) a variável denominada myfd .

read – Leia uma linha de entrada e divida-a em palavras.

18 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.