macOS 終端(Terminal) 命令行 教程

一、為什么要使用命令行秩命?

  • 許多功能在圖形界面不提供军俊,只有通過命令行來實(shí)現(xiàn)侥加。
  • Finder 會隱藏許多你不太會需要的文件,而 Command line 則可以訪問所有文件粪躬。
  • Command line 可以通過 SSH 遠(yuǎn)程訪問你的 Mac 或者 Linux担败。
  • 普通用戶可以通過 sudo 命令獲得 root 用戶權(quán)限昔穴。
  • 如果你開啟手動(dòng)輸入用戶名登陸模式,登陸時(shí)在用戶名處輸入 >console 可以直接進(jìn)入命令行界面提前。隨后你仍然需要登錄到一個(gè)賬戶吗货。

二、初識Command Line

  • 許多命令會花費(fèi)一些時(shí)間來執(zhí)行狈网,然而這中間不會給出任何提示或者進(jìn)度條宙搬。一般結(jié)束后會出現(xiàn)一個(gè)用戶名$的標(biāo)記。如果沒有出現(xiàn)拓哺,那么說明最后一條命令正在執(zhí)行勇垛。
  • 一條命令包括 Command Name、Options拓售、Arguments、Extras 四個(gè)部分镶奉,后三個(gè)部分是可選的础淤。
    Options 部分用 - 作為前導(dǎo)符。許多命令的 Options 部分只包含單個(gè)字母哨苛,這時(shí)可以合并鸽凶。例如,ls -lAls -l -A 是等效的建峭。
    Arguments 部分用來細(xì)化這個(gè)命令或指定這個(gè)命令具體的實(shí)施對象玻侥,
    Extras 部分則用來進(jìn)一步實(shí)現(xiàn)其他功能。
  • 例如:下列命令包含前三個(gè)部分亿蒸,用于強(qiáng)行刪除 Junk.app 這個(gè)程序凑兰。
    $ rm -R /Applications/Junk.app
  • 如果你輸入了錯(cuò)誤的命令,系統(tǒng)會返回一些錯(cuò)誤信息边锁。但是系統(tǒng)卻不會阻止你做任何事(例如刪除整個(gè)用戶文件夾)姑食。

三、 關(guān)于 man 命令

雖然有上千條命令茅坛,每條命令還有許多可選參數(shù)和具體的使用方式音半,但是你卻不需要記住這些命令。你只需要記住一個(gè):man贡蓖。

man 其實(shí)就是一個(gè)命令使用指南曹鸠,在命令行中輸入 man command-name 即可獲取。例如斥铺,你想知道 ls 這個(gè)命令怎么使用彻桃,輸入 man ls 即可進(jìn)入使用指南頁面。

使用指南往往很長晾蜘,所以你可以使用▲(上箭頭)或▼(下箭頭)來上下移動(dòng)叛薯,使用空格來翻頁浑吟,輸入 / 和關(guān)鍵字來按照關(guān)鍵字搜索,按 Q 來退出使用指南頁面耗溜。

輸入 man -k 和關(guān)鍵字來對整個(gè)使用指南數(shù)據(jù)庫進(jìn)行搜索组力。

四、 命令行抖拴,文件和路徑

如果知道如何使用命令是掌握 Command line 的第一步燎字,那么第二步就是學(xué)習(xí)如何在 Command line 中使用文件路徑。這比使用 Finder 更加快捷阿宅。

注意:Command line 工具是大小寫敏感的候衍,并且對于文件名,必須包括擴(kuò)展名洒放。例如蛉鹿,你想找 iTunes 這個(gè)程序,輸入 itunes 是無效的往湿,必須輸入 iTunes.app妖异。

兩種路徑:絕對路徑 和 相對路徑

  • 絕對路徑:完整描述一個(gè)文件的位置,總是以斜杠 / 開頭领追。例如 /Users/michelle/Public/Drop Box他膳。
  • 相對路徑:是指相對于當(dāng)前的目錄,可以通過 pwd 查看當(dāng)前目錄绒窑。當(dāng)新打開 Terminal 時(shí)棕孙,Command line 默認(rèn)是 home folder 目錄。這時(shí)上面例子文件夾的相對路徑寫作 Public/Drop Box些膨。顯然它從當(dāng)前目錄開始蟀俊。和 HTML 類似,你也可以使用兩個(gè)點(diǎn) .. 來代表父目錄订雾,這樣就可以用相對路徑表示上級或同級目錄了欧漱。例如輸入 cd ..,或者 cd ../..

切換到其他路徑和目錄

如果你想將當(dāng)前 command line 會話切換到其他目錄葬燎,需要用到三個(gè)命令:pwd误甚、lscd

  • pwd 的含義是 “print working directory”谱净,會顯示當(dāng)前目錄的絕對路徑窑邦。
  • ls 的含義是 “l(fā)ist directory contents”,它會列出當(dāng)前目錄的內(nèi)容壕探。
  • cd 的含義是 “change directory”冈钦,它會改變當(dāng)前目錄到指定的目錄。如果不指定李请,則會返回 home folder瞧筛。

處理特殊字符
如果目錄中有特殊字符(空格厉熟,括號,引號较幌,[]揍瑟,!$乍炉,&绢片,*;岛琼,|底循,\),那么直接輸入空格會造成系統(tǒng)識別困難槐瑞,必須使用特殊的語法來表示這些字符熙涤。例如上例中,空格前添加反斜杠 \ 即可:cd Punlic/Drop\ Box/困檩。除了反斜杠祠挫,也可以用引號的方法:cd "Public/Drop Box"

也可以把文件從 Finder 拖到 Terminal 窗口來創(chuàng)建絕對路徑窗看,這會方便一些茸歧,因?yàn)樯厦嫣岬降乃刑厥庾址谕蟿?dòng)后都會自動(dòng)變成系統(tǒng)可識別的表示方法倦炒。

Tab Complete 是 Command line 中最能給你節(jié)省時(shí)間的特性之一显沈,利用它的自動(dòng)完成文件、目錄名稱功能還可以防止輸入錯(cuò)誤逢唤。使用 cd 進(jìn)入你的 home folder拉讯,使用 cd P 命令,然后按下tab按鍵鳖藕∧Э叮可能會聽到錯(cuò)誤音,因?yàn)槟愕?home folder 內(nèi)有多個(gè) P 開頭的文件夾著恩。再按一次 tab院尔,Terminal 將會為你列出 P 開頭的兩個(gè)文件夾:Public 和 Pictures。按 U喉誊,再按 tab邀摆,Terminal 則會自動(dòng)為你補(bǔ)全 Public/。Tab complete 同樣會處理那些特殊字符伍茄。注意栋盹,這會在末尾保留 / 符號,大部分時(shí)候這沒問題敷矫,但如果出錯(cuò)例获,移除多余的 / 試一試汉额。

另外,~ 在command line 中可以代表當(dāng)前用戶的 home folder榨汤。例如 ~/Public/Drop\ Box/ 是合法的蠕搜。

查看隱藏文件
為了簡化工作,Command line 和 Finder 都會隱藏許多文件和文件夾件余。如果想查看隱藏文件讥脐,這在 Command line 中非常簡單。首先啼器,許多隱藏文件的隱藏是通過隱藏屬性在 Finder 中隱藏的旬渠,而 Command line 會忽略這些屬性,所以這些文件會在 Command line 中顯示端壳。另外告丢,ls 命令會隱藏文件名以 . 開頭的文件,但是這些文件卻可以被顯示出來损谦,方法是利用 -a 選項(xiàng)岖免。例如:$ ls -la,這里添加了 -l 選項(xiàng)照捡,目的是控制輸出格式颅湘。如果你注意輸出內(nèi)容的話,會發(fā)現(xiàn)還包括 ... 兩項(xiàng)栗精,它們分別表示當(dāng)前文件夾和父文件夾(如圖)闯参。如果你不想顯示這兩項(xiàng),只需要把 -a 改成 -A 即可悲立。

Terminal ls -la命令

前往其他卷
在 Command line 中鹿寨,系統(tǒng)卷(root volume)是由開始的一個(gè)正斜杠表示的。在 Command line 中其他卷看起來就在文件系統(tǒng)中一個(gè)叫做 Volumes 的文件夾中薪夕。下面的命令清晰地顯示出這種邏輯關(guān)系:從 home folder 出發(fā)脚草,最終前往一個(gè)叫 Macintosh HD 的卷

Macintosh HD 卷

五、用Command-Line管理文件

檢視文件
有許多基礎(chǔ)命令用來定位原献、檢視文件和文件夾馏慨,包括 cat, less, which, file 以及 find。別忘了可以利用 man 命令來查閱每個(gè)命令的使用指南姑隅。

cat
cat 是 “concatenate” 的意思写隶,會按順序讀取文件并輸出到 Terminal 窗口,語法為 cat 后接你需要查看的文件的路徑粤策。cat 命令也可以用 >> 來增加文本文件的內(nèi)容樟澜,例如命令 cat textOne.txt >> textTwo.txt,會把 textOne.txt 的內(nèi)容添加到 textTwo.txt 的結(jié)尾。這個(gè) >> 就屬于之前提到的“Extras”秩贰。

less
這個(gè)命令更適合用來查看長文本文件霹俺,因?yàn)樗梢圆檎椅谋尽UZ法為 less 后接文件路徑毒费,和 cat 一樣丙唧。用 less 命令打開的文件其實(shí)和你查看命令使用指南的時(shí)候使用的是一個(gè)查看器,所以操作是相同的觅玻,同樣可以使用▲(上箭頭)或▼(下箭頭)來上下移動(dòng)文本想际,使用 空格 來翻頁,輸入 / 和關(guān)鍵字來按照關(guān)鍵字搜索溪厘,按 Q 來退出使用指南頁面胡本。除此之外,按 V 鍵來使用 vi 文本編輯器畸悬。

which
這個(gè)命令會定位某個(gè)命令的文件路徑侧甫。它會告訴你你執(zhí)行某個(gè)具體命令的時(shí)候,在使用哪個(gè)文件蹋宦。語法為 which 后接某個(gè)命令披粟。如圖:

終端 which 命令

file
這個(gè)命令會嘗試根據(jù)文件的內(nèi)容輸出文件類型。如果一個(gè)文件缺失了擴(kuò)展名冷冗,那么這個(gè)命令可能會非常有用守屉。語法為 file 后接文件路徑。如圖蒿辙,此例為一個(gè) PNG 文件拇泛,還給出了它的尺寸、顏色數(shù)等信息须板。

終端 file命令

find
這個(gè)命令用來根據(jù)搜索關(guān)鍵詞定位文件路徑碰镜。 find 命令不使用 Spotlight 搜索服務(wù)兢卵,但是它允許你設(shè)置非常具體的搜索條件习瑰,以及通配符(稍后介紹)。語法為 find 后接搜索的起始路徑秽荤,后接定義搜索的選項(xiàng)甜奄,后接搜索內(nèi)容(包含在引號里)。例如:find Desktop -name "*.png"窃款,意思是查詢桌面上以 png 結(jié)尾的文件课兄。

注意
如果你要搜索根目錄,使用 -x 選項(xiàng)來避免搜索 /Volumes 文件夾晨继。
如果想使用 Soptlight 搜索服務(wù)烟阐,使用 mdfind 命令后接搜索關(guān)鍵詞即可。

使用通配符(Wildcard Characters)

  • 星號(*,Asterisk)——代表任何長度的任何字符蜒茄。例如 *.tiff 代表所有格式為tiff的文件唉擂。
  • 問號(?,Question mark)——代表任何單個(gè)字符檀葛。例如 b?ok 匹配 book 但是不匹配 brook玩祟。
  • 方括號([],Square brackets)——定義一定范圍的字符屿聋,例如 [Dd]ocument 匹配 Document 以及 document空扎;doc[1-9] 匹配doc1, doc2, …, doc9。

使用遞歸命令
簡單來說润讥,遞歸命令可以允許命令不執(zhí)行于一個(gè)特定文件转锈,而是指定的路徑下的所有文件。大多數(shù)命令包含一個(gè) -r 或者 -R 選項(xiàng)楚殿,來設(shè)定你想遞歸地執(zhí)行這個(gè)命令黑忱。例如下面的例子,添加 -Rls 命令的執(zhí)行方式:ls -R Public勒魔,這會列出 Public 中的所有文件甫煞,若有文件夾,則會繼續(xù)列出文件夾中的內(nèi)容冠绢。

編輯文件和文件夾
有許多基礎(chǔ)的命令用來編輯文件和文件夾抚吠,包括 mkdir, cp, mv, rm, rmdir 以及 vi。下面我們來簡要地介紹一下這些命令弟胀。

mkdir
“make diretory” 的縮寫楷力,用來創(chuàng)建文件夾,語法為 mkdir 后接新文件夾的目錄孵户∠舫可以用 -p 選項(xiàng),來一起創(chuàng)建路徑中不存在的文件夾夏哭。

cp
“copy” 的縮寫检柬,用來把文件從一處復(fù)制到另一處。語法為 cp 后接原始路徑竖配,再接目標(biāo)路徑何址。如果你想復(fù)制整個(gè)文件夾和所有內(nèi)容,需要添加 -R 選項(xiàng)进胯。如果指定的目標(biāo)路徑不含文件名用爪,則 cp 命令會按原名復(fù)制。如果指定的目標(biāo)路徑包括文件名胁镐,則會復(fù)制為你指定的文件名偎血。如果僅指定新文件名诸衔,則會在原處以新名稱創(chuàng)建文件副本。注意颇玷,系統(tǒng)會自動(dòng)替換同名文件而不出現(xiàn)提示署隘。

mv
“move”的縮寫,用來移動(dòng)文件亚隙。語法為 mv 后接原路徑磁餐,再接新路徑。mv 的指定路徑規(guī)則與 cp 是一樣的(如果僅指定新文件名阿弃,它就成了重命名命令)诊霹。

rm
“remove” 的縮寫,會永久刪除文件渣淳。注意脾还,Command-line 中沒有廢紙簍。語法為 rm 后接文件路徑入愧。如果希望安全刪除文件叉谜,可以使用 srm 命令拗窃。rmdirrm -R rmdir是 “remove directory” 的縮寫她奥,這個(gè)命令會永久刪除文件夾敷硅。語法為 rmdir 后接希望刪除目錄的路徑。然而旁赊,rmdir 命令無法刪除含有任何其他文件的文件夾桦踊,所以大多數(shù)情形下 rmdir 命令是不適用的。不過终畅,你可以利用 rm 添加 -R 選項(xiàng)來刪除文件夾及包含的所有文件籍胯。

vi
代表 “visual”(視覺的)。vi 是 Command line 中最常見的文本編輯器离福。用 vi 打開文本文件杖狼,只需要輸入 vi 后接文件路徑即可。macOS X 還提供了 nano妖爷,一個(gè)更加現(xiàn)代的文本編輯器蝶涩。然而 vi 是默認(rèn)的文本編輯器,所以掌握 vi 是很有用的赠涮。和 less 命令類似子寓,vi 命令會占用整個(gè) Terminal 空間來顯示文件內(nèi)容暗挑。打開后笋除,會處于 “command模式”,vi 會等你輸入一些預(yù)定義字符來告訴 vi 你想做什么炸裆±可以使用鍵盤上的箭頭鍵單純地瀏覽文件,想編輯時(shí),按 A 或者 I 開始(進(jìn)入編輯模式)国拇。文字會插入到光標(biāo)處洛史。如果你想保存,需要先退出編輯模式酱吝,進(jìn)入 command 模式也殖,方法是按下 esc 鍵∥袢龋回到 command 模式后忆嗜,按住 shift 同時(shí)按兩次 Z 來保存并退出。如果你不想保存崎岂,在 command 模式輸入 :quit! 并按 return 直接退出捆毫。

六、用Command-Line管理系統(tǒng)

使用su來切換用戶
su
命令代表 “substitute user identity”冲甘,允許你在命令行中切換到另一個(gè)用戶賬戶绩卤。語法為 su 后接用戶的短名稱。然后會要求你輸入密碼(但是輸入的時(shí)候不會顯示)江醇。執(zhí)行完畢后濒憋,命令的前綴會改變,表示你擁有其他用戶的權(quán)利陶夜。你可以利用 who -m 命令來驗(yàn)證當(dāng)前登陸的身份跋炕。切換后,你會一直保持該用戶身份律适,直至退出 Terminal 或者輸入 exit 命令辐烂。

關(guān)于sudo的使用

  • sudo概述
    更強(qiáng)大的命令就是 sudo,代表 “substitute user do”捂贿,或者纠修,更恰當(dāng)?shù)兀皊uper user do”厂僧。用 sudo 執(zhí)行一個(gè)命令會使用 root 賬戶權(quán)限扣草。當(dāng)然,使用之前需要 administrator 賬戶(管理員賬戶)的授權(quán)(輸入密碼)颜屠。
    默認(rèn)情況下辰妙,任何管理員賬戶都可以使用 sudo 來獲取 root 權(quán)限,甚至當(dāng) root 賬戶在圖形界面被禁用的情況下甫窟,sudo 依然有效密浑。這個(gè)命令是很多情況下我們不得不使用 Terminal 的原因,同樣也是給每個(gè)用戶管理員身份的危險(xiǎn)所在粗井。不過尔破,你可以調(diào)整 sudo 的配置文件街图,來限制它的使用。
$ cat secret.txt
cat: secret.txt: Permission denied
$ sudo cat secret.txt
Password:
This is the contents of the secret.txt text file that the user account renfei does not normally have access permissions to read. However, because he is an administrative user, she can use the sudo command to envoke root user access and read the contents of this file.

提示:如果由于你忘了使用 sudo 而導(dǎo)致命令行返回一個(gè)錯(cuò)誤懒构,只需輸入 sudo !! 就可以用 sudo 來執(zhí)行上一條指令餐济。不恰當(dāng)?shù)厥褂?sudo 可以輕易破壞你的系統(tǒng)設(shè)置。命令行只會在第一次執(zhí)行嚴(yán)重破壞性行為之前提示胆剧。

  • 使用 sudo 切換 Shell
    如果你是一個(gè)管理員用戶絮姆,你需要執(zhí)行很多條需要 root 權(quán)限的命令,你可以臨時(shí)切換整個(gè)命令行 shell 來取得 root 級別的訪問權(quán)限秩霍。方法就是先輸入 sudo -s滚朵,回車后再鍵入你的密碼。

七前域、其他 Command-Line 技巧提示

  • 輸入命令 open . 可以打開當(dāng)前的位置辕近。
  • 在 Terminal 的偏好里面可以設(shè)定它的外觀和風(fēng)格。
  • 中止一個(gè)正在執(zhí)行的命令匿垄,可以使用組合鍵 control + C移宅。
  • 在執(zhí)行前編輯命令,只需要使用箭頭和鍵盤上的其他字母椿疗。
  • 沒有輸入任何命令時(shí)漏峰,你可以用▲和▼來瀏覽歷史命令。同樣可以編輯和再次執(zhí)行届榄。
  • 你也可以使用history命令查看歷史記錄浅乔。
  • 你可以使用組合鍵 control + L 清屏。

以上內(nèi)容參考《Mac OS X Support Essentials》教程铝条, Command Line 一節(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靖苇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子班缰,更是在濱河造成了極大的恐慌贤壁,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠忘,死亡現(xiàn)場離奇詭異脾拆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)莹妒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門名船,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旨怠,你說我怎么就攤上這事渠驼。” “怎么了运吓?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵渴邦,是天一觀的道長疯趟。 經(jīng)常有香客問我拘哨,道長谋梭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任倦青,我火速辦了婚禮瓮床,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘产镐。我一直安慰自己隘庄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布癣亚。 她就那樣靜靜地躺著丑掺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪述雾。 梳的紋絲不亂的頭發(fā)上街州,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機(jī)與錄音玻孟,去河邊找鬼唆缴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛黍翎,可吹牛的內(nèi)容都是我干的面徽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼匣掸,長吁一口氣:“原來是場噩夢啊……” “哼趟紊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碰酝,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤织阳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砰粹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唧躲,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年碱璃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弄痹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嵌器,死狀恐怖肛真,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爽航,我是刑警寧澤蚓让,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布乾忱,位于F島的核電站,受9級特大地震影響历极,放射性物質(zhì)發(fā)生泄漏窄瘟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一趟卸、第九天 我趴在偏房一處隱蔽的房頂上張望蹄葱。 院中可真熱鬧,春花似錦锄列、人聲如沸图云。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竣况。三九已至,卻和暖如春筒严,著一層夾襖步出監(jiān)牢的瞬間丹泉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工萝风, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘀掸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓规惰,卻偏偏與公主長得像睬塌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子歇万,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容