一、為什么要使用命令行秩命?
- 許多功能在圖形界面不提供军俊,只有通過命令行來實(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 -lA
和ls -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
误甚、ls
和 cd
。
-
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
即可悲立。
前往其他卷
在 Command line 中鹿寨,系統(tǒng)卷(root volume)是由開始的一個(gè)正斜杠表示的。在 Command line 中其他卷看起來就在文件系統(tǒng)中一個(gè)叫做 Volumes 的文件夾中薪夕。下面的命令清晰地顯示出這種邏輯關(guān)系:從 home folder 出發(fā)脚草,最終前往一個(gè)叫 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è)命令披粟。如圖:
file
這個(gè)命令會嘗試根據(jù)文件的內(nèi)容輸出文件類型。如果一個(gè)文件缺失了擴(kuò)展名冷冗,那么這個(gè)命令可能會非常有用守屉。語法為 file
后接文件路徑。如圖蒿辙,此例為一個(gè) PNG 文件拇泛,還給出了它的尺寸、顏色數(shù)等信息须板。
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è)命令黑忱。例如下面的例子,添加 -R
后 ls
命令的執(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
命令拗窃。rmdir
和 rm -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é)