Linux xxd命令入門示例教程

2021-02-21 Linux公社

你是否需要使用二進位或十六進位格式顯示文件內容? 尋找可以執行此操作的命令行實用程序? 那,你很幸運,因為存在一個名為xxd的命令可以為你做到這一點。 在本教程中,我們將使用一些易於理解的示例來討論xxd。 但在我們這樣做之前,值得一提的是這裡的所有例子都是在Ubuntu 18.04 LTS機器上測試過的。

xxd 命令可以將指定文件或標準輸入以十六進位轉儲,也可以把十六進位轉儲轉換成原來的二進位形式。

Linux xxd 命令

Linux中的xxd命令允許您創建一個hexdump甚至反過來。 以下是它的語法:

xxd [OPTIONS] [file]

以下是該工具的手冊頁的解釋:

xxd創建給定文件或標準輸入的十六進位轉儲。 它還可以將十六進位轉儲轉換回其原始二進位形式。 與uuencode(1) 和 uudecode(1)一樣,它允許以「mail-safe」ASCII表示傳輸二進位數據,但具有解碼到標準輸出的優點。 而且,它可以用於執行二進位文件修補。

下面是一些Q&A風格的例子,可以讓您更好地了解xxd是如何工作的。

Q1. 如何使用xxd命令?

這很簡單。 例如,假設您有一個文本文件'linuxidc.com.txt',其內容如下所示:

No.|Country|Yes/No
01|China|Y
02|US|Y
03|Australia|Y
04|India|N
05|Russia|Y
06|Japan|Y
07|Singapore|Y
08|South Korea|N
09|Finland|Y
10|Ireland|Y

以下是如何使用xxd將文件內容轉換為十六進位:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd linuxidc.com.txt

輸出如下:

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f  No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032  No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c  |US|Y.03|Austral
00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e  ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c  .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67  Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468  paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61  Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e  land|Y.10|Irelan
00000090: 647c 590a                                d|Y.

Q2. 如何用xxd跳過幾行?

假設您不希望完整文件的hexdump。 相反,您希望該工具從特定行開始轉換。 然後可以使用-s命令實現。

例如,如果您希望xxd從第3行開始生成十六進位轉儲,那麼您可以告訴xxd如何執行此操作:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -s 0x30 linuxidc.com.txt

這是產生的輸出:

00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e  ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c  .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67  Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468  paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61  Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e  land|Y.10|Irelan
00000090: 647c 590a                                d|Y.

因此,在這種情況下,您可以看到hexdump在第3行開始生成。

Q3. 如何將xxd輸出限制為特定長度?

在上一節中,我們討論了如何使xxd從特定點開始轉換。 但也有一種方法可以將其轉換限制在特定點。 這可以使用-l命令行選項完成。

例如,要確保xxd僅為linuxidc.com.txt的前三行創建轉儲,請按以下方式使用它:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -l 0x30 linuxidc.com.txt

這是它產生的輸出:

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f  No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032  No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c  |US|N.03|Austral

Q4. 如何設置列長?

如果希望xxd在輸出中生成更少或更多的列,請使用-c選項並指定其中的列數。 這是使用此選項的示例命令:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -c 5 linuxidc.com.txt

輸出如下:

00000000: 4e6f 2e7c 43  No.|C
00000005: 6f75 6e74 72  ountr
0000000a: 797c 5965 73  y|Yes
0000000f: 2f4e 6f0a 30  /No.0
00000014: 317c 496e 64  1|Ind
00000019: 6961 7c59 0a  ia|Y.
0000001e: 3032 7c55 53  02|US
00000023: 7c59 0a30 33  |Y.03
00000028: 7c41 7573 74  |Aust
0000002d: 7261 6c69 61  ralia
00000032: 7c59 0a0a 30  |Y..0
00000037: 347c 4368 69  4|Chi
0000003c: 6e61 7c4e 0a  na|N.
00000041: 3035 7c52 75  05|Ru
00000046: 7373 6961 7c  ssia|
0000004b: 590a 3036 7c  Y.06|
00000050: 4a61 7061 6e  Japan
00000055: 7c59 0a0a 30  |Y..0
0000005a: 377c 5369 6e  7|Sin
0000005f: 6770 616f 72  gpaor
00000064: 657c 590a 30  e|Y.0
00000069: 387c 536f 75  8|Sou
0000006e: 7468 204b 6f  th Ko
00000073: 7265 617c 4e  rea|N
00000078: 0a30 397c 46  .09|F
0000007d: 696e 616c 61  inala
00000082: 6e64 7c59 0a  nd|Y.
00000087: 3130 7c49 72  10|Ir
0000008c: 656c 616e 64  eland
00000091: 7c59 0a      |Y.

所以你可以看到輸出中只產生了5列。

Q5. 如何讓xxd產生二進位轉儲?

是的,這也是可能的。 -b命令行選項使xxd以二進位數字生成轉儲。 以下是該手冊頁中有關此工具的說明:

-b |-Bits

切換到位(二進位數字)轉儲,而不是hexdump。 此選項將八位字節寫為八位「1」和「0」

正常的十六進位轉儲。 每行前面都有一個十六進位的行號,後跟一個ascii(或ebcdic表示。命令行開關-r, -p, -i不適用於此模式。

這是一個例子:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ xxd -b linuxidc.com.txt

總結

所以你可以看到,如果你處理十六進位和二進位文件內容,xxd命令很有用。 在本教程中,我們剛剛討論了xxd提供的一些基本選項。 完成練習後,請訪問該工具的手冊頁以了解有關它的更多信息。

長按或掃描左圖識別二維碼加我不定時在朋友圈發布邀請碼

相關焦點

  • 用於提權的Linux命令,即「xxd」
    xxd命令的作用是將給定的標準輸入或者文件,做一次十六進位的輸出,反之它也可以將十六進位的輸出轉換為原來的二進位格式。其實這很簡單,在Linux上我們可以通過xxd這個命令來做到這一點。xxd命令可以為給定的標準輸入或者文件做一次十六進位的輸出,它也可以將十六進位輸出轉換為原來的二進位格式。這也有助於對任意文件的編碼和解碼。首先,讓我們使用help/man命令,查看xxd命令的具體使用方法。
  • 在 Linux 上安全傳輸文件的 14 SCP 命令示例 | Linux 中國
    在本教程中,我們將討論 14 個有用的 Linux scp 命令示例。示例:1)使用 scp 將文件從本地系統複製到遠程系統假設我們要使用 scp 命令將 jdk 的 rpm 軟體包從本地 Linux 系統複製到遠程系統(172.20.10.8),請使用以下命令,[root@linuxtechi ~]$ scp jdk-linux-x64_bin.rpm root@linuxtechi:/optroot@linuxtechi's
  • Linux教程系列:Linux 中的 Watch 命令示例
    點擊上方藍字 ● 關注Linux公社 在本指南中,我們將使用易於理解的示例討論 watch 命令的一些基本功能。
  • Linux Touch命令的8種使用技巧
    如果您是精通終端的人,可以通過以下命令在命令行中快速創建新文件:$ touch 「filename」示例:$ touch linuxidc在下面的示例中,我通過touch命令創建了一個名為「linuxidc」的空文件。
  • 【Linux】修改權限命令chmod用法示例
    在上一篇文章中,我們了解了如何使用chown命令管理文件和目錄的所有權。在本教程中,我們將介紹chmod命令。chmod命令(change mode的縮寫)用於管理文件和目錄權限,並確定誰可以訪問它們。現在讓我們深入了解文件和目錄權限的本質,以及如何修改它們。Linux權限為了更好地理解chmod命令是如何工作的,我們該謹慎地研究Linux文件權限模型。
  • 在 Linux 下 9 個有用的 touch 命令示例
    如下所示:[root@linuxtechi ~]# touch devops.txt[root@linuxtechi ~]# ls -l devops.txt-rw-r--r--. 1 root root 0 Mar 29 22:39 devops.txt示例:2 使用 touch 創建批量空文件
  • Tar命令備份還原Linux系統
    意外想到tar命令就可以,通過scp傳到不同的主機備份的目錄最好使用相對路徑,也就是進入到需要備份的根目錄下具體示例方法如下。lost+foundmkdir mntmkdir sysmkdir mediamkdir run重啟系統,恢復完成讓您學習到的每一節課都有所收穫《Linux就該這麼學》是一本由資深運維專家劉遄老師及國內多名紅帽架構師(RHCA)基於最新RHEL7系統共同編寫的高質量Linux技術自學教程
  • linux中的11個cron調度任務示例
    收錄於話題 #Linux入門指南, #)Asterik(*)– 匹配欄位中的所有值或任何可能的值。Slash (/)– 第一個欄位 /10 表示每十分鐘或範圍增量。7. 系統範圍的 Cron 計劃系統管理員可以使用預定義的 cron 目錄,如下所示。8. 安排特定時間的作業以下作業從中刪除空文件和目錄/tmp在00:30我每天。你需要提及用戶名才能執行 crontab 命令。
  • 適用於linux的5個最佳命令行歸檔工具
    收錄於話題 #Linux入門指南1.tar 命令tar是標準的UNIX/Linux歸檔應用工具。早期它曾經是一個磁帶歸檔程序,後來逐漸發展成為能夠處理各種歸檔文件的通用歸檔包。tar接受很多帶有選項的歸檔過濾器。tar選項tar示例創建 tar 存檔文件。
  • 如何使用Linux Sleep命令暫停Bash腳本
    當在bash shell腳本中使用sleep命令時,例如在重試失敗的操作或循環時,該命令尤其有用。在本教程中,我們將向您展示如何使用Linux sleep命令。如何使用Sleep命令sleep命令的語法如下:sleep NUMBER [SUFFIX]...NUMBER可以是正整數或浮點數。
  • 一天一個 Linux 命令: ldd 命令
    注意,ldd 本身不是一個二進位程序,而是一個 Shell 腳本,使用文本編輯器 vim 可以查看其內容,具體目錄可以使用 which 命令查看:我們知道,Linux 的動態庫裝載器 ld-linux.so 模塊會先於 executable 模塊工作,並獲得控制權,ld-linux.so 會通過系統環境變量的設置,選擇只顯示可執行模塊的dependency
  • Linux cp 命令的15個示例 - 創建文件和目錄的副本
    下面是命令的示例。$ cp -s /home/pungki/Documents/file_6.txt file_6.txt創建符號連結只能在當前目錄下進行。當對符號連結使用 cp 命令,它會照原樣拷貝它自身。來看看下面的示例。$ cp -P file_6.txt ./movie
  • Linux su命令的使用案例
    前言本文主要是講解與演示Linux系統中的su命令的使用與常見用法。Linux su命令的使用案例su命令也稱為switch user,翻譯為切換用戶。該命令用於在登錄會話期間把用戶身份切換到其他用戶。當沒有指定切換目標用戶名時,su默認切換到root用戶。正常來說,su命令用於在不退出系統的情況下將當前登錄的用戶切換到另一個用戶。
  • Linux ls命令使用示例詳解
    >[linuxidc@localhost ~]$ ls -l -R /home/linuxidc/linuxidc.com在使用 ls 命令時要注意命令的格式:在命令提示符後,首先是命令的關鍵字,接下來是命令參數,在命令參數之前要有一短橫線「-」,所有的命令參數都有特定的作用,自己可以根據需要選用一個或者多個參數,在命令參數的後面是命令的操作對象。
  • Inxi:獲取Linux系統和硬體信息的神器
    所以,我們可以簡單地運行下列命令安裝。比如獲取聲音/音頻硬體詳情信息,可以運行如下命令:inxi-A示例輸出:Audio: Card: Intel 6 Series/C200 Series Family High Definition Audio
  • linux中多種查看系統時間的命令
    介紹linux中多種查看時間的方法1.date這個是最經典的系統查看時間的命令
  • 【ECMAScript 6 入門教程】let 和 const 命令
    ES6 為了改變這一點,一方面規定,為了保持兼容性,var命令和function命令聲明的全局變量,依舊是頂層對象的屬性;另一方面規定,let命令、const命令、class命令聲明的全局變量,不屬於頂層對象的屬性。也就是說,從 ES6 開始,全局變量將逐步與頂層對象的屬性脫鉤。
  • Linux安裝使用pidstat命令以對進程數據進行監控
    Linux系統監控的命令其實有很多,pidstat命令就是其中的一種,使用pidstat命令可以對Linux系統進程數據進行監控,
  • 在Linux上使用netstat命令查證DDOS攻擊的方法
    在這篇小文章中,你可以知道在受到攻擊之後如何在終端中使用netstat命令檢查你的伺服器。:iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT請注意你必須用你使用netstat命令找到的IP數替換$IPADRESS在完成以上的命令,使用下面的命令殺掉所有httpd連接,清除你的系統,然後重啟httpd服務。
  • linux中遠程伺服器上傳輸文件的10個sftp命令示例
    收錄於話題 #Linux入門指南Security Warnings: 請不要全局打開SSH埠 (Secure SHell) ,因為這將是一個安全漏洞。你只能打開要在遠程系統上傳輸或管理文件的特定 IP,反之亦然。SSH session1. 如何連接到 SFTP默認情況下,使用相同的 SSH 協議進行身份驗證和建立 SFTP 連接。