[問題] 如何判斷二進位檔

看板Linux作者 (Arim5566)時間13年前 (2012/10/13 17:17), 編輯推噓0(0015)
留言15則, 2人參與, 最新討論串1/1
各位版友好 我有一個檔案但是不太確定他是不是二進位檔 我用vim開啟的時候,都會出現@@@@@@@@.........中間還有夾雜一些 plain text 但是用cat去讀取他的時候,反而全部都是輸出plain text,不知道這是為什麼? 所以cat有讀取二進位檔並且把他反編碼(ASCII)的能力? 假設我這個檔案叫做test 我用 file test 他會輸出test: data 請問輸出data就表示他是二進位檔嗎? 因為我測試 file /bin/bash 他反而會說的仔細一點,說他是執行檔: /bin/bash: ELF 32-bit LSB executable 請問"data"跟"executable"有什麼差別? -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.239.31.68

10/13 17:18, , 1F
因為null ('\0')在終端機上不會印出來
10/13 17:18, 1F

10/13 17:20, , 2F
vim看到的@就是指'\0'
10/13 17:20, 2F

10/13 17:21, , 3F
executable:可執行檔,data:所有file不知到是什麼的東西
10/13 17:21, 3F

10/13 17:21, , 4F
看你願不願意丟出來給大家看是什麼囉
10/13 17:21, 4F

10/13 17:22, , 5F
不過一般來說,很多\0的檔,常常是軟體拿來當database用的
10/13 17:22, 5F

10/13 17:23, , 6F
因為想讀什麼東西,就直接加offset就好,不用scanf/parse
10/13 17:23, 6F

10/13 17:44, , 7F
我知道的是cat 只能讀出ASCII的文字檔
10/13 17:44, 7F

10/13 17:45, , 8F
經過編碼的執行檔和資料檔都會有亂碼,如有誤請指正@@
10/13 17:45, 8F
以下是我提到的test http://tinyurl.com/8dbov4q 我用cat test輸出是plain text 但用vim開啟會變成@@@@@@... 所以我不確定它到底是一個什麼樣的檔案... ※ 編輯: Arim 來自: 36.239.31.68 (10/13 17:54)

10/13 17:53, , 9F
資料格式檔(data):程式運作的當中會讀取特格式的檔案
10/13 17:53, 9F

10/13 17:55, , 10F
可查閱鳥哥”Linux 的檔案屬性與目錄配置“這篇
10/13 17:55, 10F

10/14 00:49, , 11F
就某個程式(也不知到是啥)用來存資料而己
10/14 00:49, 11F

10/14 00:50, , 12F
cat只是把檔案的內容原樣吐到stdout而己,怎麼顯示是terminal
10/14 00:50, 12F

10/14 00:51, , 13F
決定的,高興的話也可以實作一個把所有不在char set裡的東西都
10/14 00:51, 13F

10/14 00:51, , 14F
顯示成hex的terminal.
10/14 00:51, 14F

10/14 00:52, , 15F
$ cat /dev/zero不會顯示東西,因為terminal大多直接不理會\0
10/14 00:52, 15F
文章代碼(AID): #1GUJ6ZBz (Linux)