Linux:文件
文件属性
用户分为三种:文件拥有者、群组以及其它人,对不同的用户有不同的文件权限。
使用 ls 查看一个文件时,会显示一个文件的信息,例如 drwxr-xr-x. 3 root root 17 May 6 00:14 .config
,对这个信息的解释如下:
- drwxr-xr-x:文件类型以及权限,第 1 位为文件类型字段,后 9 位为文件权限字段
- 3:链接数
- root:文件拥有者
- root:所属群组
- 17:文件大小
- May 6 00:14:文件最后被修改的时间
- .config:文件名
常见的文件类型及其含义有:
- d:目录
- -:文件
- l:链接文件
9 位的文件权限字段中,每 3 个为一组,共 3 组,每一组分别代表对文件拥有者、所属群组以及其它人的文件权限。一组权限中的 3 位分别为 r、w、x 权限,表示可读、可写、可执行。
文件时间有以下三种:
- modification time (mtime):文件的内容更新就会更新;
- status time (ctime):文件的状态(权限、属性)更新就会更新;
- access time (atime):读取文件时就会更新。
文件与目录的基本操作
1. ls
列出文件或者目录的信息,目录的信息就是其中包含的文件。
# ls [-aAdfFhilnrRSt] file|dir -a :列出全部的文件 -d :仅列出目录本身 -l :以长数据串行列出,包含文件的属性与权限等等数据
2. cd
更换当前目录。
cd [相对路径或绝对路径]
3. mkdir
创建目录。
# mkdir [-mp] 目录名称 -m :配置目录权限 -p :递归创建目录
4. rmdir
删除目录,目录必须为空。
rmdir [-p] 目录名称 -p :递归删除目录
5. touch
更新文件时间或者建立新文件。
# touch [-acdmt] filename -a : 更新 atime -c : 更新 ctime,若该文件不存在则不建立新文件 -m : 更新 mtime -d : 后面可以接更新日期而不使用当前日期,也可以使用 --date="日期或时间" -t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]
6. cp
复制文件。
如果源文件有两个以上,则目的文件一定要是目录才行。
cp [-adfilprsu] source destination -a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明 -d :若来源文件为链接文件,则复制链接文件属性而非文件本身 -i :若目标文件已经存在时,在覆盖前会先询问 -p :连同文件的属性一起复制过去 -r :递归持续复制 -u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制 --preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
7. rm
删除文件。
# rm [-fir] 文件或目录 -r :递归删除
8. mv
移动文件。
# mv [-fiu] source destination # mv [options] source1 source2 source3 .... directory -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
修改权限
可以将一组权限用数字来表示,此时一组权限的 3 个位当做二进制数字的位,从左到右每个位的权值为 4、2、1,即每个权限对应的数字权值为 r : 4、w : 2、x : 1。
# chmod [-R] xyz dirname/filename
示例:将 .bashrc 文件的权限修改为 -rwxr-xr--。
# chmod 754 .bashrc
也可以使用符号来设定权限。
# chmod [ugoa] [+-=] [rwx] dirname/filename - u:拥有者 - g:所属群组 - o:其他人 - a:所有人 - +:添加权限 - -:移除权限 - =:设定权限