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 / unix / Perguntas / 412134
Accepted
Stephen
Stephen
Asked: 2017-12-21 14:54:27 +0800 CST2017-12-21 14:54:27 +0800 CST 2017-12-21 14:54:27 +0800 CST

significado de traços nus neste exemplo de curl/tar

  • 772

Eu sei desta resposta SO que traços nus são usados ​​por vários utilitários Unix para especificar que o usuário deseja usar stdin ou stdout em vez de um arquivo regular.

No entanto, isso não me ajuda muito a entender a sintaxe do seguinte (que tirei de um buildpack do Heroku que basicamente instala uma cópia do Perl em um diretório). No geral, o que está acontecendo é que o Perl está sendo baixado de um URL em $PERL_PACKAGE e canalizado para tar, que o extrai para o diretório $VENDORED_PERL

curl $PERL_PACKAGE -s -o - | tar xzf - -C $VENDORED_PERL

Mas os detalhes são meio confusos. -o é usado quando você deseja especificar um arquivo para saída em vez de stdout, então não vejo por que você usaria essa opção e depois um traço, em vez de simplesmente não usar a opção.

Quanto ao tar, eu acho - está dizendo para não usar um arquivo de entrada, pois está recebendo a entrada de um pipe?

Talvez eu esteja perdendo alguns dos requisitos de como os tubos funcionam.

pipe tar
  • 2 2 respostas
  • 682 Views

2 respostas

  • Voted
  1. Best Answer
    janos
    2017-12-21T15:01:41+08:002017-12-21T15:01:41+08:00

    Acho que não está faltando nada. As opções que você mencionou são desnecessárias em todos os shells curle tarimplementações que usei nos últimos anos.

    Eu escreveria essa linha assim:

    curl "$PERL_PACKAGE" -s | tar xz -C "$VENDORED_PERL"
    

    Ou seja, sem as opções de nome de arquivo desnecessárias e com aspas duplas conservadoras das variáveis ​​usadas como argumentos de linha de comando.

    Por que eles escreveram da maneira que escreveram? Podem ser velhos hábitos. Ou alguns sistemas antigos, implementações antigas onde esses parâmetros costumavam ser necessários. E como o script funciona como está, não há nada para "consertar".

    • 1
  2. Hauke Laging
    2017-12-21T15:03:58+08:002017-12-21T15:03:58+08:00

    f -significa "ler de stdin" / "escrever em stdout" com tar, também. Mas a origem/destino padrão pode variar entre tarversões e implementações, portanto, parece mais seguro adicioná-lo ao comando.

    Se -o -não for necessário curl, talvez o autor desse comando não soubesse disso ou pensasse que o comando era mais fácil de entender com essa informação explícita.

    • 1

relate perguntas

  • Passe o identificador para o pipeline stdin down

  • bsdtar: Como evitar sobrescrever as informações do arquivo existente?

  • Como canalizar um comando bash e manter Ctrl + C funcionando?

  • Por que canalizar `mysql` para 'tail' altera o formato de saída?

  • ordem de substituição de processos `te` e `bash`

Sidebar

Stats

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

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

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