梦回Linux | 4、shell下的创造力

先说个故事

对于创造力都不默生,从无到有,从0到1。在shell大陆下,除了召唤的发展,还有造物的创造,比如:文件,文件夹等操作。虽然上下几百年方式一直没怎么变过,但生活中到处可见,让我们看下从无到有的过程!

1、通配符

shell 频繁地使用文件名,shell 提供了特殊字符来帮助你快速指定一组文件名。这些特殊字符叫做通配符。
使用通配符(也以文件名代换著称)允许你依据字符的组合模式来选择文件名。

下表列出这些通配符以及它们所选择的对象:

通配符意义
*匹配任意多个字符(包括零个或一个)
?匹配任意一个字符(不包括零个)
[characters]匹配任意一个属于字符集中的字符
[!characters]匹配任意一个不是字符集中的字符
[[:class:]]匹配任意一个属于指定字符类中的字符

[[:class:]] 是什么

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

通配符范例

模式匹配对象
*所有文件
g*文件名以“g”开头的文件
b*.txt以"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件
Data???以“Data”开头,其后紧接着3个字符的文件
[abc]*文件名以"a",“b”,或"c"开头的文件
BACKUP.[0-9][0-9][0-9]以"BACKUP."开头,并紧接着3个数字的文件
[[:upper:]]*以大写字母开头的文件
[![:digit:]]*不以数字开头的文件
*[[:lower:]123]文件名以小写字母结尾,或以 “1”,“2”,或 “3” 结尾的文件

2、mv(移动、搬运)

mv 命令可以执行文件移动和文件命名任务,这依赖于你怎样使用它。
任何一种情况下,完成操作之后,原来的文件名不再存在。

# 把文件或目录 “item1” 移动或重命名为 “item2”
mv item1 item2

# 把一个或多个条目从一个目录移动到另一个目录中
mv item... directory

2.1、mv参数说明

选项意义
-i --interactive在重写一个已经存在的文件之前,提示用户确认信息。如果不指定这个选项,mv 命令会默认重写文件内容。
-u --update当把文件从一个目录移动另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相对应文件的内容。
-v --verbose当操作 mv 命令时,显示翔实的操作信息。

2.2、mv举例

命令说明
mv file1 file2移动 file1 到 file2。如果 file2 存在,它的内容会被 file1 的内容重写。如果 file2 不存在,则创建 file2。 这两种情况下,file1 都不再存在。
mv -i file1 file2除了如果 file2 存在的话,在 file2 被重写之前,用户会得到提示信息外,这个和上面的选项一样。
mv file1 file2 dir1移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。
mv dir1 dir2如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到目录 dir2 中,同时删除目录 dir1。如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2。

执行mv命令,使一个文件或文件夹,移动到另一个位置。原来的位置的文件或文件夹不存在了!!!
注意项:
1.如果是移动文件则文件是否覆盖原文件
2.如果是移动文件夹则是否更新最新文件

3、cp(临摹、复制)

如果你买了一个字帖(mv命令),那接下来是不是该临摹练字了…

# 复制单个文件或目录”item1”到文件或目录”item2”
cp item1 item2

# 复制多个项目(文件或目录)到一个目录下
cp item... directory

cp选项

选项意义
-a, --archive复制文件和目录,以及它们的属性,包括拥有者和所有权。通常,副本具有用户所操作文件的默认属性。
-i, --interactive在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp 命令会默认重写文件。
-r, --recursive递归地复制目录及目录中的内容。当复制目录时,需要这个选项(或者-a 选项)。
-u, --update当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。
-v, --verbose显示翔实的命令操作信息

cp 实例

命令运行结果
cp file1 file2复制文件 file1 内容到文件 file2。如果 file2 已经存在,file2 的内容会被 file1 的内容重写。如果 file2 不存在,则会创建 file2。
cp -i file1 file2这条命令和上面的命令一样,除了如果文件 file2 存在的话,在文件 file2 被重写之前,会提示用户确认信息。
cp file1 file2 dir1复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。
cp dir1/* dir2使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。dir2 必须已经存在。
cp -r dir1 dir2复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在,创建目录 dir2,操作完成后,目录 dir2 中的内容和 dir1 中的一样。如果目录 dir2 存在,则目录 dir1 (和目录中的内容)将会被复制到 dir2 中。

4、mkdir(创建目录)

# 当有三个圆点跟在一个命令的参数后面,这意味着那个参数可以重复
mkdir directory...
# 创建一个名为”dir1”的目录
mkdir dir1
# 创建三个目录,名为 dir1, dir2, dir3
mkdir dir1 dir2 dir3

# mkdir 参数选项
-m 设置权限 eg:664
-p 迭代创建父级 eg:d1/d2/d3

关于文件名的重要规则
1. 字符开头的文件名是隐藏文件。这仅表示,ls 命令不能列出它们,用 ls -a 命令就可以了。当你创建帐号后,几个配置帐号的隐藏文件被放置在你的家目录下。
2. 名和命令名是大小写敏感的。文件名 “File1” 和 “file1” 是指两个不同的文件名。
3. Linux 没有“文件扩展名”的概念,不像其它一些系统。
4. 虽然 Linux 支持长文件名,文件名可能包含空格,标点符号,但标点符号仅限使用 “.”,“-”,下划线。最重要的是,不要在文件名中使用空格。如果你想表示词与词间的空格,用下划线字符来代替。

5、touch(创建文件)

# 创建文件
touch fileName

6、rm(删除)

# “item”代表一个或多个文件或目录被删除
rm item...

rm 选项

选项意义
-i, --interactive在删除已存在的文件前,提示用户确认信息。如果不指定这个选项,rm 会默默地删除文件
-r, --recursive递归地删除文件,这意味着,如果要删除一个目录,而此目录又包含子目录,那么子目录也会被删除。要删除一个目录,必须指定这个选项。
-f, --force忽视不存在的文件,不显示提示信息。这选项覆盖了“–interactive”选项。
-v, --verbose在执行 rm 命令时,显示翔实的操作信息。

rm 实例

命令运行结果
rm file1默默地删除文件
rm -i file1除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。
rm -r file1 dir1删除文件 file1, 目录 dir1,及 dir1 中的内容。
rm -rf file1 dir1同上,除了如果文件 file1,或目录 dir1 不存在的话,rm 仍会继续执行。

7、ln(链接)

一个文件或文件夹的产生,数据会落地到数据块中(用户数据),而文件的名称、大小、时间等等这些属性为元数据,区分文件的id为inode。

# 链接分为软链接和硬链接之分
# 创建硬链接
ln file link
# 创建软链接
ln -s file link

7.1、硬链接

每个文件默认会有一个硬链接,这个硬链接给予文件名字。我们每创建一个硬链接,就为一个文件创建了一个额外的目录项。
硬链接有两个重要局限性:

  1. 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联
    与链接本身不在同一个磁盘分区上的文件。
  2. 一个硬链接不能关联一个目录。

创建完硬链接后,其inode和之前文件的inode的id一致,就像镜像了一份元数据信息。

当一个硬链接被删除时,这个链接被删除,
但是文件本身的内容仍然存在(这是说,它所占的磁盘空间不会被重新分配),
直到所有关联这个文件的链接都删除掉。

7.2、软链接

符号链接生效,是通过创建一个特殊类型的文件,这个文件包含一个关联文件或目录的文本指针。在这一方面,它们和 Windows 的快捷方式差不多。

软链接就像生成了一个快捷键,而这个快捷键存放的就是指向原始文件的路径。

如果你往一个符号链接里面写入东西,那么相关联的文件也被写入。
然而,当你删除一个符号链接时,只有这个链接被删除,而不是文件自身。
如果先于符号链接删除文件,这个链接仍然存在,但是不指向任何东西。在这种情况下,这个链接被称为坏链接。
在许多实现中,ls 命令会以不同的颜色展示坏链接,比如说红色,来显示它们的存在。

总结

  1. 文件或文件夹mv、cp、mkdir、touch、rm、ln。从无到有,再从有到无的过程。
  2. 通配符,进行文件或文件夹批量操作时,可使用通配符简便操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值