1.文件、目录的创建、查看、删除等基本操作实训
本章我们先来学习CentOS的一些基本操作,其中包括对目录的操作以及对文件的操作。先要说明的是,由于本书主要目的是教初学者快速学习上手,所以涉及的命令不管包含多少参数和用法,我们仅仅列出其最常见的用法。
1.1. 文件目录管理命令
1.1.1. pwd命令
一个超级简单的命令,用来获得当前目录。无论在什么地方,只要我们输入pwd,系统都会返回一个绝对路径,这就是我们所处的位置。
1.1.2. cd命令
目录切换。这个命令其实在DOS系统里面就有,功能也是一样的,用法也大同小异。相对于前面的pwd命令,cd命令的用法就比较多了,如下所列:
进入根目录:
cd /
返回先前目录:
cd -
进入当前用户的家目录:
cd ~
返回上层目录:
cd ..
进入根目录下的usr目录中:
cd /usr
1.1.3. mkdir命令
创建目录。格式为:mkdir [参数] 目录名
在当前目录内创建一个名为T1的目录
mkdir T1
在根目录的tmp内创建一个名为T1的目录
mkdir /tmp/T1
在根目录的tmp内创建一串目录
mkdir -p /tmp/d1/d2/d3
创建目录并赋以最大权限
mkdir -m 777 d3
1.1.4. touch命令
创建文件。格式为:touch [参数] 文件名称
在当前目录创建文件f1
touch f1
在当前目录创建f1—5共5个文件
touch f{1..5}
1.1.5. cp命令
复制文件或目录。格式为:cp [参数] 源文件名 目标文件名,使用cp命令应注意会有如下3种情况:
- 如果目标文件是一个目录,则复制源文件至该目录中;
- 如果目标文件已存在,则会询问是否覆盖;
- 如果目标文件不存在,则进行正常复制操作。
复制文件f1为f1.bak
cp f1 f1.bak
复制目录T1为T2——复制目录须加参数-r
cp -r T1 T2
复制目录T1为T2——加参数-p可确保目录及其内容的属性不被改动
cp -r -p T1 T2
cp命令涉及的几个实用参数作用请看表1:
参数 |
作用 |
-p |
保留源文件的属性 |
-d |
保留源文件的“链接文件”属性 |
-r |
复制目录 |
-a |
相当于同时使用上述三个参数 |
表1 cp命令参数说明
1.1.6. mv命令
移动文件或目录。格式为:mv [参数] 源文件名称 目标文件名称。
移动当前目录下的文件f1到根目录下的tmp目录中
mv f1 /tmp
移动当前目录下的文件f1到根目录下的tmp目录中,并更名为f2
mv f1 /tmp/f2
mv命令涉及的几个实用参数作用请看表2:
参数 |
作用 |
-b |
当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。 |
-n |
不要覆盖任何已存在的文件或目录。 |
-u |
当源文件比目标文件新或者目标文件不存在时,才执行移动操作。 |
表2 mv命令参数说明
1.1.7. rm命令
删除文件或目录。格式为:rm [参数] 文件名称
删除文件f1
rm f1
删除目录T1和T2
cp -r T1 T2
rm命令涉及的几个实用参数作用请看表3:
参数 |
作用 |
-f |
强制执行 |
-r |
删除目录 |
-v |
显示过程 |
表3 rm命令参数说明
1.1.8. ls命令
显示目录内容。格式为:ls [参数] 文件名称
显示当前目录内存放的文件和目录
ls
显示/tmp目录内f1文件的详细信息
ls -l /tmp/f1
显示/tmp目录内的所有文件和目录
ls -a /tmp
ls命令涉及的几个实用参数作用请看表4:
参数 |
作用 |
-l |
显示时间、权限、大小等详细信息 |
-a |
显示全部内容——包括隐藏的 |
-la |
显示全部内容及其详细信息 |
表4 ls命令参数说明
说明:如果我们只想查看当时目录下不包含隐藏文件的所有内容及其详细信息,可直接键入ll(相当于ls -l),效率比较高,如:
显示/tmp目录内f1文件的详细信息
ll /tmp/f1
1.1.9. cat命令
显示文本文件内容。格式为:cat [参数] 文件名称
显示/tmp目录内f1文件的内容
cat /tmp/f1
显示/tmp目录内f1文件的内容并标注行号
cat -n /tmp/f1
显示f1文件的内容并可使用jk键进行逐行滚动显示,使用q退出,|less也可用在ll命令中,解决了所显示内容超过一屏而只能显示最后部分的尴尬情况。
cat f1 |less
cat命令涉及的几个实用参数作用请看表5:
参数 |
作用 |
-n |
标注行号 |
-b |
标注行号——不包括空行 |
-s |
把连续两个以上的空行替代为一个空行 |
表5 cat命令参数说明
1.1.10. more命令
显示文本文件内容。格式为:more [参数] 文件名称
使用more命令时,对于内容较大的文件可以实现逐页显示,按空格键翻页,按q键可中途退出。
2.
文件、目录的权限
2.1. 权限解析
在上一节中,我们学到了一个实用的命令ll,现在我们使用它,如图1所示。
我们从显示结果中截取一行来进行详细解读:
drwxr-xr-x. 2 root root 6 Jan 22 22:49 Documents
第1个字符:说明了对象的性质,这个位置会出现的字符及其含义如表2.1:
字 符 |
对象性质 |
— |
普通文件(regular file) |
d |
目录(directory) |
s |
套接字文件(socket file) |
l |
符号链接文件(symbolic link file) |
p |
管道文件(pipe file) |
b |
面向块的设备文件(block-oriented device file) |
c |
面向字符的设备文件(character-oriented device file) |
? |
其它文件 |
表2.1 第1位字符及其说明的对象性质
- 第1个字符是\”d\”:说明这是一个目录。
- 第2个字符“r”:文件的属主具有读的权限。
- 第3个字符“w”:文件的属主具有写的权限。
- 第4个字符“x”:文件的属主具有执行的权限。
- 第5个字符“r”:文件的属组具有读的权限。
- 第6个字符“-”:文件的属组不具有写的权限。
- 第7个字符“x”:文件的属组具有执行的权限。
- 第8个字符“r”:其他人对文件具有读的权限。
- 第9个字符“-”:其他人对文件不具有写的权限。
- 第10个字符“x”:其他人对文件具有执行的权限。
- 第11个字符“.”:没有设置ACL访问。
- 第12个字符“2”:表示其内有2个一级子目录,如果是文件则表示硬连接数量为2。
- 第13个字符“root”:文件的属主为root。
- 第14个字符“root”:文件的属组为root。
- 第15个字符“6”:文件的大小为6。
- 第16-18个字符“Jan 22 22:49”:文件的最后一次修改时间。
- 第19个字符“Documents”:文件的名称为Documents.
通过如上解读,我们知道第2-10个字符rwxr-xr-x表示的就是权限,其中:
- 第2~4个字符rwx,表示文件的所有者权限,又称为属主权限;
- 第5~7个字符r-x,表示文件的所有者同组用户权限,又称为属组权限;
- 第8~10个字符r-x,表示文件的其他用户权限。
我们可以归纳得出以下两个知识点:
- 每个文件或目录的权限都被分配给三类人,他们分别是:
- 属主——文件所有者user
- 属组——文件所有者所在的组group
- 其他用户others
- 每一类人都拥有3种权限:
- r :读
- w :写
- x :执行
如果不具有某种权限,就用“-”表示。
另外,上述3种权限对于目录和普通文件来说,其作用是不同的,如表2.2所示。
权限 |
读(r) |
写(w) |
执行(x) |
对于普通文件的作用 |
可读取文件里的内容 |
可对文件进行更改 |
可执行该文件 |
对于目录的作用 |
可列出其中的内容 |
可在其中创建文件或目录 |
可进入该目录 |
表2.2 文件与目录的权限区别
2.2. 更改文件属性的命令
2.2.1. chmod命令
更改文件权限。格式为:chmod [参数] <mode> 文件列表
参数若干,说明如下 :
-c,若该档案权限确实已经更改,才显示其更改动作
-f,若该档案权限无法被更改也不要显示错误讯息
-v,显示权限变更的详细资料
-R,对目前目录下的所有文件与子目录进行权限变更
mode是权限设定字串,包含有[ugoa…][[+-=][rwx]等,说明如下:
[ugoa…]:u为属主,g表示属组,o表示其他人,a表示所有用户(默认值,包含上面三者)。
[+-=]:+表示增加权限,-表示取消权限,=表示设置具体权限。
[rwx]:r为读,w为写,x为可执行
文件列表:单个或者多个文件、目录的名称
用法示例如下:
设置文件f1的属主(u)权限为rwx,属组(g)权限为rw,其他人(o)权限为r
chmod u=rwx,g=rw,o=r f1
设置后,显示该文件详情如下:
给文件f1的其他人(o)增加x权限
chmod o+x f1
设置后,显示该文件详情如下:
给文件f1的所有用户去除x权限
chmod -x f1
设置后,显示该文件详情如下:
权限除了使用字母外,还可以用数字表示,linux系统规定用数字4、2和1分别表示读、写、执行权限,即r=4,w=2,x=1。而且每一类用户的权限组合也可以用数字来表示,如:rwx=4+2+1=7;rw=4+2=6;rx=4+1=5。按照这一规则,一个文件包含三类用户的完整权限表达示例如下:
- rwxrwxrwx (777)所有用户都有读、写、执行权限。
- rwx—— (700)只有属主有读、写、执行权限。
- rw——- (600)只有属主有读写权限。
- r——– (400)只有属主有读权限。
- r–r–r– (444)所有用户只有读权限。
- rwxr-xr-x (755)属主有读、写、执行权限,属组用户和其他人只有读、执行权限。
- rwxr-x— (750)属主有读、写、执行权限,属组用户有读、执行权限,其他用户无任何权限。
- rwx–x–x (711)属主有读、写、执行权限;属组用户和其他用户只有执行权限。
- rw-rw-rw- (666)所有用户都有文件读、写权限。
我们可以把前面的三个用法示例改为数字方式:
设置文件f1的属主(u)权限为rwx,属组(g)权限为rw,其他人(o)权限为r
chmod 764 f1
给文件f1的其他人(o)增加x权限
chmod +001 f1
给文件f1的所有用户去除x权限
chmod -111 f1
2.2.2. chown命令
改变目录或文件的所有权。格式为:chown [参数] 属主:属组 文件列表
将文件f1的属主改为mzzz,属组改为mzzg
chown mzzz:mzzg f1
将文件f2的属主改为mzzz
chown mzzz f2
将文件f3的属组改为mzzg
chown :mzzg f3