1.目录常用命令
- ls: 列出目录
- cd: 切换目录
- pwd: 显示目前的目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录或修改文件与目录的名称
1) ls (列出目录)
ls命令相当于我们在Windows系统中打开磁盘、或者打开文件夹看到的目录以及文件的明细,如下图
语法如下:
ls [选项] 目录名称
选项与参数:
- -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
将根目录下的所有文件列出来(含属性与隐藏档)
ls -al ~
执行效果如下
ls -l
ls -l
可以查看文件夹下文件的详细信息, 从左到右 依次是:
- 权限(A区域), 第一个字符如果是
d
表示目录 - 硬链接数(B区域), 通俗的讲就是有多少种方式, 可以访问当前目录和文件
- 属主(C区域), 文件是所有者、或是叫做属主
- 属组(D区域), 文件属于哪个组
- 大小(E区域):文件大小
- 时间(F区域):最后一次访问时间
- 名称(G区域):文件的名称
ls
总结
以上三种是经常被使用到的命令
它们之间的区别是
ls 显示不隐藏的文件与文件夹
ls -l 显示不隐藏的文件与文件夹的详细信息
ls -al 显示所有文件与文件夹的详细信息
2) pwd显示当前目录
执行pwd命令相当于我们在Windows系统路径导航栏中查看到的当前浏览位置信息
pwd 是 Print Working Directory 的缩写,也就是显示目前所在当前目录的命令。
使用者权限:所有使用者都可使用。
查看当前所在目录
pwd
执行效果如下
3) cd (切换目录)
Linux的cd切换目录,相当于我们在Windows中通过鼠标或者快捷键点开不同的目录
注意:在Linux系统当中, cd 命令算是比较常用的命令
cd是Change Directory的缩写,这是用来变换工作目录的命令
语法如下:
cd [相对路径或绝对路径]
4) mkdir(创建目录)
mkdir命令用于建立名称为 dirName 之子目录
使用权限:于目前目录有适当权限的所有使用者
语法
mkdir [-p] dirName
参数说明:
- -p 确保目录名称存在,不存在的就建一个
建立一个名为kaifa 的子目录
mkdir kaifa
在工作目录下的 aaa目录中,建立一个名为 bbb的子目录。 若 aaa目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 aaa目录不存在,则产生错误。)
mkdir -p aaa/bbb
5) rmdir(删空目录)
Linux的rmdir命令相当于我们在Windows中通过鼠标或者快捷键删除文件夹。
稍微有点不同的就是在Linux中删除子目录的时候,如果主目录下没有了目录以及文件,会连同主目录同时删除了(需要写Linux带有P的参数)
rmdir命令删除空的目录
使用权限:于目前目录有适当权限的所有使用者。
语法
rmdir [-p] dirName
参数:
- -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
将工作目录下,名为kaifa 的子目录删除 :
rmdir kaifa
在工作目录下的 aaa目录中,删除名为 bbb的子目录。若 bbb删除后,aaa目录成为空目录,则 aaa同时也会被删除
rmdir -p aaa/bbb
总结:
rmdir -p aaa/bbb也就是说
在删除bbb目录完成后,发现aaa目录也是空目录了,在删除完bbb后aaa也同时被删除了。
6) cp(文件复制)
Linux的cp命令相当于我们在Windows中通过鼠标或者快捷键复制文件或者目录
cp命令主要用于复制文件或目录。
使用权限:于目前目录有适当权限的所有使用者
语法
cp [options] source dest
或
cp [options] source... directory
参数说明:
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- -r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- -l:不复制文件,只是生成链接文件。
我们将当前目录"aaa/"下的所有目录以及文件复制到新目录"ccc"下,输入如下命令:
1、数据准备
创建aaa目录并且aaa下包含bbb目录
mkdir -p aaa/bbb
mkdir -p ccc
aaa目录下有bbb
ccc下面没有目录和文件
2、执行复制
cp –r aaa/* ccc
我们将aaa下面的所有文件、目录复制到了目录c下面
总结:
用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。
如果不加参数"-r"或者"-R",只复制文件,而略过目录
7) rm(删除目录)
Linux的rm命令相当于我们在Windows中通过鼠标或者快捷键删除文件或者目录
rm命令用于删除一个文件或者目录。
使用权限:于目前目录有适当权限的所有使用者
语法
rm [options] name...
参数:
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。
如果我们要删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:
rm -r ccc
8) mv(移动文件)
Linux的mv命令相当于我们在Windows中通过鼠标或者快捷键剪切(+重命名)+粘贴文件或者目录
mv 命令用来为文件或目录改名、或将文件或目录移入其它位置
语法
mv [options] source dest
mv [options] source... directory
参数说明:
- -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
- -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
2.linux文件基本属性
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
ls -l
实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)。
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;
第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
3 linux文件属主和属组
引子:
对于一个文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
也就是所谓的属主,它属于哪个用户的意思。
除了属主,还有属组,也就是说,这个文件是属于哪个组的(用户所属的组)。
文件的【属主】有一套【读写执行权限rwx】
文件的【属组】有一套【读写执行权限rwx】
还有它权限,下面我们在介绍
在以上实例中,aaa文件是一个目录文件,属主和属组都为 itcast,属主有可读、可写、可执行的权限(rwx);与属主同组的其他用户有可读可写和可执行的权限(rwx);其他用户也有可读和可执行的权限(r-x)。
1) chgrp更改属组
chgrp命令用于变更文件或目录的所属群组。
文件或目录权限的的拥有者由所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可
为了方便初学者记忆,可以将 chgrp 理解为是 “change group” 的缩写
语法如下
chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]
或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
改变文件的群组属性
我们通过root用户进入(如下图),上接上面的例子
我们的aaa文件的属主和属组都属于itcast(如下图)
我们现在通过chgrp命令将文件aaa的属组更改成root(其他也可以)
chgrp -v root aaa
执行效果如下
我们通过下面的命令查询文件aaa的属组是否发生了变化,执行
ls -l
由上图我们发现,文件aaa的属组由itcast变成了root
这样的话,文件的属组就发生了变化。
2) chown更改属主和属组
语法如下
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
我们通过root用户进入(如下图),上接上面的例子
我们的aaa文件的属主属于itcast、属组属于root
我们现在通过chgrp命令将文件aaa的属主更改成root,执行
chown root aaa
我们通过下面的命令查询文件aaa的属主是否发生了变化,执行
ls -l
由上图我们发现,文件aaa的属主和属组都变成了root。
我们将aaa文件的拥有者与群组改回为itcast:
注意:chown命令可以更改属主和属组
chown itcast:itcast aaa
我们通过下面的命令查询文件aaa的属主是否发生了变化,执行
ls -l
由上图可知,aaa文件的属主和属组都被更改回来了。
3) chmod权限命令
Linux文件属性有两种设置方法,一种是数字,一种是符号
Linux的文件调用权限分为三级 : 文件属主、属组、其他。利用 chmod 可以控制文件如何被他人所调用。
使用权限 : 所有使用者
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下
[ugoa...][[+-=][rwxX]...][,...]
解释:
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
1) 数字权限
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组(owner/group/others就是所说的三个一组 )的,我们也可以使用数字来代表各个权限,各权限的分数对照表如下
各权限的数字对照表:[r]:4;[w]:2;[x]:1;[-]:0
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦,变更权限的指令chmod的语法是这样的
chmod [-R] xyz 文件或目录
选项与参数:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
上面的 可以表示如下
chmod -R 770 档案或目录
上面说了这么多,我们举例说明一下:
我们进入itcast用户创建文件as.txt
touch as.txt
然后切换到root
比如,我们如果要将as.txt这个文件所有的权限都设定启用
那么命令如下:
chmod -R 777 as.txt
由此可见,as.txt的属主权限、属组权限、其他权限都发生了改变
由之前的【-rw-rw-r–】变成【-rwxrwxrwx】
根据前面的换算我们已经知道如何将一个文件的属主、属组、其他权限换算成数字了,换算成数字后,我们只需要通过chmod命令即可更改文件的权限