1.Linux文件基本属性
(1)查看属性命令
查看某个文件的属性使用ll
命令,查看某个目录中所有文件的属性用ls -l
命令。例如如下示例。
ll video2.mp4
# 输出
# -rw-r--r-- 1 root root 156330209 8月 11 21:45 video2.mp4
ls -l
# 输出
# 总用量 667744
# drwxr-xr-x 4 root root 4096 5月 8 2012 00
# drwxr-xr-x 23 root root 4096 8月 5 23:22 anaconda2
# drwxr-xr-x 3 root root 4096 8月 6 21:15 CLionProjects
# -rw-r--r-- 1 root root 278068786 8月 11 09:41 kitti.mp4
# drwxr-xr-x 12 root root 4096 8月 5 23:04 NVIDIA_CUDA-9.2_Samples
# drwxrwxrwx 4 root root 4096 4月 20 18:57 SatelliteSLAM
# -rw-r--r-- 1 root root 26794927 8月 9 23:42 tum1.mp4
# -rwxr----- 1 root root 54035700 8月 11 11:14 video.mp4
# -rw-r--r-- 1 root root 22049218 8月 9 23:48 whu1.mp4
(2)各属性含义
属性字符串中,第一个属性表示文件类型,有以下不同类型。
d
:目录-
:文件l
:链接文档(Link file)b
:装置文件里面的可供储存的接口设备(可随机存取装置)c
:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符串均以三个为一组,形式如rwx
。r
表示可读(Read),w
表示可写(Write),x
表示可执行(Execute)。和上面一样,如果没有权限则用-
表示。
因此每个文件的属性都用一个十个字符的字符串表示。
(3)用户与用户组
在上面的属性中提到了属主、属组和其他用户的概念,这里简单介绍一下。用户就是指一个用户,所谓属组则是指和当前用户同组的其他用户,除了这些用户以外,全部都是其他用户。三种不同身份的用户(owner/group/others)分别对应不同的权限(read/write/execute),可单独设置。
更改文件属组可以使用chgrp
,示例如下。
chgrp new_group video.mp4
这样就可以将video.mp4
文件的属组变成new_group
了。这个命令对于目录同样适用,只需要在命令后加上-R
即可,表示递归修改文件属组。
同样,与chgrp
类似,可以利用chown
修改文件属主,示例如下。
chown new_user video.mp4
# 也可以直接跨组修改
# 这样就表示直接将文件属主变成了new_group中的new_user
chown new_nser:new_group video.mp4
如果需要递归修改目录中的文件,加上-R
。
(4)修改文件属性
修改文件属性采用chmod
命令。Linux有数字和字母两种方式修改文件属性。
首先介绍数字方式。在数字方式中约定r属性为4,w属性为2,x属性为1,什么都没有即为0,属性等于这三个数字相加的结果。由于前面说过了,属性是三个为一组的,分别对应不同的用户,所以最后就是一个三位数。 例如对于某个文件,所有用户都有全部权限(读、写、执行),那么最后的结果就应该为777。用命令应该写成如下形式。
chmod [-R] 777 filename_or_dir
而采用符号修改也比较简单,也更直观一些。前面说的三类用户(user,group,others)分别用u、g、o来表示。所以如果要设置一个文件的属性为-rwxrw-r--
,那么就可以这样写。
chmod u=rwx,g=rw,o=r filename
递归修改还是用-R
。
2.Linux文件与目录管理
(1)ls
ls
命令用于列出当前目录中的文件,有以下一些参数,参数之间可以随意组合。
-a
:全部文件(包括隐藏文件,开头为.
的文件)-d
:仅列出目录本身-l
:列出目录文件的详细信息(文件属性、权限、大小等)
示例如下:
ls -al .
则表示详细列出当前目录下的所有文件,包括隐藏文件。注意,如果想以合适的方式显示文件大小,可以使用ls -lh
命令。
(2)cd与pwd
Change Dictionary的缩写,cd
命令用于切换目录。在Linux中,最顶级的是/
目录,.
代表当前目录,..
代表上一级目录。cd ..
则表示切换到当前目录的上一级目录中。pwd
是Print Working Dictionary的缩写,用于显示当前所在目录。
(3)mkdir与rmdir
Make Dictionary的缩写,用于新建一个目录。有可选参数-m
,用于配置创建文件的权限。
以及可选参数-p或–parents:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
例如如下所示。
mkdir -m 777 new_folder
顺带一提,新建一个空文件的命令是touch
。
而删除一个目录的命令是rmdir
,Remove Dictionary,它仅能删除空的目录,可以使用rm
命令来删除非空目录。
(4)cp与mv
cp
命令用于复制文件或文件夹,mv
命令用于移动文件或文件夹。Linux中没有重命名命令,可以通过mv命令实现。cp
和mv
命令有一些可选参数,如-r
表示递归复制(用于复制目录),-f
表示强制复制,类似于Windows复制中的覆盖,-i
交互模式。使用示例如下。
cp video.mp4 ../new_video.mp4
表示把当前目录下的文件复制到上一层目录下。
重命名文件。
mv video.mp4 rename_video.mp4
这样就对原有文件进行了重命名,其操作过程就是把源文件先复制一份,然后再删除源文件。
(5)rm
用于移除文件或目录。比较常用的参数是-r
表示递归删除,用在删除文件夹的时候,-i
则是互动模式。示例如下。
rm -r new_folder
(6)cat
cat
用于从第一行开始显示文件内容,而tac
则是从最后一行开始显示文件内容。
3.Linux磁盘管理
(1)df
df
命令用于检查文件系统的磁盘空间占用情况。部分可选参数如下。
-a
:列出所有的文件系统,包括系统特有的/proc等文件系统-k
:以KB为单位显示各自文件系统-m
:以MB为单位显示各自文件系统-h
:以人们较易阅读的GB、MB、KB等显示(系统自动决定用什么)
(2)du
du
命令用于查看文件和目录的磁盘使用情况,它的参数和df
基本相同,不同的如下。
-s
:列出总量,而不列出每个各别的目录占用容量-S
:不包括子目录下的总计
(3)mount与umount
mount
命令用于挂在磁盘,基本使用格式如下。
mount /var/disk /root/install.iso
表示将install.iso
镜像挂载到/var/disk
目录下面。与mount
对应的则是umount
命令,用于卸载镜像。
5.参考资料
- [1]http://www.runoob.com/linux/linux-file-attr-permission.html
- [2]http://www.runoob.com/linux/linux-file-content-manage.html
- [3]http://www.runoob.com/linux/linux-filesystem.html
本文作者原创,未经许可不得转载,谢谢配合