私が知っている限り、patch
特定のパスコンポーネントが削除されると、アプリケーションパッチが許可されます。
-p0
パラメータはパスを処理しますが、現状のまま:
/var/www/html/example.com
-p1
ルートスラッシュが削除されるため、使用するパスは次のとおりです。
var/www/html/example.com
フルパスにパッチを適用するのではなく、ルートスラッシュ(またはパスの以前のコンポーネント)を削除するのはなぜですか?
相対パスを介してディレクトリツリーを深化させるロジックを見ることができますが、ほとんどの場合、それが実用的か有用かどうかはわかりません。
ベストアンサー1
patch
これPOSIXユーティリティですこのオプションの使用例は、ユーティリティ標準仕様の理論的根拠セクションに記載されています-p
。
この
-p
オプションを使用すると、パッチファイルを手動で編集しなくても、ローカルユーザーディレクトリ構造に合わせてパッチファイルをカスタマイズできます。たとえば、パッチファイルのファイル名が次のような場合:/curds/whey/src/blurfl/blurfl.c
設定は
-p 0
変更されていないフルパス名を提供します-p 1
。curds/whey/src/blurfl/blurfl.c
プリアンブルなしで以下を
<slash>
提供-p 4
します。blurfl/blurfl.c
-p をまったく指定しない場合は、次のようになります。
blurfl.c
これOpenBSD マニュアルこれは役に立つかもしれませんが、少し拡張された例です-p
(強調)。
-p strip-count
、--strip strip-count
パッチファイル内のパス名の処理方法を制御するパス名の数を設定します。パッチの送信者とは異なるディレクトリにファイルを保存した場合。削除数は、パス名の前に削除するスラッシュの数を指定します。 (途中のすべてのディレクトリ名も消えます。)たとえば、パッチファイルのファイル名が次のようになっているとします
/u/howard/src/blurfl/blurfl.c
。この設定は、
-p0
変更されていないフルパス名を提供します。
-p1
与えられたu/howard/src/blurfl/blurfl.c
前にスラッシュはありません。
-p4
与えられたblurfl/blurfl.c
続けて次のように言います。
-p
これをまったく指定しないと、blurfl.c
先行パス()のすべてのディレクトリがu/howard/src/blurfl
存在し、パスが相対パスではない場合にのみ提供されます。この場合、フルパス名が変更されていない状態で表示されます。その結果、現在のディレクトリまたはオプションで指定されたディレクトリから何でも検索されます-d
。
つまり、適用されるファイルへの絶対パスを含むパッチを取得し、そのファイルを別のディレクトリに保持する場合は、-p
適切な番号を使用してパッチのパスを-d
(または現在のディレクトリ)に「オフセット」できます。 。