04-操作文件与目录

现在,我们准备好做些实际工作了,本章将介绍如下命令:

  • cp:复制文件和目录。
  • mv:移动或重命名文件和目录。
  • mkdir:创建目录。
  • rm:移除文件和目录。
  • in:创建硬链接和符号链接。

这 5 个命令属于最常使用的Linux命令之列,可用来操作文件与目录。

为何要使用这些命令行程序?

原因就在于命令行程序具有更强大的功能和灵活的操作

虽然使用图形文件管理器能轻松实现简单的文件操作,但是对于复杂的任务,使用命令行程序更容易完成。

例如:怎样仅因为文件在目标目录中不存在或存在旧的版本,就将所有HTML文件从一个目录复制到目标目录里呢?使用文件管理器完成很困难,而用命令行则很容易。

一、通配符

一个使命令行如此强大的 shell 特性 —— 通配符。

由于 shell 需要经常使用文件名,因此它提供了一些特殊字符来帮助我们快速指定一组文件名,这些特殊字符称为通配符

通配符(也叫文件名转换)允许用户依据字符模式选择文件名。

1.通配符

通配符 匹配项
* 匹配任意多个字符(包括 0 个和 1 个)
? 匹配任一单个字符(不包括 0 个)
[characters] 匹配任意一个属于字符集中的字符
[!characters] 匹配任意一个不属于字符集中的字符
[[:class:]] 匹配任意一个属于指定字符类中的字符

2.最常用的字符类

字符类 匹配项
[:alnum:] 匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:digit:] 匹配任意一个数字
[:lower:] 匹配任意一个小写字母
[:upper:] 匹配任意一个大写字母

通配符的使用使得为文件名构建复杂的筛选标准成为可能。

3.示例

模式 匹配项
* 所有文件
g* 以g开头的任一文件
b*.txt 以b开头,中间有任意多个字符,并以 .txt 结尾的任一文件
Data??? 以Data开头,后面跟 3 个字符的任一文件
[abc]* 以 abc 中的任一个开头的任一文件
BACKUP.[0-9] [0-9] [0-9] 以BACKUP.开头,后面紧跟 3 个数字的任一文件
[[:upper:]]* 以大写字母开头的任一文件
[![:digit:]]* 不以数字开头的任一文件
*[[:lower:]123] 以小写字母 或 数字 1、2、3 中的任一个结尾的任一文件

通配符可以与任一个使用文件名为参数的命令一起使用。

4.字符范围

可能遇到 [A-Z] 或 [a-z]形式的字符范围表示法。这些都是传统的 UNIX 表示法,在早期的 Linux 版本中仍然奏效。

尽管它们仍然起作用,但使用时请务必小心,因为一旦配置不当,就会产生非预期的结果。目前要避免使用它们,而是使用字符类。

二、mkdir-创建目录

mkdir 命令是用来创建目录的

1.格式

mkdir directory...

若参数后面带有 3 个点号(如上),表示该参数可以重复

(1)创建单个目录

mkdir dir1

# 创建单个目录,命名为 dir1 

(2)创建多个目录

mkdir dir1 dir2 dir3

# 创建 3 个目录,分别命名为 dir1、dir2、dir3

三、cp-复制文件和目录

cp 命令用来复制文件和目录。它有 2 种不同的使用方式:

1.格式

(1)单个复制

cp item1 item2

将单个文件或目录 item1 复制到文件或目录 item2 中

(2)多个复制

cp item... directory

将多个文件(或目录)复制进一个目录中(若是文件复制进另一个目录,directory 必须已经存在)。

2.cp 常用的选项

短选项 和 等价的长选项。

选项 含义
-a,--archive 复制文件和目录及其属性,包括所有权和权限。通常来说,复制的文件具有用户所操作文件的默认属性。
-i,--interactive 在覆盖一个已存在的文件前,提示用户进行确认。如果没有指定该选项,cp会默认覆盖文件。
-r,--recursive 递归地复制目录及其内容复制目录时需要这个选项(或 -a 选项)
-u,--update 当将文件从一个目录复制到另一个目录时,只会复制那些目标目录中不存在的文件或是目标目录相应文件的更新文件
-v,--verbose 复制文件时,显示信息性消息
-f 强行复制文件或目录, 不论目的文件或目录是否已经存在,若目标文件已存在,则会直接覆盖原文件。

3.cp命令示例

命令 结果
cp file1 file2 将 file1 复制到 file2 。如果 file2 存在,则会被 file1 的内容覆盖。如果 file2 不存在,则创建 file2 。
cp -i file1 file2 同上,区别在于:在覆盖一个已存在的文件前,会提示用户进行确认。
cp file1 file2 dir1 将 file1 、file2 复制到目录 dir1 里。dir1 必须已经存在。
cp dir1/* dir2 通过使用通配符,将 dir1 中的所有文件复制到 dir2 中。dir2 必须已经存在。
cp -r dir1 dir2 将 dir1 目录(及其内容)复制到 dir2 目录中。如果 dir2 不存在,创建 dir2 ,且包含与 dir1 目录相同的内容。

四、mv-移动和重命名文件

mv 命令可以执行文件移动和文件重命名操作,具体取决于如何使用它。

这 2 种情况下,完成操作之后,原来的文件名将不存在

mv 命令的使用方法与 cp 基本相似。

1.格式

(1)单个移动(或重命名)

mv item1 item2

将文件(或目录 )item1 移动(或重命名)为 item2

(2)多个移动(或重命名)

mv item... directory

将一个或多个条目从一个目录移动到另一个目录下

2.mv 选项

mv 命令很多选项与 cp 命令是共享的。

选项 含义
-i,--interactive 在覆盖一个已存在的文件前,提示用户进行确认。如果没有指定该选项,mv 会默认覆盖文件。
-u,--update 将文件从一个目录移动到另一个目录,只移动那些目标目录中不存在的文件或是目标目录里相应文件的更新文件。
-v,--verbose 移动文件时显示信息性消息。

3.示例

命令 结果
mv file1 file2 将 file1 移动到 file2。如果 file2 存在,则会被 file1 的内容覆盖
mv -i file1 file2 同上,仅当 file2 存在时,覆盖之前通知用户确认。
mv file1 file2 dir1 将 file1、file2 移动到目录 dir1 下。dir1必须已经存在。
mv dir1 dir2 将目录 dir1(及其内容) 移动到目录 dir2 下。如果 dir2 不存在,则创建目录 dir2 ,将目录 dir1 的内容移动到 dir2 下,同时删除目录 dir1 。

五、rm-删除文件和目录

rm 命令用来删除文件和目录

1.格式

rm item...

其中,item是一个或多个文件(或目录)的名称。

2.rm 选项

选项 含义
-i,--interactive 删除一个已存在的文件前,提示用户确认。如果没有这个选项,rm 命令会默认删除文件。
-r,--recursive 递归地删除目录。也就是说,如果删除的目录有子目录的话,也要将其删除。要删除一个目录,则必须指定该选项。
-f,--force 忽略不存在的文件并无需提示确认。该选项会覆盖 --interactive 选项。
-v,--verbose 删除文件时显示信息性消息。

3.示例

命令 结果
rm file1 在不提示用户的情况下,删除 file1。
rm -i file1 删除 file1 前,提示用户确认。
rm -r file1 dir1 删除 file1、dir1 以及它们的内容。
rm -rf file1 dir1 同上,当 file1 或 dir1 不存在时,rm 仍会继续执行,且不提示用户。

4.小心 rm 命令

Linux 并不包含还原删除操作的命令。一旦使用 rm 命令,就彻底地删除了。Linux 系统默认用户是明智的,并清楚自己在干什么。

六、ln-创建链接

ln 命令可用来创建硬链接 或是 符号链接。它的使用方式有两种:

1.格式

(1)创建硬链接

ln file link

用来创建硬链接

(2)创建符号链接

ln -s item link

用来创建符号链接,这里的item可以是文件也可以是目录。

2.硬链接

​ 硬链接是最初 UNIX 用来创建链接的方式,符号链接较之更为先进。

默认情况下,每个文件有一个硬链接,该硬链接会给文件起名字。当创建一个硬链接的时候,也为这个文件创建了一个额外的目录条目

​ 硬链接 和 文件本身没有什么区别。与包含符号链接的目录列表不同,包含硬链接的目录列表没有特别的链接指示说明。当硬链接被删除时,只是删除了这个链接,但是文件本身的内容依然存在(也就是,该空间没有释放),除非该文件的所有链接都被删除了。

​ 因为会经常遇到它们,了解硬链接就显得特别重要。但是现在大多使用的是符号链接。

(1)两条重要的局限性

① 硬链接不能引用自身文件系统以外的文件。(也就是,链接不能引用与该链接不在同一磁盘分区的文件。)

② 硬链接无法引用目录。

3.符号链接

​ 符号链接是为了克服硬链接的局限性而创建的。

​ 符号链接是通过创建一个特殊类型的文件来起作用的,该文件包含了指向引用文件或目录的文本指针。从这点上看,符号链接与 Windows 系统下的快捷方式非常相似,但是,符号链接要早于 Windows 的快捷方式很多年。

符号链接指向的文件与符号链接自身几乎没有区别。例如:将一些东西写进符号链接里,那么这些东西同样也写进了引用文件。而当删除一个符号链接时,删除的只是符号链接而没有删除文件本身如果先于符号链接之前删除文件,那么这个链接依然存在,但却不指向任何文件。此时,这个链接就称为坏链接。在很多实现中,ls 命令会用不同的颜色来显示坏链接,比如红色,从而显示它们的存在。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342