$HOME에 대한 패치와 시스템의 패치 파일을 하나의 명령과 파일로 얻을 수 있나요?

$HOME에 대한 패치와 시스템의 패치 파일을 하나의 명령과 파일로 얻을 수 있나요?

를 사용하여 다음 패치 파일을 만든 diff -u file1 file2 | file.patch다음 ---줄을 편집하고 경로를 변경했습니다.

ArkOS_Dev_Openbox.patch
+++ ~/.config/openbox/menu.xml  2016-07-28 21:21:55.683952870 +0200
@@ -5,7 +5,7 @@
 <item label="Terminal"><action name="Execute"><execute>lxterminal</execute></action></item>
 <item label="Browser"><action name="Execute"><execute>firefox</execute></action></item>
 <item label="File Manager"><action name="Execute"><execute>spacefm</execute></action></item>
-<item label="Editor"><action name="Execute"><execute>geany</execute></action></item>
+<item label="Editor"><action name="Execute"><execute>gksu geany</execute></action></item>

 <separator/>
 <menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" />

+++ /usr/share/applications/geany.desktop.bak   2016-07-29 22:43:43.483359679 +0200
@@ -130,7 +130,7 @@
 Comment[vi]=Một IDE nhanh và nhẹ nhàng dùng GTK+
 Comment[zh_CN]=GTK+ 编写的轻快的 IDE
 Comment[zh_TW]=一個快速且輕巧的 GTK+ 整合開發環境
-Exec=geany %F
+Exec=gksu geany %F
 Icon=geany
 Terminal=false
 Categories=GTK;Development;IDE;

다음 명령을 사용하여 이 패치를 실행해 보았습니다.

sudo patch -d / -p0 < ArkOS_Dev_Openbox.patch

물결표로 인해 첫 번째 파일을 찾을 수 없습니다. 또한 $HOME을 사용해 보았지만 소용이 없었습니다.

소프트웨어 패키지가 아닌 데스크톱 환경 등 적절하지 않다고 생각되는 방식으로 패치를 사용하려는 것 같습니다.

그래서 제 질문은, 패치를 이렇게 사용해도 될까요?입니다. 패치를 이렇게 사용해야 하나요? 그렇다면 어떨까요? 그렇지 않다면 대신 무엇을 사용해야 합니까?

답변1

빠른 확인원천예를 들어, GNU 패치를 표시해도 물결표가 홈 디렉토리로 확장되지 않습니다. 아마도 다른 구현에서는 이 작업을 수행하지 않을 것입니다.아마도일부 비공개 소스 Unix 버전 - GNU 패치(Larry Wall의 원래 버전에서 발전)를 기반으로 한 초기 버전입니다.

sed 스크립트를 통해 이를 처리할 수 있습니다. 예를 들면 다음과 같습니다.

sed -e "s,~/,$HOME/," ArkOS_Dev_Openbox.patch | sudo patch -d / -p0

추가 자료:

관련 정보