關於 diff 和patch

參考: https://blog.csdn.net/zygblock/article/details/53384862html

diff和patch是 版本控制 git 的不可缺乏的工具linux

diff 是用來比較 源文件( 目錄) / 和 目標文件(夾)的 差別, 一般是用來比較 文本文件的, 通常不用來比較 二進制文件git

diff的輸出 是一種 patch格式的, 能夠 把 輸出結果 重定向保存爲 foo.patch 文件 , 而後 供 patch命令 來使用, 因此, 一般 diff和 patch是 聯合使用的shell

patch 是 根據 patch文件( 包含差別列表的文件, 即 difflisting文件) 來將 舊文件 (源文件) -> 打補丁/ 升級 爲 新文件 (升級文件) 的程序bash

======================================工具

關於diff 主要是 要掌握它的 幾種 輸出格式:優化

  • 使用 diff -y -W 50 old_file new_file 是 不用 normal的輸出格式, 用 並排的方式,顯示差別, -y 和-W 聯合使用, -W == --width 指定列(欄)的寬度
  • 更經常使用 的是 使用 diff -u file1 file2 的格式, 是 -u == -unified 即統一的格式, 將兩個文件的 內容都輸出在一塊兒, 統一的輸出. 用 ---(-) 表示第一個文件(源文件/舊文件) 用+++(+)表示第二個文件(新文件, 更新後的文件)

製做 補丁文件: diff -u file.old file.update > difflisting
給源文件 打補丁: patch -i difflisting -b file.old -b的做用是 原來的file.old將被打補丁, 同時 源文件被保存一個副本 file.old.orig
patch -i difflisting -o file.new file.old -o 表示原來的文件被打補丁成爲 file.new, 而源文件 仍是被保存不變.操作系統

特別要注意的是, 打補丁必定要注意 是給 誰 打補丁, 給哪一個文件 打補丁, 千萬不要把 目標文件搞反了, 不然就把更新的文件變成 原來的 舊文件了, 並且若是 要打多個補丁, 必定要注意 打補丁的順序

關於補丁的應用 參考: http://linux-wiki.cn/wiki/%E8%A1%A5%E4%B8%81%28patch%29%E7%9A%84%E5%88%B6%E4%BD%9C%E4%B8%8E%E5%BA%94%E7%94%A8
補丁(patch)的製做與應用
製做補丁時的選項: -r主要是對目錄應用的, 第歸裏面的文件和子目錄. -N : 是正確處理已經 應用過補丁的 文件 或 已經被 刪除 的文件 ;
應用補丁的 選項: -p num 主要是 指忽略仍是不忽略 目錄的層次,
-R 則是 取消打補丁
而 應用補丁或取消 補丁的 時候, 均可以 使用 輸入重定向的 方式: patch old_file < patch_file.net

patch的時候, - 表示將要被刪除的內容行, 而 + 表示 將要被添加/替換爲的 行

patch後, 舊文件將和 新文件 (更新後的文件) 徹底一致!版本控制

爲何要使用 patch? patch後, 舊文件將和 新文件 (更新後的文件) 徹底一致! 那爲何不直接修改 或 直接用 cp / install 命令來複制 替換呢?

確實是這樣的!
可是 patch的主要目的, 並非 用來 給 1個文件來 打補丁的, 它主要是用來 給一個文件夾 中的不少文件 / 不少子目錄 來打補丁, 來進行升級的, 這個 纔是patch 的主要用途! 是linux用來升級的 主要手段 .也就是說, patch 主要是用來 給 linux等 進行升級的, 固然在版本控制中 也會用到!

Linux patch命令用於修補文件。 參考: http://www.runoob.com/linux/linux-comm-patch.html "patch指令讓用戶利用設置修補文件的方式,修改,更新原始文件。假若一次僅修改一個文件,可直接在指令列中下達指令依序執行。若是配合修補文件的方式則能一次修補大批文件,這也是Linux系統核心的升級方法之一。"

即: 一個補丁文件中, 能夠包含多個補丁, 每一個補丁中 包含 一個 補丁頭, 一個塊.....

==========================================
ls == echo * 來替換
install和cp的區別? 主要在與 處理 已經存在的文件和 正在 運行的 文件 時的差異上!
install 通常用在 makefile中, cp通常場合
cp是先將原來 的文件內容 清空, 而後寫入新內容
install 則是將原文件刪除, 從新建立一個新文件, 而後再寫內容.
所以, install不只能 更換句柄, 並且能夠設置 文件的新屬性, 能夠解決 若是目標文件正在運行 或 持續寫入內容的句柄 更換問題.

=========================

runlevel
init 3

ctrl+alt+f1~6, ctrl_alt+f78, 注意切換字符界面,是用ctrl+alt+功能鍵, 而不是 只用 alt + 功能鍵

https://wenku.baidu.com/view/b861ed9c69dc5022aaea00c2.html

target: 就是runlevel文件。
從 fedora16 開始 就再也不使用initab 而是使用target來配置啓動級別了,

  • multi-user.target, analogous to runlevel 3

  • graphical.target.

target:啓動的對象,啓動(服務的)對象

開發Systemd的主要目的就是減小系統引導時間和計算開銷

Systemd引入了並行啓動的概念,它會爲每一個須要啓動的守護進程創建一個套接字,這些套接字對於使用它們的進程來講是抽象的,這樣它們能夠容許不一樣守護進程之間進>行交互。Systemd會建立新進程併爲每一個進程分配一個控制組(cgroup)。處於不一樣控制組的進程之間能夠經過內核來互相通訊。systemd處理開機啓動進程的方式很是漂亮,和傳統基於init的系統比起來優化了太多。讓咱們看下Systemd的一些核心功能

查看linux機器是32位仍是64位的方法:
file /sbin/init 或者file /bin/ls

當登錄一個linux系統時,bash shell依次會從4個不一樣的地方啓動文件裏的讀取命令,順序是:
1: /etc/profile
2:$HOME/.bash_profile
3:$HOME/.bash_login
4:$HOME/.profile

/lib 系統級別,系統的lib /usr/lib 操做系統自帶的程序級別,二進制安裝包的lib

相關文章
相關標籤/搜索