用 -p1
刪除根斜線等等
我了解
patch
在刪除某些路徑組件時允許修補應用程序。雖然參數將按原樣
-p0
處理路徑:/var/www/html/example.com
-p1
將刪除根斜線,因此我們使用的路徑變為:var/www/html/example.com
為什麼要刪除根斜杠(或路徑的任何先前組件),而不僅僅是使用完整路徑進行修補?
我可以看到通過相對路徑加深目錄樹的邏輯,但我想念它在絕大多數情況下是否實用或有用。
該
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
(或目前目錄)指定的目錄。