Terminal 終端的簡單入門

1.什么是終端?

要說清終端是什么,我們先來看看操作系統的組成。簡化來說,操作系統分為兩個部分,一部分稱作內核,另一部分成為用戶交互界面。內核部分負責系統的全部邏輯操作,由海量命令組成,這一部分是系統運行的命脈,不與用戶接觸;交互界面則是開機之后所有我們所看到的東西,比如窗口,軟件,應用程序等等。

那么我們若我們想對系統內核的某些操作邏輯做出一些修改,應該怎么辦呢?終端就是連接內核與交互界面的這座橋,它允許用戶在交互界面上打開一個叫做「Terminal 終端」的應用程序,在其中輸入命令,系統會直接給出反饋。

因為終端這座橋,實際允許用戶間接控制系統內核,也就是系統的大腦,因此它理論上具備控制一切的權利。

2.如何打開終端?

終端是系統中一個應用程序,你可以直接在所有程序中找到它,點擊打開就行。或者使用聚焦搜索,輸入「終端」或「Terminal」,看到終端被選中了按下回車即可。

3.基礎指令

簡單來說,首先打開終端,在里面輸入 say hello 命令.系統就會說出hello.

命令由三個部分組成,第一個部分是命令對象,在?say hi?這個命令中,「say」 是我們的命令對象,我們希望電腦說話;第二個部分是修飾命令對象的關鍵詞,可有可無,若我希望電腦說話時慢一點,可以輸入?say -r 500 hi,這里的 「-r 500」 則是修飾說話語速的關鍵詞;第三部分是命令內容,這里填寫希望電腦說的內容是「hi」這句話。

3.1?對文件,文件夾的操作


當你需要使用終端對文件夾進行操作時,終端需要你告訴它,你想要修改的文件在哪里,這時我們需要了解路徑的概念。系統中的每一個文件都有一個存放位置,這一存放位置就稱作路徑。

終端啟動后,它的默認路徑在當前用戶文件夾的根目錄上,為了確定這一點,你可以輸入?pwd?命令來查看當前路徑。在下圖中,輸入命令后,終端告訴我當前路徑是?/Users/我的名字。

路徑的一般寫法為?/文件夾名/文件夾名,但路徑其實分為兩種。一種叫相對路徑,另一種叫絕對路徑,它們兩有什么區別呢?

我們從當前路徑說起,當前路徑指的是現在終端所處的位置,若你想改變當前路徑,則可以輸入?cd /其他文件夾。比如我希望系統將當前路徑改為所有應用程序文件夾,則輸入?cd /Applications,在下圖中可以看到,Legolas 前出現了一個 Applications,表示當前路徑已經在應用程序文件夾中。

剛剛提到的路徑的一般寫法 「/文件夾名/文件夾名」,它指的其實就是絕對路徑,你必須指定它從根目錄一直到達具體的文件夾。

與其相對的是相對路徑,相對路徑允許你告訴終端從現在開始,接下來應該怎么走。相對路徑的書寫方法實在絕對路徑前加一個?.。

若你現在已經處在應用程序文件夾中,想前往其中的一個名叫 Utilities 的子文件夾應該怎么辦?

下圖中,當前位置的絕對路徑是?/Applications/Utilities,但由于我已經處于?/Applications文件夾中,因此可以使用相對路徑的寫法?cd ./Utilities,表示將當前路徑轉到 Utilities 文件夾。

快速導入路徑:直接將待編輯文件或文件夾拖入終端中即可,它會自動把絕對路徑提取出來,實際情況下常用的也是這種自動提取或手動復制的方法。

當你想要查看當前路徑下有什么文件時,可以使用?ls?命令,它會列舉當前路徑下的全部文件,若你希查看進階設定,比如列舉當前路徑下的全部文件并展開所有子文件夾,可以在?ls?命令后加上?-R?的識別符,新指令就變成了?ls -R,運行結果如下,可以看到我放在資源文件夾中的所有子文件都被顯示出來了。

講到這里,你也許會發現自己的終端已經滿滿當當的了,看著不舒服,這時可以使用?clear指令來清屏,運行結果如下。

常見的還有?cp復制文件;?mv?移動文件;?mkdir?創建目錄;?cat?顯示文件內容等等,詳情請看下面每天一個linux命令.

關聯閱讀:每天一個linux命令

4.常見玩法

關閉崩潰報錯:有時軟件崩潰就已經很讓人煩心了,重新打開后一遍遍彈出的問題報告更是煩不勝煩。這時你可以使用?defaults write com.apple.CrashReporter DialogType none?命令關閉這個問題報告。若你希望恢復其顯示,可以輸入?defaults write com.apple.CrashReporter DialogType crashreport。

修改文件日期:?有時你可能需要修改文件創建或修改日期,這時可以使用?touch -t 199505090000 拖入文件命令。這句命令中的數字表示 1995 年 5 月 9 日 00:00 分,你可以根據實際需要修改。

不要進入休眠狀態:當你臨時不希望電腦進入休眠狀態時,可以使用?caffeinate?命令讓電腦時刻清醒。當你需要其恢復正常時,按下??Control - C?即可停止該命令。

程序假死需要強退:有時候程序假死了,強行退出也沒用,這時可以使用?killall?命令。以微信為例,若想強退它,只需輸入?killall WeChat?即可。

截圖保存為 JPEG:Mac 的默認截圖格式為 PNG,若你想讓默認的截圖保存類型為 JPEG,可以輸入如下指令?defaults write com.apple.screencapture type jpg,結果如下圖所示,以后的截圖都會變成 JPEG 格式。如果你希望撤銷這條指令,輸入?defaults write com.apple.screencapture type png?即可。

關閉截圖自動陰影:?若你使用 Mac 自帶的截圖,會發現每次的窗口截圖均會自動添加陰影,當你需要后期處理這些圖片時,這些陰影可能會對你造成困擾。你可以使用下面這串命令來關閉截圖陰影:

當你希望重新啟動陰影時,可以輸入:

查看下方的截圖,你就會發現它和本文的其他截圖不同,沒有陰影。

顯示隱藏文件夾:在你跟著網絡上的教程進行一些操作時,難免會遇到讓你尋找隱藏文件夾的情況,這時你可以使用:defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder

來顯示所有隱藏文件夾,當你不需要再顯示時,輸入:defaults write com.apple.finder AppleShowAllFiles -bool false; killall Finder

即可恢復隱藏。查看下圖,你會發現所有隱藏文件夾全部顯示出來了。還有一個簡單方法,快捷鍵cmd + shift + . 打開或者關閉隱藏文件夾

顯示隱藏文件夾

整理程序欄:你也許會發現,底部的程序欄越用越亂,有時候內容多的半天找不到所需程序。這時你可以考慮為其加入幾個隱藏的分界符將其歸為幾個區域,輸入:

defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}'; killall Dock

即可添加一個空白分界符,需要幾個重復運行幾遍命令即可。當你不需要這個白分界符了,將它從程序欄拖走即可刪除。

為程序欄加分界符


重置程序欄:當你想要重新整理底部程序欄時,有時候從默認狀態開始整理也許是個好辦法。這是你可以使用?defaults delete com.apple.dock; killall Dock?命令將程序欄恢復為電腦剛剛激活時的狀態。

恢復后的狀態

打印機械感十足的文字:當你想要打出機械感十足的文字時,可以玩玩banner -w 80 legolas.me這句命令,只需要將代碼結尾處的文字替換為你想打印的字即可。

打印文字

5.進階教程

上面講了不少指令,你也許會好奇,這些指令到底修改的是什么?可以修改什么?若我想改別的,應該去哪里找?

默認設置 defaults

上面這些 defaults 開始的指令,實際修改的是系統默認的 Plist 表單,這些表單管理著系統中全部程序的默認設置,上面所做的修改無非是改了某些程序的默認設置罷了。

若你想查看還有哪些可以修改,可以在訪達中按下鍵盤??Option,點擊「前往 - 資源庫」,找到 Perference 文件夾,你會發現所有的 Plist 文件均在這里,你也可以根據便好手動修改。

Perference 文件夾

文件格式轉換 textutil

textutil 是一個系統自帶的,用于處理文稿的命令,其中我最常用的功能是其下屬功能 convert,這句指令允許你將任何文件,在以下文件格式中互相轉換 txt, html, rtf, rtfd, doc, docx, wordml, odt, webarchive。

若你手頭有一篇 DOCX 文件需要被轉換成 TXT,則可以輸入?textutil -convert txt 文件路徑,這句代碼中的 txt 處,可以替換為任何你需要轉換到的文件格式,文件路徑則可以采用拖拽文件到終端的方法自動填充。

textutil -convert

磁盤處理 diskutil

磁盤處理也是常用的命令行操作之一,因為其命令需要根據具體情況具體對待,所以我只簡單介紹其中無風險的兩個,下方列舉的其余操作均會直接處理磁盤內容,請務必清楚你在做什么,然后再輸入命令。

若你的電腦采用的是 APFS 磁盤分區,則應使用?diskutil apfs?開頭的命令;若你的電腦采用的是 HFS,HFS+ 磁盤分區,則應使用?diskutil?開頭的命令;若你的電腦采用的是 coreStorage 磁盤分區,則應使用?diskutil cs開頭的命令。

diskutil list?命令會將你的現有磁盤狀況顯示出來,如下圖所示。

diskutil list

diskutil cs list?命令會將你的現有的 Core Storage 邏輯分區狀況顯示出來,如下圖所示。

diskutil cs list

6.常用但有風險的命令?

以上講的所有指令,都是無害指令,這里的無害指的是不會對系統文件造成破壞,但是還有一些指令,可以瞬間刪掉你的整個系統,若你知道這些指令的用法那也沒問題,但若是不小心根據網上的教程用了從而誤刪了東西就不好了。內核為了確保你知道某些指令的用法,要求你必須在這些有風險的指令前加輸?sudo,這就是所謂的超級管理員指令,它會在你密碼確認后,賦予 sudo 之后的命令最高權限,可以進行任何操作。

比如我需要把電腦上的 Windows 分區徹底刪除時,只需要輸入下面這串代碼,一瞬間整個磁盤分區就會被刪除:sudo diskutil eraseVolume free none diskx

查看分區上限:sudo diskutil resizeVolume /dev/disk1s3 limits

重置空間大小:sudo diskutil resizeVolume /dev/disk1s2 100GB

斷開驅動器:sudo diskutil unmountDisk force /dev/disk1

徹底移除邏輯磁盤: diskutil unmount /Volumes/Macintosh\ HD

顯示 GUID 分區結構: gpt -r show /dev/disk1

刪除 EFI NO NAME:gpt remove -I 4 /dev/disk1

新增存儲區塊:gpt add -I 3 -b 1362424032 -s 1269536 -t 426F6F74-0000-11AA- AA11-00306543ECAC

新增分區:newfs_hfs -J -v “Recovery HD” /dev/disk0s3

物理 Core Storage 擴容: diskutil cs resizeDisk 11111111-2222-3333-4444-555555555555 980g

邏輯 Core Storage 擴容: diskutil cs resizeVolume 11111111-2222-3333-4444-555555555555 980g

文件刪除 rm

這一指令本是?刪除文件?用的,但正因為它可以不分敵我的刪除任何文件,新手誤用有極大風險,因此我不打算詳細介紹這個。網上有一個臭名遠揚的傳言,欺騙別人用?sudo rm -rfv /Cool?來刪除系統文件,從而使整個系統崩潰,這條命令絕對不要嘗試。

我們來用前面學到的知識分析一下為什么這句命令會使得系統崩潰。首先 sudo 表示管理員命令并獲取最高權限,rm?表示刪除文件,用?man rm?命令查看手冊,可以發現 -r 是用來修飾 rm 命令的,表示刪除當前工作路徑下的全部子文件,-f 也是修飾 rm 命令的,表示無視被保護的文件依舊執行刪除。

前文在講默認路徑時提到,打開終端之后默認工作路徑正是當前用戶的根目錄,因此執行?sudo rm -rfv /Cool?后,會從根目錄開始,無視被保護的文件并且刪除當前路徑下的所有文件及子文件夾,包括系統文件,這樣一來系統就廢了。

既然談到了這個代碼的破壞力,我索性用與 Mac 同源的 fedora 系統在虛擬機上跑了一遍,下圖是跑代碼前:

虛擬機 fedora 中運行破壞代碼

下圖是跑代碼后,遇到了一個小問題,下面這張截圖已經是在 Mac 上了。你仔細觀察可以發現截圖里的復制窗口前面的圖標損壞了,這是因為當我在虛擬機中運行此破壞代碼時,Parallel Desktop 實際并沒有將 fedora 系統獨立于沙盒中。

半分鐘后我發現了這個問題但為時已晚,這個小實驗直接破壞了我正在使用的 Mac 系統并造成超過 100 GB 文件丟失,許多系統軟件已無法正常運行,萬幸訪達等核心功能還可以正常工作。為了修復這個錯誤,我不得不評估損失,備份文件以及重裝系統。

直接對 Mac 造成無法挽回的破壞

至于什么是沙盒,什么是虛擬機??簡單來說,虛擬機可以在在工作電腦中模擬一個獨立運行環境,使用它,可以允許你在一個系統的同時運行另一個系統。沙盒是一種保護機制,保證了當前在虛擬機中運行的任何內容不會影響工作機本身。

這個在虛擬機 Fedora 中運行的破壞代碼的實驗本來不應該破壞我正常使用的 Mac 系統,最終導致 Mac 被破壞時由于 Parallel Desktop 這個軟件默認虛擬機不開啟沙盒模式導致的慘劇。


7.觸控欄更改顏色

若你想要完全自定義終端,可以在「終端 - 偏好設置 - 描述文件」中進行更改。

文章參考:https://sspai.com/post/45534

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,218評論 2 33
  • Ubuntu的發音 Ubuntu,源于非洲祖魯人和科薩人的語言,發作 oo-boon-too 的音。了解發音是有意...
    螢火蟲de夢閱讀 99,529評論 9 467
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,881評論 18 139
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,192評論 1 19
  • 白骨精是一個多年成精的妖魔,擅長變化,狡猾又通曉人類的弱點。變化的女子形象眉眼生動而嫵媚多嬌,是個非常著名...
    林以墨閱讀 784評論 0 0