述
Linux diff命令用于比較文件的差異。diff以逐行的方式,比較文本文件的異同處。特別是比較兩個版本不同的文件,如果指定要比較目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中的目錄。diff命令可以同時輸出成補(bǔ)丁文件,并且Linux中還有一個patch命令,可以依據(jù)diff生成的.patch補(bǔ)丁文件,將a.c與b.c兩個文件差異部分更新到需要修改的文件。此外diff在SVN 、GIT、CVS等版本控制工具中也是不可或缺的一部分。
下面我就詳細(xì)描述一下diff命令的使用:
作者:良知猶存
轉(zhuǎn)載授權(quán)以及圍觀:歡迎添加微信公眾號:羽林君
在Linux 中,我們可以使用 diff --help 查看詳細(xì)指導(dǎo)(篇幅有限只截圖了一部分作為展示)
常用命令格式:
diff[參數(shù)][文件1或目錄1][文件2或目錄2]
常用命令展示:
1.Linux內(nèi)核diff自定義的補(bǔ)丁
diff -ruN linux-4.19-rc3_lyn linux-4.19-rc3 > linux-4.19-rc3_lyn.patch
這個是我經(jīng)常使用的命令,用來比較生成我修改后的代碼的補(bǔ)丁包,最后用patch命令打補(bǔ)丁到需要使用的內(nèi)核源碼中去
?
2.在git中也會有diff可以查看兩次版本的差異
git diff 04120e84525eca1c590d30b84ce7463b9e8a1497 f88b0054170b99b149bd0fbe5f138c66c64dd1c6
其中diff之后的版本號通過git log 打印出來進(jìn)行比較
?
-<行數(shù)>:指定要顯示多少行的文本。此參數(shù)必須與-c或-u參數(shù)一并使用;
-a或--text:diff預(yù)設(shè)只會逐行比較文本文件;
-b或--ignore-space-change:不檢查空格字符的不同;
-B或--ignore-blank-lines:不檢查空白行;
-c:顯示全部內(nèi)容,并標(biāo)出不同之處;
-C<行數(shù)>或--context<行數(shù)>:與執(zhí)行“-c-<行數(shù)>”指令相同;
-d或——minimal:使用不同的演算法,以小的單位來做比較;
-D<巨集名稱>或ifdef<巨集名稱>:此參數(shù)的輸出格式可用于前置處理器巨集;
-e或——ed:此參數(shù)的輸出格式可用于ed的script文件;
-f或-forward-ed:輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處;
-H或--speed-large-files:比較大文件時,可加快速度;
-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若兩個文件在某幾行有所不同,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異;
-i或--ignore-case:不檢查大小寫的不同;
-l或——paginate:將結(jié)果交由pr程序來分頁;
-n或——rcs:將比較結(jié)果以RCS的格式來顯示;
-N或--new-file:在比較目錄時,若文件A僅出現(xiàn)在某個目錄中,預(yù)設(shè)會顯示:Only in目錄,文件A 若使用-N參數(shù),則diff會將文件A 與一個空白的文件比較;
-p:若比較的文件為C語言的程序碼文件時,顯示差異所在的函數(shù)名稱;
-P或--unidirectional-new-file:與-N類似,但只有當(dāng)?shù)诙€目錄包含了第一個目錄所沒有的文件時,才會將這個文件與空白的文件做比較;
-q或--brief:僅顯示有無差異,不顯示詳細(xì)的信息;
-r或——recursive:比較子目錄中的文件;
-s或--report-identical-files:若沒有發(fā)現(xiàn)任何差異,仍然顯示信息;
-S<文件>或--starting-file<文件>:在比較目錄時,從指定的文件開始比較;
-t或--expand-tabs:在輸出時,將tab字符展開;
-T或--initial-tab:在每行前面加上tab字符以便對齊;
-u,-U<列數(shù)>或--unified=<列數(shù)>:以合并的方式來顯示文件內(nèi)容的不同;
-v或——version:顯示版本信息;
說完了diff命令的操作,我們再來看看diff命令輸出文件,因為有時候我們通過輸出信息自己比對文件的差異結(jié)論。
1.diff直接輸出到終端顯示
?
說明:
2.diff直接輸出為patch文件查看
?
如圖所示,我打開了我對比內(nèi)核代碼之后生成的.patch文件為例:
里面有每個文件都會標(biāo)注
Binary files linux-4.19-rc3_lyn/arch/arm/boot/compressed/ashldi3.o and linux-4.19-rc3/arch/arm/boot/compressed/ashldi3.o differ
diff -ruN linux-4.19-rc3_lyn/arch/arm/boot/compressed/.ashldi3.o.cmd linux-4.19-rc3/arch/arm/boot/compressed/.ashldi3.o.cmd
--- linux-4.19-rc3_lyn/arch/arm/boot/compressed/.ashldi3.o.cmd 1970-01-01 08:00:00.000000000 +0800
+++ linux-4.19-rc3/arch/arm/boot/compressed/.ashldi3.o.cmd 2020-08-21 10:54:52.774658500 +0800
@@ -0,0 +1,80 @@
+cmd_arch/arm/boot/compressed/ashldi3.o := arm-linux-gnueabi-gcc -Wp,-MD,arch/arm/boot/compressed/.ashldi3.o.d -nostdinc -isystem /work/tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/.. /lib/gcc/arm-linux-gnueabi/4.9.4/include -I./arch/arm/include -I./arch/arm/include/generated -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/ge nerated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Iarch/arm/mach-s3c24xx/include -Iarch/arm/plat-samsung/include -D__ASSEMBLY__ -fno-PIE -DCC_HAVE_ASM_GOTO -funwind-tables -marm -Wa,-mno- warn-deprecated -D__LINUX_ARM_ARCH__=4 -march=armv4t -mtune=arm9tdmi -include asm/unified.h -msoft-float -Wa,-gdwarf-2 -DZIMAGE -c -o arch/arm/boot/compressed/ashldi3.o arch/arm/boot/compressed/ash ldi3.S
+
+source_arch/arm/boot/compressed/ashldi3.o := arch/arm/boot/compressed/ashldi3.S
+
+deps_arch/arm/boot/compressed/ashldi3.o := \
第一部分,也是文件的基本信息:
--- linux-4.19-rc3_lyn/arch/arm/boot/compressed/.ashldi3.o.cmd 1970-01-01 08:00:00.000000000 +0800
+++ linux-4.19-rc3/arch/arm/boot/compressed/.ashldi3.o.cmd 2020-08-21 10:54:52.774658500 +0800
"---"表示變動前的文件,"+++"表示變動后的文件。
第二部分,變動的位置用兩個@作為起首和結(jié)束。
@@ -0,0 +1,80 @@
前面的"-0,0"分成三個部分:減號表示第一個文件(即linux-4.19-rc3_lyn/arch/arm/boot/compressed/.ashldi3.o.cmd),"0"表示第0行,后一個"0"表示連續(xù)0行;同樣的,"+1,10",加號表示第二個文件,就表示下面是第二個文件從第1行開始的連續(xù)80行。
通過這些信息我們就可以看懂對比之后文件的差異處了,是不是很容易呢。
這就是我分享的linux下diff命令,如果大家有什么更好的思路,歡迎分享交流哈。
Windows 10X是微軟即將推出的操作系統(tǒng),專為Surface Duo和Neo等雙屏設(shè)備而設(shè)計。
日前,微軟發(fā)布了Windows 10X模擬器,給想體驗新操作系統(tǒng)的愛好者一個機(jī)會來試用它。實際上,Windows 10X模擬器是為開發(fā)人員而設(shè)計的,但是沒有什么可以阻止任何好奇的人嘗試它的。
Windows制造商在微軟365開發(fā)人員日虛擬活動中推出了這個模擬器,同時推出的還有Windows 10X軟件開發(fā)工具包。在網(wǎng)絡(luò)廣播中,微軟談到了如果開發(fā)人員利用他們所提供的東西,雙屏設(shè)備將如何讓用戶受益。
1.擴(kuò)展的工作區(qū)
當(dāng)應(yīng)用程序跨越兩個屏幕時,這是一個顯示更多細(xì)節(jié)的機(jī)會,允許在更大、更廣闊的畫布上突出顯示內(nèi)容。無論用戶是閱讀文章,滾動提要還是瀏覽畫廊,擁有更多的空間可以幫助用戶查看更多內(nèi)容。
2.聚焦屏幕
雙屏設(shè)備不僅僅是一個更大的屏幕,它使用戶能夠利用已定義的屏幕完成所需的功能而不會受到干擾。你可以在一個屏幕上看到你的應(yīng)用程序,在另一個屏幕上看到你的工具,并保持流程順暢。
3.連接的應(yīng)用程序
當(dāng)應(yīng)用程序可以跨屏幕協(xié)同工作時,用戶可以在不失去上下文的情況下完成更廣泛、更大的任務(wù)。你的工作在應(yīng)用到應(yīng)用的發(fā)布中自然流動,或者如果你的應(yīng)用打開了一個新窗口——內(nèi)容將自然地放置在屏幕上,從而輕松自然地進(jìn)行并排比較和多任務(wù)處理。
微軟特別發(fā)出警告稱,該模擬器是早期預(yù)覽版,它是專為開發(fā)人員提供的用于開發(fā)和測試Windows 10X應(yīng)用程序的機(jī)會,用戶“將定期看到遵循同一標(biāo)準(zhǔn)內(nèi)部構(gòu)建流程的更新”。
用戶可以從Windows開發(fā)工具站點下載Windows 10X模擬器和SDK 。對于那些對事物的仿真方面感興趣的人,可以單獨下載微軟模擬器和Windows 10X模擬器鏡像。
支持的操作系統(tǒng):
64位Windows 10專業(yè)版、企業(yè)版或教育版
Windows Insider Preview版本10.0.19555或更高版本。
硬件要求:
將至少具有4個內(nèi)核的Intel CPU專用于仿真器(或具有4個內(nèi)核的多個CPU)
8GB或更多的內(nèi)存,其中4GB的內(nèi)存用于仿真器的
vhdx + diff磁盤有15 GB的可用磁盤空間,建議使用SSD
推薦專用顯卡
DirectX 11.0或更高版本
WDDM 2.4圖形驅(qū)動程序或更高版本
在BIOS中,必須支持并啟用以下功能:
硬件輔助虛擬化
二級地址翻譯(SLAT)
基于硬件的數(shù)據(jù)執(zhí)行保護(hù)(DEP)
■>>不到90秒安裝完更新!Windows 10X就是這么快
■>>微軟內(nèi)部文檔泄漏,新操作系統(tǒng)Windows 10X詳細(xì)信息曝光
■>>老程序的福音,微軟確認(rèn),Windows 10X操作系統(tǒng)支持Win32應(yīng)用程序
■>>微軟新操作系統(tǒng)Windows 10X的疑難解答,你需要的信息都在這里
想得到Windows 10X模擬器,可以關(guān)注我,私信“模擬器”獲取。
1.頭條號【微課傳媒】專注軟件分享,如果你喜歡玩軟件,歡迎關(guān)注、評論、收藏、轉(zhuǎn)發(fā)。
2.在學(xué)習(xí)中有什么問題,歡迎與我溝通交流,號搜索【微課傳媒】,我在這里等你喲!