現(xiàn)在劣欢,我們準(zhǔn)備好做些實際工作了,本章將介紹如下命令:
- cp:復(fù)制文件和目錄年鸳。
- mv:移動或重命名文件和目錄。
- mkdir:創(chuàng)建目錄搔确。
- rm:移除文件和目錄。
- in:創(chuàng)建硬鏈接和符號鏈接膳算。
這 5 個命令屬于最常使用的Linux命令之列,可用來操作文件與目錄涕蜂。
為何要使用這些命令行程序?
原因就在于命令行程序具有更強(qiáng)大的功能和靈活的操作机隙。
雖然使用圖形文件管理器能輕松實現(xiàn)簡單的文件操作萨西,但是對于復(fù)雜的任務(wù)有鹿,使用命令行程序更容易完成谎脯。
例如:怎樣僅因為文件在目標(biāo)目錄中不存在或存在舊的版本,就將所有HTML文件從一個目錄復(fù)制到目標(biāo)目錄里呢源梭?使用文件管理器完成很困難,而用命令行則很容易废麻。
一、通配符
一個使命令行如此強(qiáng)大的 shell 特性 —— 通配符烛愧。
由于 shell 需要經(jīng)常使用文件名,因此它提供了一些特殊字符來幫助我們快速指定一組文件名屑彻,這些特殊字符稱為通配符。
通配符(也叫文件名轉(zhuǎn)換)允許用戶依據(jù)字符模式選擇文件名社牲。
1.通配符
通配符 | 匹配項 |
---|---|
* | 匹配任意多個字符(包括 0 個和 1 個) |
? | 匹配任一單個字符(不包括 0 個) |
[characters] | 匹配任意一個屬于字符集中的字符 |
[!characters] | 匹配任意一個不屬于字符集中的字符 |
[[:class:]] | 匹配任意一個屬于指定字符類中的字符 |
2.最常用的字符類
字符類 | 匹配項 |
---|---|
[:alnum:] | 匹配任意一個字母或數(shù)字 |
[:alpha:] | 匹配任意一個字母 |
[:digit:] | 匹配任意一個數(shù)字 |
[:lower:] | 匹配任意一個小寫字母 |
[:upper:] | 匹配任意一個大寫字母 |
通配符的使用使得為文件名構(gòu)建復(fù)雜的篩選標(biāo)準(zhǔn)成為可能。
3.示例
模式 | 匹配項 |
---|---|
* | 所有文件 |
g* | 以g開頭的任一文件 |
b*.txt | 以b開頭违寿,中間有任意多個字符,并以 .txt 結(jié)尾的任一文件 |
Data??? | 以Data開頭藤巢,后面跟 3 個字符的任一文件 |
[abc]* | 以 abc 中的任一個開頭的任一文件 |
BACKUP.[0-9] [0-9] [0-9] | 以BACKUP.開頭,后面緊跟 3 個數(shù)字的任一文件 |
[[:upper:]]* | 以大寫字母開頭的任一文件 |
[![:digit:]]* | 不以數(shù)字開頭的任一文件 |
*[[:lower:]123] | 以小寫字母 或 數(shù)字 1掂咒、2、3 中的任一個結(jié)尾的任一文件 |
通配符可以與任一個使用文件名為參數(shù)的命令一起使用绍刮。
4.字符范圍
可能遇到 [A-Z] 或 [a-z]形式的字符范圍表示法。這些都是傳統(tǒng)的 UNIX 表示法孩革,在早期的 Linux 版本中仍然奏效。
盡管它們?nèi)匀黄鹱饔孟ヲ冢褂脮r請務(wù)必小心,因為一旦配置不當(dāng)非剃,就會產(chǎn)生非預(yù)期的結(jié)果。目前要避免使用它們努潘,而是使用字符類。
二、mkdir-創(chuàng)建目錄
mkdir 命令是用來創(chuàng)建目錄的报慕。
1.格式
mkdir directory...
若參數(shù)后面帶有 3 個點號(如上),表示該參數(shù)可以重復(fù)眠冈。
(1)創(chuàng)建單個目錄
mkdir dir1
# 創(chuàng)建單個目錄,命名為 dir1
(2)創(chuàng)建多個目錄
mkdir dir1 dir2 dir3
# 創(chuàng)建 3 個目錄蜗顽,分別命名為 dir1、dir2雇盖、dir3
三、cp-復(fù)制文件和目錄
cp 命令用來復(fù)制文件和目錄崔挖。它有 2 種不同的使用方式:
1.格式
(1)單個復(fù)制
cp item1 item2
將單個文件或目錄 item1 復(fù)制到文件或目錄 item2 中庵寞。
(2)多個復(fù)制
cp item... directory
將多個文件(或目錄)復(fù)制進(jìn)一個目錄中(若是文件復(fù)制進(jìn)另一個目錄薛匪,directory 必須已經(jīng)存在)。
2.cp 常用的選項
短選項 和 等價的長選項逸尖。
選項 | 含義 |
---|---|
-a,--archive | 復(fù)制文件和目錄及其屬性娇跟,包括所有權(quán)和權(quán)限。通常來說逞频,復(fù)制的文件具有用戶所操作文件的默認(rèn)屬性。 |
-i苗胀,--interactive | 在覆蓋一個已存在的文件前,提示用戶進(jìn)行確認(rèn)基协。如果沒有指定該選項,cp會默認(rèn)覆蓋文件澜驮。 |
-r,--recursive | 遞歸地復(fù)制目錄及其內(nèi)容杂穷。復(fù)制目錄時需要這個選項(或 -a 選項) |
-u,--update | 當(dāng)將文件從一個目錄復(fù)制到另一個目錄時耐量,只會復(fù)制那些目標(biāo)目錄中不存在的文件或是目標(biāo)目錄相應(yīng)文件的更新文件。 |
-v趴拧,--verbose | 復(fù)制文件時,顯示信息性消息著榴。 |
-f | 強(qiáng)行復(fù)制文件或目錄, 不論目的文件或目錄是否已經(jīng)存在脑又,若目標(biāo)文件已存在,則會直接覆蓋原文件挂谍。 |
3.cp命令示例
命令 | 結(jié)果 |
---|---|
cp file1 file2 | 將 file1 復(fù)制到 file2 叔壤。如果 file2 存在口叙,則會被 file1 的內(nèi)容覆蓋。如果 file2 不存在妄田,則創(chuàng)建 file2 。 |
cp -i file1 file2 | 同上疟呐,區(qū)別在于:在覆蓋一個已存在的文件前,會提示用戶進(jìn)行確認(rèn)启具。 |
cp file1 file2 dir1 | 將 file1 、file2 復(fù)制到目錄 dir1 里鲁冯。dir1 必須已經(jīng)存在。 |
cp dir1/* dir2 | 通過使用通配符薯演,將 dir1 中的所有文件復(fù)制到 dir2 中。dir2 必須已經(jīng)存在跨扮。 |
cp -r dir1 dir2 | 將 dir1 目錄(及其內(nèi)容)復(fù)制到 dir2 目錄中。如果 dir2 不存在帝嗡,創(chuàng)建 dir2 ,且包含與 dir1 目錄相同的內(nèi)容丈探。 |
四、mv-移動和重命名文件
mv 命令可以執(zhí)行文件移動和文件重命名操作,具體取決于如何使用它隘竭。
這 2 種情況下,完成操作之后动看,原來的文件名將不存在。
mv 命令的使用方法與 cp 基本相似菱皆。
1.格式
(1)單個移動(或重命名)
mv item1 item2
將文件(或目錄 )item1 移動(或重命名)為 item2挨稿。
(2)多個移動(或重命名)
mv item... directory
將一個或多個條目從一個目錄移動到另一個目錄下京痢。
2.mv 選項
mv 命令很多選項與 cp 命令是共享的奶甘。
選項 | 含義 |
---|---|
-i祭椰,--interactive | 在覆蓋一個已存在的文件前,提示用戶進(jìn)行確認(rèn)方淤。如果沒有指定該選項,mv 會默認(rèn)覆蓋文件携茂。 |
-u,--update | 將文件從一個目錄移動到另一個目錄讳苦,只移動那些目標(biāo)目錄中不存在的文件或是目標(biāo)目錄里相應(yīng)文件的更新文件。 |
-v医吊,--verbose | 移動文件時顯示信息性消息。 |
3.示例
命令 | 結(jié)果 |
---|---|
mv file1 file2 | 將 file1 移動到 file2卿堂。如果 file2 存在,則會被 file1 的內(nèi)容覆蓋 |
mv -i file1 file2 | 同上览绿,僅當(dāng) file2 存在時,覆蓋之前通知用戶確認(rèn)饿敲。 |
mv file1 file2 dir1 | 將 file1、file2 移動到目錄 dir1 下怀各。dir1必須已經(jīng)存在。 |
mv dir1 dir2 | 將目錄 dir1(及其內(nèi)容) 移動到目錄 dir2 下瓢对。如果 dir2 不存在,則創(chuàng)建目錄 dir2 硕蛹,將目錄 dir1 的內(nèi)容移動到 dir2 下,同時刪除目錄 dir1 法焰。 |
五、rm-刪除文件和目錄
rm 命令用來刪除文件和目錄埃仪。
1.格式
rm item...
其中,item是一個或多個文件(或目錄)的名稱贵试。
2.rm 選項
選項 | 含義 |
---|---|
-i,--interactive | 刪除一個已存在的文件前毙玻,提示用戶確認(rèn)。如果沒有這個選項桑滩,rm 命令會默認(rèn)刪除文件。 |
-r运准,--recursive | 遞歸地刪除目錄。也就是說胁澳,如果刪除的目錄有子目錄的話,也要將其刪除韭畸。要刪除一個目錄,則必須指定該選項胰丁。 |
-f,--force | 忽略不存在的文件并無需提示確認(rèn)锦庸。該選項會覆蓋 --interactive 選項。 |
-v甘萧,--verbose | 刪除文件時顯示信息性消息。 |
3.示例
命令 | 結(jié)果 |
---|---|
rm file1 | 在不提示用戶的情況下酿愧,刪除 file1。 |
rm -i file1 | 刪除 file1 前,提示用戶確認(rèn)。 |
rm -r file1 dir1 | 刪除 file1汇恤、dir1 以及它們的內(nèi)容。 |
rm -rf file1 dir1 | 同上基括,當(dāng) file1 或 dir1 不存在時,rm 仍會繼續(xù)執(zhí)行风皿,且不提示用戶。 |
4.小心 rm 命令
Linux 并不包含還原刪除操作的命令桐款。一旦使用 rm 命令,就徹底地刪除了魔眨。Linux 系統(tǒng)默認(rèn)用戶是明智的,并清楚自己在干什么遏暴。
六、ln-創(chuàng)建鏈接
ln 命令可用來創(chuàng)建硬鏈接 或是 符號鏈接朋凉。它的使用方式有兩種:
1.格式
(1)創(chuàng)建硬鏈接
ln file link
用來創(chuàng)建硬鏈接醋安。
(2)創(chuàng)建符號鏈接
ln -s item link
用來創(chuàng)建符號鏈接杂彭,這里的item可以是文件也可以是目錄茬故。
2.硬鏈接
? 硬鏈接是最初 UNIX 用來創(chuàng)建鏈接的方式,符號鏈接較之更為先進(jìn)磺芭。
? 默認(rèn)情況下,每個文件有一個硬鏈接钾腺,該硬鏈接會給文件起名字。當(dāng)創(chuàng)建一個硬鏈接的時候放棒,也為這個文件創(chuàng)建了一個額外的目錄條目。
? 硬鏈接 和 文件本身沒有什么區(qū)別间螟。與包含符號鏈接的目錄列表不同损肛,包含硬鏈接的目錄列表沒有特別的鏈接指示說明荣瑟。當(dāng)硬鏈接被刪除時治拿,只是刪除了這個鏈接,但是文件本身的內(nèi)容依然存在(也就是粟焊,該空間沒有釋放),除非該文件的所有鏈接都被刪除了项棠。
? 因為會經(jīng)常遇到它們,了解硬鏈接就顯得特別重要合瓢。但是現(xiàn)在大多使用的是符號鏈接。
(1)兩條重要的局限性
① 硬鏈接不能引用自身文件系統(tǒng)以外的文件晴楔。(也就是,鏈接不能引用與該鏈接不在同一磁盤分區(qū)的文件税弃。)
② 硬鏈接無法引用目錄。
3.符號鏈接
? 符號鏈接是為了克服硬鏈接的局限性而創(chuàng)建的则果。
? 符號鏈接是通過創(chuàng)建一個特殊類型的文件來起作用的,該文件包含了指向引用文件或目錄的文本指針西壮。從這點上看叫惊,符號鏈接與 Windows 系統(tǒng)下的快捷方式非常相似款青,但是霍狰,符號鏈接要早于 Windows 的快捷方式很多年饰及。
? 符號鏈接指向的文件與符號鏈接自身幾乎沒有區(qū)別。例如:將一些東西寫進(jìn)符號鏈接里旋炒,那么這些東西同樣也寫進(jìn)了引用文件签杈。而當(dāng)刪除一個符號鏈接時,刪除的只是符號鏈接而沒有刪除文件本身答姥。如果先于符號鏈接之前刪除文件,那么這個鏈接依然存在鹦付,但卻不指向任何文件。此時敲长,這個鏈接就稱為壞鏈接。在很多實現(xiàn)中祈噪,ls 命令會用不同的顏色來顯示壞鏈接,比如紅色辑鲤,從而顯示它們的存在杠茬。