1. 程式人生 > >識別Mac電腦上檔案的命令列技巧

識別Mac電腦上檔案的命令列技巧

有時你會因一個檔案而迷惑,這個檔案可能是在你的資料夾中的一個未知型別的檔案,它可能是你的父母或者客戶給你的。不幸的是,你不知道它到底是一種什麼樣的檔案。在Mac上檔案是不帶有拓展名的,所以可能並沒有足夠的資訊來告訴你“Flongnozzle-2012”到底包含了什麼內容。然而終端(Terminal)可以為你提供一些便利,你可以使用一些內嵌的命令列工具來幫助你鑑別檔案。

識別檔案內容

對於這種情況,file命令恰好是我所需要的。file指令可以檢測一個檔案的內容然後試圖去弄清楚它是什麼。

Objective-C
123 %filelaunchHandler.mlaunchHandler.m: ASCIIC++program text

當然,這其實是Objective-C檔案,不過終端已經非常接近了,終端將其鑑別為一個內有程式碼的檔案。“等等,MarkD(注:作者),它僅僅看下檔案的拓展名不就行了嗎?”file命令也支援這種情況,不過拓展名並不是必須的:

Objective-C
12345 %cplaunchHandler.msplunge%filesplungesplunge: ASCIIC++program text

沒有檔案拓展名,不過我們依然鑑別出了這個檔案是什麼。將file命令指向一個可能包含可執行程式碼的檔案或目錄,它會告訴你其內在的結構:

Objective-C
123 %file/bin/ls/bin/ls: Mach-O64-bit executable x86_64

你可能會說,如果你有一個體積龐大的二進位制檔案(例如,原生的App)怎麼辦,下面是辦法:

Objective-C
12345 %file/Applications/Reason/Reason.app/Contents/MacOS/ReasonReason.app/Contents/MacOS/Reason: Mach-Ouniversal binary with2architecturesReason.app/Contents/MacOS/Reason(for architecture i386): Mach-Oexecutable i386Reason.app/Contents/MacOS/Reason(for architecture x86_64): Mach-O64-bit executable x86_64

將file指向一個圖片檔案來看看圖片的一些資訊:

Objective-C
123 %fileFlongnozzle-2012Flongnozzle-2012: PNGimage data,1932x904,8-bit/color RGB,non-interlaced

哦等等,這裡有一個終端的使用小技巧:將檔案的圖示從Finder中拖入終端視窗,這就相當於將你拖動的這個檔案或資料夾的完整路徑貼上進去了。

進一步探索

有時file也不會讓你滿意,或者你可能想要知道關於檔案的更多資訊。一般來說,你總是可以通過QuickLook在Finder中瀏覽一下檔案,如果這樣不起作用,那麼你可以使用hexdump命令來看看出檔案的位元組數,也可以傳入引數-c來看看翻譯成ASCII碼之後的資訊。

例如,回到我們之前的那個圖片檔案:

Objective-C
1234567 %hexdump-CFlongnozzle-2012|head0000000089504e470d0a1a0a0000000d49484452|.PNG........IHDR|000000100000078c000003880802000000a2 e09b|................|000000206100000c45694343504943432050726f|a...EiCCPICCPro|0000003066696c650000480dad57775453c917be|file..H..WwTS...|00000040af2481908412888094d09b28bd4aef82|.$.........(.J..|

在展示出來的資料區並沒有太多有用資訊,但是你可以看到它是PNG型別的,這已經是比較有用了,有些檔案還含有更多字串型別的內容,下面是對一個從Reason數碼音訊工作室獲得的補丁檔案使用hexdump指令得到的資訊:

Objective-C
123456789101112 %hexdump-CCV-Spy--md.cmb00000000464f524d000003d85054434843415420|FORM....PTCHCAT|000000100000000452454653434f494e00000006|....REFSCOIN....|00000020bc010000000143415420000000fc4445|......CAT....DE|00000030564c464f524d000000f0444556494445|VLFORM....DEVIDE|00000040534300000047bc020100000700000010|SC...G..........|000000500000001243562056616c756573202830|....CVValues(0|000000602d3e3235362900000000000000000000|->256)..........|0000007000001644444c204469676974616c2044|...DDLDigitalD|00000080656c6179204c696e6500000004005041|elay Line.....PA|...

如果你之前用過Reason,術語“CV Values”和“DDL Digital Delay Line”你一定不會陌生。

strings命令可以從檔案中得到像字串一樣的位元組序列:

Objective-C
1234567891011 %stringsCV-Spy--md.cmbFORMPTCHCATREFSCOINCATDEVLFORMDEVIDESCCVValues(0->256)DDLDigitalDelayLine...

屬性值

屬性列表(Property lists)是Mac和iOS系統上的一種標準型別的檔案,將一些可以預知型別的資料有結構地組織起來就構成了我們的plist檔案。在該系統上,一般你看到的屬性列表檔案都是被壓縮成二進位制格式的檔案,這樣在讀取時會更快。使用者的偏好設定就被儲存為plist檔案:

Objective-C
123456 %pwd/Users/markd/Library/Preferences%filecom.apple.iphonesimulator.plistcom.apple.iphonesimulator.plist: Applebinary property list

不幸的是,這個壓縮之後的plist檔案是一種非常難讀的檔案:

Objective-C
1234567891011 %hexdump-Ccom.apple.iphonesimulator.plist0000000062706c6973743030dc01020304050607|bplist00........|0000001008090a0b0c0d0e0f1011121314151617|................|00000020185e53696d756c617465446576696365|.^SimulateDevice|000000305f102f4e5357696e646f77204672616d|_./NSWindowFram|0000004065206950686f6e6553696d756c61746f|eiPhoneSimulato|000000507257696e646f772e322e302e37353030|rWindow.2.0.7500|0000006030305f102f4e5357696e646f77204672|00_./NSWindowFr|00000070616d65206950686f6e6553696d756c61|ame iPhoneSimula|...

幸運的是,有一個工具plutil指令能將這樣二進位制形式的資料轉換為更接近與人類可讀語言的形式:

(“!$”快捷鍵用來獲取上一條指令中得最後一個引數)

Spotlight

在解讀一個特定檔案方面,OS可能做得比你想象得更好。Spotlight的工作就是為磁碟上的檔案編制索引,通過查詢元資料來讓本地搜尋更方便快捷。你可以通過mdls命令來獲取這個元資料,所以你能夠問問Spotlight對於這個檔案都知道些什麼:

Objective-C
12345678910111213141516171819202122 %mdlslaunchHandler.mkMDItemContentCreationDate=2014-07-02 19:22:02+0000kMDItemContentModificationDate=2014-07-02 19:23:58+0000kMDItemContentType="public.objective-c-source"kMDItemContentTypeTree=("public.objective-c

相關推薦

識別Mac電腦檔案命令技巧

有時你會因一個檔案而迷惑,這個檔案可能是在你的資料夾中的一個未知型別的檔案,它可能是你的父母或者客戶給你的。不幸的是,你不知道它到底是一種什麼樣的檔案。在Mac上檔案是不帶有拓展名的,所以可能並沒有足夠的資訊來告訴你“Flongnozzle-2012”到底包含了什麼內容。然而終

在Linux伺服器命令下執行Matlab的.m檔案

1、採用shell工具例如xshell連線伺服器,鍵入 matlab ,或者含有matlab的相關命令,按照提示要求安裝Xmanager工具,只需官網下載,按說明安裝。 2、直接執行Matlab:$matlab,然後可以開啟matlab工具,根據xmanager工具可以在本地開啟matlab

檔案管理、檔案路徑、檔案批處理、命令技巧

一、檔案管理 1.新建 ①新建檔案 touch file file1 file2 .... 注意:touch預設用來建立檔案,同時此命令具備修改檔案時間戳功能 ②新建目錄(directory) mkdir        dir                     

如何在Mac OS X命令快速的調整圖片大小

如果你使用的是Mac,經常需要調整一批照片的大小,實際上有一個內建工具,可以讓你無需開啟任何影象編輯工具就能搞定。這就是所謂的“SIPS”,是命令列的影象處理工具。它非常容易使用,但你需要知道如何在終端上發揮它的優勢。 簡單地說你想要處理的圖片拷貝到一個目錄中的,在終端cd到該目錄,並執行以下命令

Mac電腦,移動硬盤裡檔案變灰色,且不可操作的解決辦法

在Mac電腦上,移動硬盤裡檔案變灰色,而且無法拷貝進電腦,提示檔案正在使用中。解決辦法:1,先安裝軟體 Mounty for NTFS,這個軟體可以讓Mac系統支援NTFS硬碟讀寫操作。2,檔案變灰色的

在Linux平臺上的Ftp伺服器通過命令下載檔案

本文中,介紹在 Linux shell 中如何使用 ftp 命令。包括如何連線 FTP 伺服器,上傳或下載檔案以及建立資料夾。儘管現在有許多不錯的 FTP 桌面應用,但是在伺服器、SSH、遠端會話中命令列 ftp 命令還是有很多應用的。比如。需要伺服器從 ftp

Mac命令操作git

1.git clone 2.git log cd SlidingMenu 然後 git log 可以檢視這個倉庫以前的提交記錄 3.git status 對 SlidingMenu進行修改後,git status 就會顯示出你修改的檔案

Mac 命令建立cocos工程

建立之前mac上需要配好環境變數,這個我後期再寫進來。 還有,可以輸入 open .bash_profile 來看一下配好的環境或者環境是否配好。 另外,建立工程時最後輸入的 com.a.b

Mac使用命令安裝brew,並通過brew安裝Ant等工具

brew又叫Homebrew,是Mac OS X上的軟體包管理工具,能在Mac中方便的安裝或解除安裝軟體,只需要一個命令,非常方便。 安裝brew 開啟Mac上的終端,輸入命令,並按回車鍵: rub

Linux檔案和下載檔案命令方式

在Linux主機上,安裝上傳下載工具包rz及sz 只需要安裝下面這個包即可,執行下面的安裝命令 yum install -y lrzsz 上傳 在Linux命令列下輸入rz, rz 輸入rz命令後,會彈出對話方塊,選擇你要上傳的檔案,

Mac OS系統命令方式啟動VNC Server

Mac OS X 上開啟VNC Server服務(不帶vnc密碼): sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate

Mac電腦安裝linux系統

發行版 nbsp 安裝linux 打開 www 首頁 ubunt .net 百度一下 1.首頁需要下載VMware fusion (百度一下) 2.Ubuntu 鏡像文件(.iso) 連接:http://www.jb51.net/LINUXjishu/239493.htm

MAC下iterm2下命令快捷鍵

一開始在使用iterm2時不太習慣,打了很長的命令後,想編輯非常不順手,今天特意整理了一下iterm2在mac下的一些快捷鍵,方便命令列編輯;(希望今後有機會可以嘗試命令列下的vim模式) 標籤 新建標籤:command + t 關閉標籤:command + w 切換標籤:

Mac 快捷鍵和命令 大全

ctrl+shift                                    快速放大dock的圖示

Mac顯示隱藏檔案命令

開啟iTerm或者其他命令列工具 在 Finder 視窗中看到那些隱藏的檔案和檔案夾了 defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder   如果你想再次隱藏原本

[編譯] 5、在Linux下搭建安卓APP的開發燒寫環境(makefile版)—— 在Linux命令+VIM開發安卓APP

星期三, 19. 九月 2018 02:19上午 - BEAUTIFULZZZZ 0)前言 本文不討論用IDE和文字編輯器開發的優劣,是基於以下兩點考慮去嘗試用命令列編譯安卓APP的: 瞭解安卓APP的編譯過程,瞭解IDE幹了什麼事; 放在打包伺服器上需要自動化生成APP的指令碼; 1)安裝配置環境

mac電腦tomcat埠被佔用的解決辦法

假如被佔用的埠時8080 那麼在終端上輸入:   lsof -i:8080       如圖: 然後根據提示資訊輸入: kill -9 13016      這裡的13016就是java後面的那

Mac電腦安裝多版本的Python • cenalulu's Tech Blog

本文將介紹如何在Mac電腦上實現多個版本的Python共存及切換的方法 申明:本文是Stackoverflow的回答轉載和翻譯。原文連結 具體方法 首先通過homebrew安裝pyenv,之後的所有Python安裝和管理通過pyenv進行。 $ brew install py

資料科學家的命令技巧

對於許多資料科學家來說,資料操作起始於Pandas或Tidyverse。從理論上看,這個概念沒有錯。畢竟,這是為什麼這些工具首先存在的原因。然而,對於分隔符轉換等簡單任務來說,這些選項通常可能是過於重量級了。 有意掌握命令列應該在每個開發人員的技能鏈上,特別是資料

Mac OS X 下命令編譯錯誤: ld: library not found for -lcrt1.10.6.o

在 Mac OS X 的 10.8.3 的版本中,使用命令列執行 configure 時,生成下面的錯誤: WenBi-MacBook:tcpdump-4.4.0 wenbi$ ./configure checking build system type... x86