1、通配符
由于shell需要经常使用文件名,因此它提供了一些特殊字符来帮助你快速指定一组文件名。这些特殊字符成为通配符。通配符(也叫文件名替换)允许用户依据字符模式选择文件名。
通配符 | 匹配项 |
* | 匹配任意多个字符(包括0个和1个) |
? | 匹配任一单个字符(不包括0个) |
[characters] | 匹配任意一个属于字符集中的字符 |
[!characters] | 匹配任意一个不属于字符集中的字符 |
[ [:class:] ] | 匹配任意一个属于指定字符类中的字符 |
字符类 | 匹配项 |
[:alnum:] | 匹配任意一个字母或数字 |
[:alpha:] | 匹配任意一个字母 |
[:digit:] | 匹配任意一个数字 |
[:lower:] | 匹配任意一个小写字母 |
[:upper:] | 匹配任意一个大写字母 |
模式 | 匹配项 |
* | 所有文件 |
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中任一个结尾的任一文件 |
2、mkdir–创建目录
mkdir命令是用来创建目录的,格式为:
mkdir directory...
例如:mkdir dir1
例如:mkdir dir1 dir2 dir3
3、cp–复制文件和目录
cp命令用来复制文件和目录。它有两个不是同的使用方式,如下所示:
1、cp item1 item2
将单个文件或目录item1复制到文件或目录item2中。
2、cp item1... directory
将多个项目(文件或目录)复制进一个目录中。
选项 | 含义 |
-a | |
- -archive | 复制文件和目录及其数学,包括所有权和权限。通常来说,复制的文件具有用户所操作文件的默认属性 |
-i | |
- -interactive | 在覆盖一个已存在的文件前,提示用户进行确认。如果没有指定该选项,cp会默认覆盖文件 |
-r | |
- -recursive | 递归地复制目录及其内容。复制目录是需要这个选项(或-a选项) |
-u | |
- -update | 当将文件从一个目录复制到另一个目录是,只会复制那些目标目录中国不存在的文件或是目标目录相应文件的更新文件 |
-v | |
- -verbose | 复制文件时,显示信息性消息(informative message) |
cp命令示例
命令 | 结果 |
cp file1 file2 | 将file1复制到file2。如果file2存在,则会被file1的内容覆盖。如果file2不存在,则创建file2 |
cp -i file1 file2 | 同上,区别在于当file2存在是,覆盖之前通知用户确认 |
cp file1 file2 dir1 | 将file1和file2复制到目录dir1中。dir1必须已经存在 |
cp dir1/* dir2 | 通过使用通配符,将dir1中的所有文件复制到dir2中。dir2必须已经存在 |
cp -r dir1 dir2 | 将dir1目录(及其内容)复制到dir2目录中。如果dir2不存在,创建dir2,且包含与dir1目录相同的内容 |
4、mv–移除和重命名文件
mv命令可以执行文件移动和文件重命名操作,这具体取决于如何使用它。在这两种情况下,完成操作之后,原来的文件名将不存在。mv的使用方法与cp基本相似。
1、mv item1 item2
将文件(或目录)item1移动(或重命名)为item2
2、mv item... directory
将一个或多个条目从一个目录移动到另一个目录下。
选项 | 含义 |
-i | |
- -interactive | 覆盖一个已存在文件之前,提示用户确认。如果没有指定该选项,mv会默认覆盖文件 |
-u | |
- -update | 将文件从一个目录移动到另一个目录,只移动那些目标目录中不存在的文件或是目标目录里相应文件的更新文件 |
-v | |
- -verbose | 移动文件是显示消息性消息 |
mv命令示例
命令 | 结果 |
mv file1 file2 | 将file1移到file2。如果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 |
5、rm–删除文件和目录
rm命令用来移除(删除)文件和目录,如下:
rm item...
选项 | 含义 |
-i | |
- -interactive | 删除一个已存在的文件,提示用户确认。如果没有指定这个选项,rm命令会默认删除文件 |
-r | |
- -recysive | 递归地删除目录。也就是说,如果删除的目录有子目录的话,也要将其删除。要删除一个目录,则必须指定该选项 |
-f | |
- -force | 忽略不存在的文件并无需提示确认。该选项会覆盖- -interactive选项 |
-v | |
- -verbose | 删除文件是显示消息性消息 |
rm命令实例
命令 | 结果 |
rm file1 | 在不提示用户的情况下,删除file1 |
rm -i file1 | 删除file1前,提示用户确认 |
rm -f file1 dir1 | 删除file1、dir1以及它们的内容 |
rm -rf file1 dir1 | 同上,当在file1或dir1不存在是,rm仍会继续执行,且不提示用户 |
6、ln–创建链接
ln命令可用来创建硬链接或是符号链接,如下:
1、ln file link
用来创建硬链接
2、ln -s item link
用来创建符号链接,这里的item可以是文件也可以是目录
硬链接
硬链接是最初UNIX用来创建链接的方式,符号链接较之更为先进。默认的情况下,每个文件有一个硬链接,该硬链接会给文件起名字。当创建一个硬链接的时候,也为这个文件创建了一个额外的目录条目。硬链接有两条重要的局限性:
- 硬链接不能引用自身文件系统之外的文件。也就是说,连接不能引用与该链接不在同一磁盘分区的文件。
+硬链接无法引用目录
硬链接和文件本身没有什么区别。与包含符号链接的目录列表不同,包含硬链接的目录列表没有特别的链接指示说明。当硬链接被删除时,只是删除了这个链接,但是文件本身的内容依然存在(也就是说,该空间没有释放),除非该文件的所有链接都被删除了。
符号链接
符号链接是为了克服硬链接的局限性而创建的。符号链接是通过创建一个特殊类型的文件来起作用的,改文件包含了指向引用文件或目录的文本指针。就这一单,符号链接与windows系统下的快捷方式非常相似,但是,符号链接要早于windows的快捷方式很多年。
符号链接指向的文件与符号链接自身几乎没有区别。例如,将一些东西写进符号链接里,那么这些东西同样也写进了引用文件。而当删除一个符号链接时,删除的只是符号链接而没有删除文件本身。如果咸鱼符号链接之前删除文件,那么这个链接依然存在,但却不指向任何文件。此时,这个链接就称为坏链接。在很多实现中,ls命令会用不同的颜色来显示坏链接,比如红色,从而显示它们的存在。