1.什么是終端旧找?
要說(shuō)清終端是什么溺健,我們先來(lái)看看操作系統(tǒng)的組成。簡(jiǎn)化來(lái)說(shuō)钮蛛,操作系統(tǒng)分為兩個(gè)部分鞭缭,一部分稱作內(nèi)核,另一部分成為用戶交互界面魏颓。內(nèi)核部分負(fù)責(zé)系統(tǒng)的全部邏輯操作岭辣,由海量命令組成,這一部分是系統(tǒng)運(yùn)行的命脈琼开,不與用戶接觸易结;交互界面則是開(kāi)機(jī)之后所有我們所看到的東西枕荞,比如窗口柜候,軟件,應(yīng)用程序等等躏精。
那么我們?nèi)粑覀兿雽?duì)系統(tǒng)內(nèi)核的某些操作邏輯做出一些修改渣刷,應(yīng)該怎么辦呢?終端就是連接內(nèi)核與交互界面的這座橋矗烛,它允許用戶在交互界面上打開(kāi)一個(gè)叫做「Terminal 終端」的應(yīng)用程序辅柴,在其中輸入命令,系統(tǒng)會(huì)直接給出反饋瞭吃。
因?yàn)榻K端這座橋碌嘀,實(shí)際允許用戶間接控制系統(tǒng)內(nèi)核,也就是系統(tǒng)的大腦歪架,因此它理論上具備控制一切的權(quán)利股冗。
2.如何打開(kāi)終端?
終端是系統(tǒng)中一個(gè)應(yīng)用程序和蚪,你可以直接在所有程序中找到它止状,點(diǎn)擊打開(kāi)就行烹棉。或者使用聚焦搜索怯疤,輸入「終端」或「Terminal」浆洗,看到終端被選中了按下回車即可。
3.基礎(chǔ)指令
簡(jiǎn)單來(lái)說(shuō),首先打開(kāi)終端,在里面輸入 say hello 命令.系統(tǒng)就會(huì)說(shuō)出hello.
命令由三個(gè)部分組成集峦,第一個(gè)部分是命令對(duì)象伏社,在?say hi?這個(gè)命令中,「say」 是我們的命令對(duì)象塔淤,我們希望電腦說(shuō)話洛口;第二個(gè)部分是修飾命令對(duì)象的關(guān)鍵詞,可有可無(wú)凯沪,若我希望電腦說(shuō)話時(shí)慢一點(diǎn)第焰,可以輸入?say -r 500 hi,這里的 「-r 500」 則是修飾說(shuō)話語(yǔ)速的關(guān)鍵詞妨马;第三部分是命令內(nèi)容挺举,這里填寫希望電腦說(shuō)的內(nèi)容是「hi」這句話。
3.1?對(duì)文件烘跺,文件夾的操作
當(dāng)你需要使用終端對(duì)文件夾進(jìn)行操作時(shí)湘纵,終端需要你告訴它,你想要修改的文件在哪里滤淳,這時(shí)我們需要了解路徑的概念梧喷。系統(tǒng)中的每一個(gè)文件都有一個(gè)存放位置,這一存放位置就稱作路徑脖咐。
終端啟動(dòng)后铺敌,它的默認(rèn)路徑在當(dāng)前用戶文件夾的根目錄上,為了確定這一點(diǎn)屁擅,你可以輸入?pwd?命令來(lái)查看當(dāng)前路徑偿凭。在下圖中,輸入命令后派歌,終端告訴我當(dāng)前路徑是?/Users/我的名字弯囊。
路徑的一般寫法為?/文件夾名/文件夾名,但路徑其實(shí)分為兩種胶果。一種叫相對(duì)路徑匾嘱,另一種叫絕對(duì)路徑,它們兩有什么區(qū)別呢早抠?
我們從當(dāng)前路徑說(shuō)起霎烙,當(dāng)前路徑指的是現(xiàn)在終端所處的位置,若你想改變當(dāng)前路徑,則可以輸入?cd /其他文件夾吼过。比如我希望系統(tǒng)將當(dāng)前路徑改為所有應(yīng)用程序文件夾锐秦,則輸入?cd /Applications,在下圖中可以看到盗忱,Legolas 前出現(xiàn)了一個(gè) Applications酱床,表示當(dāng)前路徑已經(jīng)在應(yīng)用程序文件夾中。
剛剛提到的路徑的一般寫法 「/文件夾名/文件夾名」趟佃,它指的其實(shí)就是絕對(duì)路徑扇谣,你必須指定它從根目錄一直到達(dá)具體的文件夾。
與其相對(duì)的是相對(duì)路徑闲昭,相對(duì)路徑允許你告訴終端從現(xiàn)在開(kāi)始罐寨,接下來(lái)應(yīng)該怎么走。相對(duì)路徑的書寫方法實(shí)在絕對(duì)路徑前加一個(gè)?.序矩。
若你現(xiàn)在已經(jīng)處在應(yīng)用程序文件夾中鸯绿,想前往其中的一個(gè)名叫 Utilities 的子文件夾應(yīng)該怎么辦?
下圖中簸淀,當(dāng)前位置的絕對(duì)路徑是?/Applications/Utilities瓶蝴,但由于我已經(jīng)處于?/Applications文件夾中,因此可以使用相對(duì)路徑的寫法?cd ./Utilities租幕,表示將當(dāng)前路徑轉(zhuǎn)到 Utilities 文件夾舷手。
快速導(dǎo)入路徑:直接將待編輯文件或文件夾拖入終端中即可,它會(huì)自動(dòng)把絕對(duì)路徑提取出來(lái)劲绪,實(shí)際情況下常用的也是這種自動(dòng)提取或手動(dòng)復(fù)制的方法男窟。
當(dāng)你想要查看當(dāng)前路徑下有什么文件時(shí),可以使用?ls?命令贾富,它會(huì)列舉當(dāng)前路徑下的全部文件歉眷,若你希查看進(jìn)階設(shè)定,比如列舉當(dāng)前路徑下的全部文件并展開(kāi)所有子文件夾祷安,可以在?ls?命令后加上?-R?的識(shí)別符姥芥,新指令就變成了?ls -R,運(yùn)行結(jié)果如下汇鞭,可以看到我放在資源文件夾中的所有子文件都被顯示出來(lái)了。
講到這里庸追,你也許會(huì)發(fā)現(xiàn)自己的終端已經(jīng)滿滿當(dāng)當(dāng)?shù)牧嘶艚荆粗皇娣@時(shí)可以使用?clear指令來(lái)清屏淡溯,運(yùn)行結(jié)果如下读整。
常見(jiàn)的還有?cp復(fù)制文件;?mv?移動(dòng)文件咱娶;?mkdir?創(chuàng)建目錄米间;?cat?顯示文件內(nèi)容等等,詳情請(qǐng)看下面每天一個(gè)linux命令.
關(guān)聯(lián)閱讀:每天一個(gè)linux命令
4.常見(jiàn)玩法
關(guān)閉崩潰報(bào)錯(cuò):有時(shí)軟件崩潰就已經(jīng)很讓人煩心了强品,重新打開(kāi)后一遍遍彈出的問(wèn)題報(bào)告更是煩不勝煩。這時(shí)你可以使用?defaults write com.apple.CrashReporter DialogType none?命令關(guān)閉這個(gè)問(wèn)題報(bào)告屈糊。若你希望恢復(fù)其顯示的榛,可以輸入?defaults write com.apple.CrashReporter DialogType crashreport。
修改文件日期:?有時(shí)你可能需要修改文件創(chuàng)建或修改日期逻锐,這時(shí)可以使用?touch -t 199505090000 拖入文件命令夫晌。這句命令中的數(shù)字表示 1995 年 5 月 9 日 00:00 分,你可以根據(jù)實(shí)際需要修改昧诱。
不要進(jìn)入休眠狀態(tài):當(dāng)你臨時(shí)不希望電腦進(jìn)入休眠狀態(tài)時(shí)晓淀,可以使用?caffeinate?命令讓電腦時(shí)刻清醒。當(dāng)你需要其恢復(fù)正常時(shí)盏档,按下??Control - C?即可停止該命令凶掰。
程序假死需要強(qiáng)退:有時(shí)候程序假死了,強(qiáng)行退出也沒(méi)用蜈亩,這時(shí)可以使用?killall?命令锄俄。以微信為例,若想強(qiáng)退它勺拣,只需輸入?killall WeChat?即可奶赠。
截圖保存為 JPEG:Mac 的默認(rèn)截圖格式為 PNG,若你想讓默認(rèn)的截圖保存類型為 JPEG药有,可以輸入如下指令?defaults write com.apple.screencapture type jpg毅戈,結(jié)果如下圖所示,以后的截圖都會(huì)變成 JPEG 格式愤惰。如果你希望撤銷這條指令苇经,輸入?defaults write com.apple.screencapture type png?即可。
關(guān)閉截圖自動(dòng)陰影:?若你使用 Mac 自帶的截圖宦言,會(huì)發(fā)現(xiàn)每次的窗口截圖均會(huì)自動(dòng)添加陰影扇单,當(dāng)你需要后期處理這些圖片時(shí),這些陰影可能會(huì)對(duì)你造成困擾奠旺。你可以使用下面這串命令來(lái)關(guān)閉截圖陰影:
當(dāng)你希望重新啟動(dòng)陰影時(shí)蜘澜,可以輸入:
查看下方的截圖,你就會(huì)發(fā)現(xiàn)它和本文的其他截圖不同响疚,沒(méi)有陰影鄙信。
顯示隱藏文件夾:在你跟著網(wǎng)絡(luò)上的教程進(jìn)行一些操作時(shí),難免會(huì)遇到讓你尋找隱藏文件夾的情況忿晕,這時(shí)你可以使用:defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder
來(lái)顯示所有隱藏文件夾装诡,當(dāng)你不需要再顯示時(shí),輸入:defaults write com.apple.finder AppleShowAllFiles -bool false; killall Finder
即可恢復(fù)隱藏。查看下圖鸦采,你會(huì)發(fā)現(xiàn)所有隱藏文件夾全部顯示出來(lái)了宾巍。還有一個(gè)簡(jiǎn)單方法,快捷鍵cmd + shift + . 打開(kāi)或者關(guān)閉隱藏文件夾
整理程序欄:你也許會(huì)發(fā)現(xiàn)渔伯,底部的程序欄越用越亂膏燃,有時(shí)候內(nèi)容多的半天找不到所需程序威鹿。這時(shí)你可以考慮為其加入幾個(gè)隱藏的分界符將其歸為幾個(gè)區(qū)域,輸入:
defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}'; killall Dock
即可添加一個(gè)空白分界符,需要幾個(gè)重復(fù)運(yùn)行幾遍命令即可闲礼。當(dāng)你不需要這個(gè)白分界符了蛾号,將它從程序欄拖走即可刪除澡为。
重置程序欄:當(dāng)你想要重新整理底部程序欄時(shí)天揖,有時(shí)候從默認(rèn)狀態(tài)開(kāi)始整理也許是個(gè)好辦法。這是你可以使用?defaults delete com.apple.dock; killall Dock?命令將程序欄恢復(fù)為電腦剛剛激活時(shí)的狀態(tài)诸典。
打印機(jī)械感十足的文字:當(dāng)你想要打出機(jī)械感十足的文字時(shí)描函,可以玩玩banner -w 80 legolas.me這句命令,只需要將代碼結(jié)尾處的文字替換為你想打印的字即可狐粱。
5.進(jìn)階教程
上面講了不少指令舀寓,你也許會(huì)好奇,這些指令到底修改的是什么肌蜻?可以修改什么互墓?若我想改別的,應(yīng)該去哪里找蒋搜?
默認(rèn)設(shè)置 defaults
上面這些 defaults 開(kāi)始的指令篡撵,實(shí)際修改的是系統(tǒng)默認(rèn)的 Plist 表單,這些表單管理著系統(tǒng)中全部程序的默認(rèn)設(shè)置豆挽,上面所做的修改無(wú)非是改了某些程序的默認(rèn)設(shè)置罷了育谬。
若你想查看還有哪些可以修改,可以在訪達(dá)中按下鍵盤??Option帮哈,點(diǎn)擊「前往 - 資源庫(kù)」膛檀,找到 Perference 文件夾,你會(huì)發(fā)現(xiàn)所有的 Plist 文件均在這里娘侍,你也可以根據(jù)便好手動(dòng)修改咖刃。
文件格式轉(zhuǎn)換 textutil
textutil 是一個(gè)系統(tǒng)自帶的,用于處理文稿的命令私蕾,其中我最常用的功能是其下屬功能 convert僵缺,這句指令允許你將任何文件,在以下文件格式中互相轉(zhuǎn)換 txt, html, rtf, rtfd, doc, docx, wordml, odt, webarchive踩叭。
若你手頭有一篇 DOCX 文件需要被轉(zhuǎn)換成 TXT,則可以輸入?textutil -convert txt 文件路徑,這句代碼中的 txt 處容贝,可以替換為任何你需要轉(zhuǎn)換到的文件格式自脯,文件路徑則可以采用拖拽文件到終端的方法自動(dòng)填充。
磁盤處理 diskutil
磁盤處理也是常用的命令行操作之一斤富,因?yàn)槠涿钚枰鶕?jù)具體情況具體對(duì)待膏潮,所以我只簡(jiǎn)單介紹其中無(wú)風(fēng)險(xiǎn)的兩個(gè),下方列舉的其余操作均會(huì)直接處理磁盤內(nèi)容满力,請(qǐng)務(wù)必清楚你在做什么焕参,然后再輸入命令。
若你的電腦采用的是 APFS 磁盤分區(qū)油额,則應(yīng)使用?diskutil apfs?開(kāi)頭的命令叠纷;若你的電腦采用的是 HFS,HFS+ 磁盤分區(qū)潦嘶,則應(yīng)使用?diskutil?開(kāi)頭的命令涩嚣;若你的電腦采用的是 coreStorage 磁盤分區(qū),則應(yīng)使用?diskutil cs開(kāi)頭的命令掂僵。
diskutil list?命令會(huì)將你的現(xiàn)有磁盤狀況顯示出來(lái)航厚,如下圖所示。
diskutil cs list?命令會(huì)將你的現(xiàn)有的 Core Storage 邏輯分區(qū)狀況顯示出來(lái)锰蓬,如下圖所示幔睬。
6.常用但有風(fēng)險(xiǎn)的命令?
以上講的所有指令,都是無(wú)害指令芹扭,這里的無(wú)害指的是不會(huì)對(duì)系統(tǒng)文件造成破壞麻顶,但是還有一些指令,可以瞬間刪掉你的整個(gè)系統(tǒng)冯勉,若你知道這些指令的用法那也沒(méi)問(wèn)題澈蚌,但若是不小心根據(jù)網(wǎng)上的教程用了從而誤刪了東西就不好了。內(nèi)核為了確保你知道某些指令的用法灼狰,要求你必須在這些有風(fēng)險(xiǎn)的指令前加輸?sudo宛瞄,這就是所謂的超級(jí)管理員指令,它會(huì)在你密碼確認(rèn)后交胚,賦予 sudo 之后的命令最高權(quán)限份汗,可以進(jìn)行任何操作。
比如我需要把電腦上的 Windows 分區(qū)徹底刪除時(shí)蝴簇,只需要輸入下面這串代碼杯活,一瞬間整個(gè)磁盤分區(qū)就會(huì)被刪除:sudo diskutil eraseVolume free none diskx
查看分區(qū)上限:sudo diskutil resizeVolume /dev/disk1s3 limits
重置空間大小:sudo diskutil resizeVolume /dev/disk1s2 100GB
斷開(kāi)驅(qū)動(dòng)器:sudo diskutil unmountDisk force /dev/disk1
徹底移除邏輯磁盤: diskutil unmount /Volumes/Macintosh\ HD
顯示 GUID 分區(qū)結(jié)構(gòu): gpt -r show /dev/disk1
刪除 EFI NO NAME:gpt remove -I 4 /dev/disk1
新增存儲(chǔ)區(qū)塊:gpt add -I 3 -b 1362424032 -s 1269536 -t 426F6F74-0000-11AA- AA11-00306543ECAC
新增分區(qū):newfs_hfs -J -v “Recovery HD” /dev/disk0s3
物理 Core Storage 擴(kuò)容: diskutil cs resizeDisk 11111111-2222-3333-4444-555555555555 980g
邏輯 Core Storage 擴(kuò)容: diskutil cs resizeVolume 11111111-2222-3333-4444-555555555555 980g
文件刪除 rm
這一指令本是?刪除文件?用的熬词,但正因?yàn)樗梢圆环謹(jǐn)澄业膭h除任何文件旁钧,新手誤用有極大風(fēng)險(xiǎn)吸重,因此我不打算詳細(xì)介紹這個(gè)。網(wǎng)上有一個(gè)臭名遠(yuǎn)揚(yáng)的傳言歪今,欺騙別人用?sudo rm -rfv /Cool?來(lái)刪除系統(tǒng)文件嚎幸,從而使整個(gè)系統(tǒng)崩潰,這條命令絕對(duì)不要嘗試寄猩。
我們來(lái)用前面學(xué)到的知識(shí)分析一下為什么這句命令會(huì)使得系統(tǒng)崩潰嫉晶。首先 sudo 表示管理員命令并獲取最高權(quán)限,rm?表示刪除文件田篇,用?man rm?命令查看手冊(cè)替废,可以發(fā)現(xiàn) -r 是用來(lái)修飾 rm 命令的,表示刪除當(dāng)前工作路徑下的全部子文件泊柬,-f 也是修飾 rm 命令的椎镣,表示無(wú)視被保護(hù)的文件依舊執(zhí)行刪除。
前文在講默認(rèn)路徑時(shí)提到彬呻,打開(kāi)終端之后默認(rèn)工作路徑正是當(dāng)前用戶的根目錄衣陶,因此執(zhí)行?sudo rm -rfv /Cool?后,會(huì)從根目錄開(kāi)始闸氮,無(wú)視被保護(hù)的文件并且刪除當(dāng)前路徑下的所有文件及子文件夾剪况,包括系統(tǒng)文件,這樣一來(lái)系統(tǒng)就廢了蒲跨。
既然談到了這個(gè)代碼的破壞力译断,我索性用與 Mac 同源的 fedora 系統(tǒng)在虛擬機(jī)上跑了一遍,下圖是跑代碼前:
下圖是跑代碼后或悲,遇到了一個(gè)小問(wèn)題孙咪,下面這張截圖已經(jīng)是在 Mac 上了。你仔細(xì)觀察可以發(fā)現(xiàn)截圖里的復(fù)制窗口前面的圖標(biāo)損壞了巡语,這是因?yàn)楫?dāng)我在虛擬機(jī)中運(yùn)行此破壞代碼時(shí)翎蹈,Parallel Desktop 實(shí)際并沒(méi)有將 fedora 系統(tǒng)獨(dú)立于沙盒中。
半分鐘后我發(fā)現(xiàn)了這個(gè)問(wèn)題但為時(shí)已晚男公,這個(gè)小實(shí)驗(yàn)直接破壞了我正在使用的 Mac 系統(tǒng)并造成超過(guò) 100 GB 文件丟失荤堪,許多系統(tǒng)軟件已無(wú)法正常運(yùn)行,萬(wàn)幸訪達(dá)等核心功能還可以正常工作枢赔。為了修復(fù)這個(gè)錯(cuò)誤澄阳,我不得不評(píng)估損失,備份文件以及重裝系統(tǒng)踏拜。
至于什么是沙盒碎赢,什么是虛擬機(jī)??簡(jiǎn)單來(lái)說(shuō),虛擬機(jī)可以在在工作電腦中模擬一個(gè)獨(dú)立運(yùn)行環(huán)境速梗,使用它肮塞,可以允許你在一個(gè)系統(tǒng)的同時(shí)運(yùn)行另一個(gè)系統(tǒng)襟齿。沙盒是一種保護(hù)機(jī)制,保證了當(dāng)前在虛擬機(jī)中運(yùn)行的任何內(nèi)容不會(huì)影響工作機(jī)本身峦嗤。
這個(gè)在虛擬機(jī) Fedora 中運(yùn)行的破壞代碼的實(shí)驗(yàn)本來(lái)不應(yīng)該破壞我正常使用的 Mac 系統(tǒng)蕊唐,最終導(dǎo)致 Mac 被破壞時(shí)由于 Parallel Desktop 這個(gè)軟件默認(rèn)虛擬機(jī)不開(kāi)啟沙盒模式導(dǎo)致的慘劇屋摔。
7.觸控欄更改顏色
若你想要完全自定義終端烁设,可以在「終端 - 偏好設(shè)置 - 描述文件」中進(jìn)行更改。