Header Ads

Como usar o comando Command no Linux

Fatmawati Achmad Zaenuri / Shutterstock

O comando Linux que identifica o binário executável que é iniciado quando você emite um comando para o shell. Se você tiver versões diferentes do mesmo programa no seu computador, poderá usar qual delas descobrirá qual o shell usará.

Binários e caminhos

Quando você tenta executar um programa ou comando a partir da janela do terminal, o shell (geralmente, Bash em distribuições modernas) precisa encontrar esse comando e iniciá-lo. Alguns comandos, como cd, history e pwd, estão embutidos no shell, então o Bash não precisa se esforçar muito para encontrá-los.

Mas como o Bash localiza outros comandos, programase binários externos independentes?Bem, o Bash usa o caminho, que na verdade é uma coleção de caminhos, cada um dos quais aponta para um diretório. Em seguida, procura em cada um desses diretórios um executável que corresponda ao comando ou programa que você está tentando executar. Quando encontra um, o Bash o inicia e abandona a pesquisa.

Você pode usar echo para verificar a variável de ambiente $ PATH e ver os diretórios em seu caminho. Para fazer isso, digite o seguinte e pressione Enter:

 echo $ PATH 

A lista de saída separa cada caminho com dois pontos (:). No computador que estamos usando, o Bash pesquisará os seguintes diretórios nesta ordem:

  • / usr / local / sbin
  • / usr / local / bin
  • / usr / sbin
  • / usr / bin
  • / sbin
  • / bin
  • / usuário / jogos
  • / usr / local / games
  • / snap / bin

Existem muitas pastas chamadas / sbin e / bin no sistema de arquivos,o que pode levar a alguma confusão.

Assista a esses caminhos

Digamos que temos uma versão atualizada de um programa chamado htg. Está em nosso diretório atual e podemos executá-lo digitando o seguinte comando:

./htg

It &’não é muito um programa - ele apenas imprime o número da versão e depois fecha.A nova versão é 1.2.138.

Para executar um programa no diretório de trabalho atual, você deve digitar “ ./”na frente do nome do programa, para que o Bash saiba onde encontrá-lo.

Como queremos executar este programa em particular a partir de qualquer diretório, vamos mover o executável para o / usr / bindiretório.O Bash encontrará esse programa no caminho e o executará para nós.

Não precisamos do executável em nosso diretório atual, nem precisamos digitar “ ./”na frente do nome do programa, como mostrado abaixo:

 sudo mv htg / usr / bin 

Agora, vamos &’ stente executar o programa digitando:

 htg 

Algo corre, mas não é o nosso novo programa atualizado. Em vez disso, é a versão mais antiga, 1.2.105.

Qual comando

O problema que demonstramos acima é por que o comando foi projetado.

Neste exemplo, usaremos what e passaremos o nome do programa que estamos investigando como um parâmetro da linha de comando:

 what htg 

, que informa que encontrou uma versão do htg no diretório / usr / local / bin. Como esse local aparece no caminho antes do diretório para o qual movemos o htg atualizado, o Bash usa essa versão anterior do programa.

No entanto, se usarmos a opção -a (all) como mostrado abaixo,que continua a pesquisar mesmo que encontre uma correspondência:

 qual -a htg 

Em seguida, lista todas as correspondências em qualquer um dosos diretórios no caminho.

Portanto, esse é o problema. Existe uma versão anterior do programa em um diretório que também está no patch.E esse diretório está sendo pesquisado antes do diretório em que descartamos a nova versão do programa.

Para verificar, podemos digitar o seguinte e executar explicitamente cada versão do programa:

 / usr / local / bin / htg 

 / usr / bin / htg 

Isso explica o problema e ossolução é simples.

Na verdade, temos opções. Podemos excluir a versão antiga no diretório / use / local / bin ou movê-la de / usr / bin para / usr / local / bin.

Assista a esses resultados

Doisos resultados não significam necessariamente dois arquivos binários.

Vamos analisar um exemplo em que usaremos o comando what com a opção -a (all) e procuraremosversões do programa less:

 qual -a menos 

que relata dois locais que hospedam uma versão do programa less, mas isso é verdade?Seria estranho ter duas versões diferentes (ou a mesma versão em vários locais) ou menos instaladas em um computador Linux. Então, não vamos aceitar a saída da qual. Em vez disso, vamos nos aprofundar um pouco mais.

Podemos usar as opções ls, -l (lista longa) e -h (legível por humanos) para ver o que está acontecendo.:

 ls -lh / usr / bin / less 

O tamanho do arquivo é relatado como nove bytes!Definitivamente, essa não é uma cópia completa de menos.

O primeiro caractere da listagem é um & l; 8220; l. ”Um arquivo normal teria um hífen (-) como o primeiro caractere.O “ l ”é um símbolo que significa link simbólico. Se você perdeu esse detalhe, o - >O símbolo também indica que este é um link simbólico, no qual você pode pensar como uma espécie de atalho. Este aponta para a cópia de less in / bin.

Vamos tentar novamente com a versão de less in / bin:

 ls -lh / bin/ less 

Esta entrada é obviamente uma “ real ”executável binário.O primeiro caractere da lista é um hífen (-), o que significa que é um arquivo normal e o tamanho do arquivo é 167 KB. Portanto, apenas uma cópia de menos está instalada, mas há um link simbólico para ela de outro diretório, que o Bash também encontra ao pesquisar o caminho.

RELACIONADO: Como usar o comando ls paraListar arquivos e diretórios no Linux

Verificando vários comandos de uma vez

Você pode passar vários programas e comandos para os quais eles serão verificados em ordem.

Por exemplo, se você digitar:

, qual data da data de ativação do gato ping 

, que funciona através da lista de programas e comandos que você forneceucom e lista o resultado de cada um.

Qual é qual?

Se você quiser, também pode usar o que, digitando o seguinte:

 
, o qual 

Além de cutucarpor curiosidade, o que é mais útil no sistema de arquivos Linux, o que é mais útil quando você espera um conjunto de comportamentos de um comando ou programa, mas obtém outro.

Você pode usar o que, nesses casos, para verificar o comando Bash éo lançamento é o que você deseja usar.

Via: How to Geek

Veja Também:

Nenhum comentário