《快乐的Linux命令行》笔记(3)
Contents
#《快乐的 Linux 命令行》
今天是晚餐后看的,看完想睡一会,困
#通配符
*
匹配任意多个字符(包括零个或一个)?
匹配任意一个字符(不包括零个)[characters]
匹配任意一个属于字符集
中的字符[!characters]
匹配任意一个不是字符集
中的字符[[: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
结尾的文件
之前写正则时候的[A-Z]
和[a-z]
虽然都有效果,但是已经很老了,不一定会有期望的效果,可以弃用了。
虽然它们仍然起作用,但是你必须小心地使用它们,因为它们不会产生你期望的输出结果,除非你合理地配置它们。从现在开始,你应该避免使用它们,并且用字符类来代替它们。
#创建目录
命令:
1 | mkdir directory... |
上面命令的...
代表那个参数可以重复,即可以一次性创建多个文件:
1 | mkdir dir1 dir2 dir3 |
会创建三个目录。
#复制文件和目录
两种用法:
1 | cp item1 item2 |
复制单个文件或目录item1
到文件或目录item2
。
1 | cp item1... directory |
复制多个项目(文件或目录)到一个目录下。
cp
命令的一些参数选项:
选项 | 长选项 | 描述 |
---|---|---|
-a |
--archive |
复制文件和目录,以及它们的属性,包括所有权和权限。通常,副本具有用户所操作文件的默认属性。 |
-i |
--interactive |
在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp 命令会默认重写文件。 |
-r |
--recursive |
递归地复制目录及目录中的内容。当复制目录时,需要这个选项(或者-a 选项)。 |
-u |
--update |
当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。 |
-v |
--verbose |
显示详细的命令操作信息 |
示例:
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
中。
最后一个比较难理解,做个例子自己试一下!
#示例
首先创建一下测试的环境:
1 | onns@DESKTOP-5JJP7PL:~$ ls |
然后执行一下命令:
1 | onns@DESKTOP-5JJP7PL:~$ cp -r dir1 dir2 |
然后查看结果:
1 | onns@DESKTOP-5JJP7PL:~$ ls dir1 dir2 |