跳轉至內容

Unix/命令/檔案分析指南

來自華夏公益教科書

file 顯示檔案型別。 要獲得 mimetype,請使用 -i 選項。

示例

$ file Unix.txt
Unix.txt: ASCII text
$ file -i Unix.txt
Unix.txt: text/plain; charset=us-ascii

連結

wc 告訴你檔案中的行數、單詞數和字元數。

示例

$ wc hello.txt
2       6      29 hello.txt
$ wc -l hello.txt
2 hello.txt
$ wc -w hello.txt
6 hello.txt
$ wc -c hello.txt
29 hello.txt

連結

輸出檔案、檔案或標準輸入的 32 位迴圈冗餘校驗 (CRC) 校驗和的特定變體,以及大小;在最新的 GNU Coreutils 和一些其他實現中,它可以透過 -a 選項輸出其他校驗和。這種 32 位 CRC 的變體不同於 zip、PNG 和 zlib 使用的 CRC-32;一方面,cksum 不僅根據檔案或輸入的八位位元組流計算 CRC,而是根據追加了流長度的流計算 CRC。

cksum 輸出的 CRC 可用於防止對檔案進行意外修改:如果校驗和沒有改變,則檔案很可能沒有損壞。預設的 CRC 校驗和不是加密的:它只防範非惡意(有意)的修改。

最新的 GNU Coreutils cksum 允許透過 -a 選項從多種不同的校驗和型別中進行選擇,包括加密校驗和。其中包括 sysv、bsd、crc、md5、sha1、sha224、sha256、sha384、sha512、blake2b 和 sm3。這些校驗和都不屬於 zip、PNG 和 zlib 的 CRC-32。OpenBSD cksum 也提供 -a 選項,而演算法列表略有不同。FreeBSD cksum 允許透過 -o1、-o2 和 -o3 選項選擇三種校驗和演算法之一,除了預設演算法之外;-o3 是 zip、PNG 和 zlib 的 CRC-32;這也適用於 macOS。

示例

$ cksum /etc/passwd
3052342160 2119 /etc/passwd

一些“cksum”實現提供其他演算法,例如“md5”和“sha1”

$ cksum -a sha1 /etc/passwd
SHA1 (/etc/passwd) = 816d937ca4cdb4dee92d5002610fae63b639d224

你可以透過標準輸入將字串提供給“cksum”來測試它

$ printf 'Guide to UNIX'|cksum
2195826759 13

連結

一個遺留工具,輸出檔案、檔案或標準輸入的某種校驗和,以及大小。它沒有被 POSIX 覆蓋;POSIX 將 #cksum 作為替代工具進行了規範,使用的是與遺留 sum 使用的校驗和不同的校驗和型別。遺留 sum 的不同變體使用不同的演算法。FreeBSD cksum 透過 -o1 和 -o2 選項,以及最新的 GNU Coreutils cksum 透過 -a 選項提供遺留 sum 使用的變體演算法。

GNU Coreutils sum 允許透過 -r 和 -s 選項選擇遺留演算法。

兩種常用的遺留演算法如下所示。

BSD sum,在 GNU sum 中為 -r

  • 將校驗和初始化為 0
  • 對於輸入流的每個位元組
    • 對校驗和執行 1 位的 16 位按位右迴圈移位
    • 將位元組新增到校驗和,並將結果應用於模 2 ^ 16,從而將其保持在 16 位之內
  • 結果是一個 16 位校驗和

System V sum,在 GNU sum 中為 -s

  • checksum0 = 輸入流中所有位元組的總和模 2 ^ 32
  • checksum1 = checksum0 模 2 ^ 16 + checksum0 / 2 ^ 16;
  • checksum = checksum1 模 2 ^ 16 + checksum1 / 2 ^ 16;
  • 結果是一個 16 位校驗和,由最初的 32 位普通位元組總和計算得出

連結

輸出檔案或檔案系統狀態,包括大小、訪問許可權、建立和修改時間等。該命令似乎在 POSIX 中不存在;POSIX 只指定了系統呼叫 stat()。

連結

  • stat, man7.org
  • stat, freebsd.org
  • stat 在 GNU Coreutils 手冊中,gnu.org

輸出匹配正則表示式、不匹配正則表示式以及類似內容的行,具體取決於選項和使用的正則表示式。 請參見 Grep 華夏公益教科書。

連結

逐行比較兩個檔案的檔案內容,並輸出差異。另請參見 diff3

連結

逐行比較三個檔案的原始內容並輸出差異。另見 diff

連結

逐位元組比較檔案,輸出第一個差異所在的位元組數和行號(如果有)。如果檔案是二進位制完全相同的,則不輸出任何內容。除非使用 -l 選項,否則不會顯示第一個差異之後的進一步差異。

連結

輸出檔案中找到的可列印字串,在這些檔案是二進位制檔案時很有用。

連結

華夏公益教科書