linux命令学习系列
导读
在开始使用命令之前,我们需要介绍一个使命令行如此强大的shell特性。由于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中的任一个结尾的任一文件 |
cp 复制文件和目录
cp命令选项
选项 | 含义 |
---|
-a,–archive | 复制文件和目录及其属性,包括所有权和权限。通常来说,复制的文件具有用户所操作文件的默认属性 |
-i,–interactive | 在覆盖一个已存在的文件前,提示用户进行确认。如果没有指定该选项,cp会默认覆盖文件 |
-r,–recursive | 递归地复制目录及其内容。复制目录时需要这个选项(或-a选项) |
-u,–update | 当将文件从一个目录复制到另一个目录时,只会复制那些目标目录中不存在的文件或是目标目录相应文件的更新文件 |
-v,–verbose | 复制文件时,显示信息性消息(informativemessage) |
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目录相同的内容 |
mv 移除和重命名文件
mv选项
选项 | 含义 |
---|
-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 |
rm 删除文件和目录
小心rm命令:
rm命令与通配符在一起使用时要特别小心。来看下面这个经典的示例。假设我们只希望删除目录中的HTML文件,为此需要输入以下正确的命令:
rm *.html
如果不小心在*与.html之间多打了一个空格,如下图所示:
rm * .html
rm 命令将会删除目录中所有文件,并提示说明目录中没有叫做.html 的文件
提示:当rm命令与通配符一起使用时,除仔细检查输入内容外,可使用ls命令预先对通配符做出测试,这将显示欲删除的文件。紧接着,你可以按下向上方向键调用之前的命令,并使用rm代替ls。
rm选项
选项 | 含义 |
---|
-i,–interactive | 删除一个已存在的文件前,提示用户确认。如果没有指定这个选项,rm命令会默认删除文件 |
-r,–recursive | 递归地删除目录。也就是说,如果删除的目录有子目录的话,也要将其删除。要删除一个目录,则必须指定该选项 |
-f,–force | 忽略不存在的文件并无需提示确认。该选项会覆盖–interactive选项 |
-v,–verbose | 删除文件时显示信息性消息 |
rm实例
命令 | 结果 |
---|
rm file1 | 在不提示用户的情况下,删除file1 |
rm –i file1 | 删除file1前,提示用户确认 |
rm –r file1 dir1 | 删除file1、dir1以及它们的内容 |
rm –rf file1 dir1 | 同上,当时在file1或dir1不存在时,rm仍会继续执行,且不提示用户 |
ln 创建链接
ln file link
ln –s item link
总结
以上就是今天要讲的内容,本文简单介绍了 通配符、cp、mv、rm、ln命令的使用和相关有趣的命令。