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 / 478122
Accepted
user149572
user149572
Asked: 2018-10-28 07:00:56 +0800 CST2018-10-28 07:00:56 +0800 CST 2018-10-28 07:00:56 +0800 CST

Removendo a barra raiz com `-p1` e assim por diante [duplicado]

  • 772
Essa pergunta já tem respostas aqui :
Ao corrigir qual é a diferença entre os argumentos -p0 e -p1? (3 respostas)
Fechado há 3 anos .

Eu entendo que patchpermite aplicar patches em aplicativos quando alguns componentes do caminho são removidos.

Enquanto -p0o argumento tratará um caminho como está :

/var/www/html/example.com

-p1irá remover a barra raiz, então o caminho com o qual trabalhamos se torna:

var/www/html/example.com

Por que alguém iria querer remover a barra raiz (ou qualquer componente anterior de um caminho) e não apenas corrigir com um caminho completo?

Consigo ver uma lógica de aprofundamento em uma árvore de diretórios por um caminho relativo, mas sinto falta se será prático ou útil na grande maioria dos casos.

path patch
  • 2 2 respostas
  • 1051 Views

2 respostas

  • Voted
  1. Best Answer
    Kusalananda
    2018-10-30T03:46:34+08:002018-10-30T03:46:34+08:00

    O patchutilitário é um utilitário POSIX e a seção Rationale na especificação padrão do utilitário fornece um exemplo do uso da -popção:

    A -popção torna possível personalizar um arquivo de patch para estruturas de diretório de usuário local sem editar manualmente o arquivo de patch. Por exemplo, se o nome do arquivo no arquivo de patch foi:

    /curds/whey/src/blurfl/blurfl.c
    

    A configuração -p 0fornece todo o nome do caminho não modificado; -p 1dá:

    curds/whey/src/blurfl/blurfl.c
    

    sem o líder <slash>, -p 4dá:

    blurfl/blurfl.c
    

    e não especificar -p dá:

    blurfl.c
    

    O manual do OpenBSD também tem um exemplo semelhante, mas um pouco expandido, de quando o uso -ppode ser útil (grifo meu):

    -p strip-count,--strip strip-count

    Define a contagem de faixas do nome de caminho, que controla como os nomes de caminho encontrados no arquivo de patch são tratados, caso você mantenha seus arquivos em um diretório diferente da pessoa que enviou o patch . A contagem de tiras especifica quantas barras devem ser removidas da frente do nome do caminho. (Quaisquer nomes de diretórios intermediários também desaparecem.) Por exemplo, supondo que o nome do arquivo no arquivo de patch fosse /u/howard/src/blurfl/blurfl.c:

    A configuração -p0fornece todo o nome do caminho não modificado.

    -p1dá

    u/howard/src/blurfl/blurfl.c
    

    sem a barra inicial.

    -p4dá

    blurfl/blurfl.c
    

    Segue dizendo:

    Não especificar -pnada apenas fornece blurfl.c, a menos que todos os diretórios no caminho principal ( u/howard/src/blurfl) existam e esse caminho seja relativo; nesse caso, você obtém o nome do caminho inteiro sem modificações. O que quer que você encontre é procurado no diretório atual ou no diretório especificado pela -dopção.

    Ou seja, se você receber um patch com caminhos absolutos para os arquivos aos quais ele se aplica e mantiver esses arquivos em um diretório diferente, poderá usar -po número apropriado para "deslocar" os caminhos no patch do diretório especificado por -d(ou o diretório atual).

    • 4
  2. finn
    2018-10-31T05:14:28+08:002018-10-31T05:14:28+08:00

    O comando patch lê as instruções de um arquivo de origem sobre como alterar um arquivo e, em seguida, aplica as alterações (para obter mais detalhes ). E passando o sinalizador -pN pula N barras iniciais dos nomes de arquivos presentes no arquivo de correção.
    É sobre uma parte do diretório no cabeçalho diff . No seu caso, o cabeçalho diff contém esta string: /var/www/html/example.com. Se você usar o sinalizador -p1, o utilitário patch será removido desse diretório principal da string e você obterá um var/www/html/example.com, que você deseja corrigir. Com o parâmetro -p0, o patch não tira nada dessa string e não funcionará corretamente.

    Por exemplo:
    Para correção de invocação adequada do arquivo SSH2.xs (arquivo de correção localizado aqui: rt.cpan.org/Public/Bug/Display.html?id=36614 ):

    patch -p1 < net-ssh2-0.18-perl5.10.patch
    

    patch contém um diretório Net-SSH-0.18.origque você removeu antes do patch e acima deve ser executado a partir do diretório onde o arquivo SSH2.x2 está lá.

    Referência:
    1. -p0 vs -p1
    2. Man page -IBM

    • 0

relate perguntas

  • Como `update-alternatives --config somecommand` encontra os links simbólicos para `somecommand`?

  • Alternar entre openmpi e mpich como padrão usando o terminal linux

  • Como posso executar o patch por meio de um heredoc no bash?

  • Como aplicar o comando ao arquivo em $ PATH com espaços?

  • Em que circunstâncias o executável encontrado primeiro no caminho não será usado

Sidebar

Stats

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

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

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

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +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
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +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