AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1026369
Accepted
Roger Lipscombe
Roger Lipscombe
Asked: 2018-04-20 03:34:27 +0800 CST2018-04-20 03:34:27 +0800 CST 2018-04-20 03:34:27 +0800 CST

Comando que sai com status zero (não /bin/true)?

  • 772

Tenho um Makefile que roda uma ferramenta que demora um pouco; isso me permite substituir o comando usado:

make TOOL=alternative-tool

Eu gostaria de pular essa etapa no Makefile, então estou procurando um comando que saia com o status 0 e que tenha efeitos colaterais insignificantes.

Obviamente, eu poderia usar apenas true, mas isso é meio confuso:

make TOOL=true

Parece que eu quero executar a ferramenta, mas não quero.

Existe um executável instalado por padrão que não /bin/truesaia com o status 0 e que tenha um nome cativante e fácil de digitar?

command-line
  • 5 5 respostas
  • 2583 Views

5 respostas

  • Voted
  1. Best Answer
    Eliah Kagan
    2018-04-20T03:46:14+08:002018-04-20T03:46:14+08:00

    Mesmo que você tenha solicitado algo que é "não /bin/true", substituir truepelo nome completo /bin/truepara mostrar que é o trueprograma em vez de algum outro significado de "verdadeiro" é provavelmente a melhor solução.

    Sua preocupação é que o truein

    make TOOL=true
    

    parece ser algo diferente de um nome de comando. Mas se você escrever

    make TOOL=/bin/true
    

    então isso é inequivocamente um comando. Alguém pode interpretar mal TOOL=truepara significar que alguma outra ferramenta em algum lugar é pretendida, mas nenhuma leitura incorreta de TOOL=/bin/trueé provável.


    Não tenho certeza de quando o :, que é um shell integrado, mas não um comando externo, funcionará. Henning Makholm relatou que parece funcionar . Mas acho que não funciona em todas as situações e você descobriu que não funcionou para você .

    Quanto a um alias de shell, você não pode usá-lo porque a expansão de alias não é executada nos argumentos que você passa para um comando, nem os makefiles fazem uso de aliases de shell definidos anteriormente. Mesmo que makeexecute seus comandos em um novo shell, esse shell não terá o alias (e não o usaria mesmo que o tivesse, porque seria um shell não interativo, onde a expansão do alias não é habilitada automaticamente).

    • 42
  2. muru
    2018-04-20T06:49:13+08:002018-04-20T06:49:13+08:00

    Embora eu concorde que usar o caminho completo para trueseria a melhor solução, gostaria de observar o que provavelmente é de longe a maneira mais comum de evitar a execução real do comando: colocar um echona frente dele. Então:

    make TOOL=echo
    
    • 7
  3. David Foerster
    2018-04-20T07:17:56+08:002018-04-20T07:17:56+08:00

    Você sempre pode criar seu próprio comando que não faz nada além de retornar um status de saída zero. Algumas opções:

    • um link simbólico com o nome apropriado para/bin/true

    • um script shell vazio

    • um programa C quase vazio:

      int main() {
          return 0;
      }
      
    • 5
  4. DocSalvager
    2018-04-25T14:07:53+08:002018-04-25T14:07:53+08:00

    Crie um link simbólico no diretório de trabalho para /bin/true chamado algo como skip. Desta forma...

    skip -> /bin/true
    

    Então a linha make pode ser...

    make TOOL=./skip
    
    • 0
  5. Lee B
    2018-04-21T10:08:07+08:002018-04-21T10:08:07+08:00

    Aqui está uma maneira de fazer isso com um pouco mais de caracteres:

    function T() { /bin/true; }
    

    Depois de fazer isso, você pode executá-lo novamente apenas usando o nome T.

    false; T; echo $?
    
    • -2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve