在linux shell
下通过常见的指令,也可以完成我们在文件资源管理器中动动鼠标进行的文件操作。虽然很多时候用起来没有后者方便,但是可以结合shell script
以及应用内置的shell command
支持,在linux
环境下的开发中大放异彩
标题:Linux Shell之文件操作
通配符
通配符的英文名是wildcards
(globbing
),它可以用来指定某一类特定的文件名,简化文件指令操作对名称的指定
注意,用通配符表示的文件名同样可以被/
分割来表示目录层次关系
wildcard |
用途 |
---|---|
* |
匹配任意多任意字符 |
? |
匹配任意单个字符 |
[characters] |
匹配在中括号内的任意单个字符 |
[!characters] |
匹配不在中括号内的任意单个字符 |
[[:class:]] |
匹配在中括号内类别中的单个字符 |
最后一项中,常见的类别有:
[:alpha:]
:字母[:digit:]
:数字[:alnum:]
:字母或数字[:lower:]
:小写字母[:upper:]
:大写字母
诸如[A-Z]
这样的范围来自更老的版本,慎用
mkdir
用来新建目录(文件夹),后面每跟一个参数就新建一个目录
mkdir dir...
cp
用来复制文件
一对一复制:
cp item1(file) item2(file/directory)
多对一复制:
cp item... directory
对于最后的directory
不存在的情况会自动创建
特殊参数:
-a,--archive
:拷贝文件时附带权限等属性
mv
用来移动文件或者重命名
一对一移动:
item1(file/directory) item2(file/directory)
多对一移动:
mv item... directory
注意,可以直接移动目录;对于最后的directory
不存在的情况也会自动创建,但在移动目录时会删除被移动的顶层目录,相当于重命名
rm
删除文件或目录,不可恢复
rm item...
特殊参数:
-f,--force
:对并不存在的文件不提示,覆盖-i
ln
用来创建硬链接或软链接
- 创建硬链接(
hard links
)- 和被链接的文件一样,都可以直接访问硬盘上的内容,实质上指向了
inode
: - 可以通过
ls -li
之后的第一字段来判断指向的inode
- 不能链接目录
- 不能跨文件系统链接
- 和被链接的文件一样,都可以直接访问硬盘上的内容,实质上指向了
ln file link
- 创建软链接(
symbolic links
)- 需要凭借被链接的文件来访问硬盘上的内容
- 可以链接目录
- 可以跨文件系统链接
ls
的权限字段的第一字符会变成l
item
使用相对路径时,基于link
的位置- 使用相对路径的软链接不容易被重命名破坏
- 被破坏的软链接,或是指向不存在文件的软链接,都会保留并显示,但会提示无法访问
- 对软链接操作时,一般都会操作指向的文件,
rm
只会删除链接 - 在
GUI
的文件资源管理器里,可以使用Ctrl+Shift
并拖动文件来创建软链接 - 软链接的权限是齐全的,真正能否访问取决于被链接的文件
ln -s item link
touch
通用参数
这些参数可以用在上面的多个文件操作指令中,试试看!
-u,--update
:更新式操作-i,--interactive
:改动(覆盖/删除)文件时提示(默认不)-r,--recursive
:递归操作目录下所有文件-v,--verbose
:显示操作详情