Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
· 当为 d 则是目录
· 当为 - 则是文件;
· 若是 l 则表示为链接文档(link file);
· 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
· 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
对于 root 用户来说,一般情况下,文件的权限对其不起作用。
chgrp:更改文件属组
chgrp [-R] 属组名 文件名
chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
例:
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
数字类型改变文件权限:
Linux 文件的基本权限就有九个(对应的数字),分别是 owner/group/others(拥有者 / 拥有者所在组 / 其他用户组) 三种身份各有自己的 read(4)/write(2)/execute(1)权限。
例如:
当权限为: -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)的持续变更,亦即连同次目录下的所有文件都会变更
例:将 .bashrc 这个文件所有的权限都设定启用,那么命令如下:
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
符号类型改变文件权限
我们就可以使用 u, g, o 来代表三种身份的权限。
a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x(如下图)
例:将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
# touch test1 // 创建 test1 文件
# ls -al test1 // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r test1 // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
例:拿掉全部人的可执行权限,
# chmod a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
· ls(英文全拼:list files): 列出目录及文件名
语法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
可以多个使用 例如 ls -al
例:将家(root)目录下的所有文件列出来(含属性与隐藏档)
[root@www ~]# ls -al ~
· cd(英文全拼:change directory):切换目录
语法;
cd [相对路径或绝对路径]
#使用 mkdir 命令创建 runoob 目录
[root@www ~]# mkdir runoob
#使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/
#使用相对路径切换到 runoob 目录
[root@www ~]# cd ./runoob/
# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www runoob]# cd ~
# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..
· pwd(英文全拼:print work directory):显示目前的目录
语法:
[root@www ~]# pwd [-P]
-P :显示出确实的路径,而非使用连结 (link) 路径。
例:显示出实际的工作目录
[root@www ~]# cd /var/mail <==注意,/var/mail是一个连结档
[root@www mail]# pwd
[root@www mail]# pwd
/var/mail <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
· mkdir(英文全拼:make directory):创建一个新的目录
语法
mkdir [-mp] 目录名称
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
例:到/tmp底下尝试创建数个新目录
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 没办法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4
加了这个 -p 的选项,可以自行帮你创建多层目录!
例:创建权限为 rwx--x--x 的目录。
[root@www tmp]# mkdir -m 711 test2 或 mkdir -m u=rwx,g=x,o=x test2
[root@www tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
· rmdir(英文全拼:remove directory):删除一个空的目录
rmdir [-p] 目录名称
-p :连同上一级『空的』目录也一起删除
例:删除 runoob 目录
[root@www tmp]# rmdir runoob/
例:将 mkdir 实例中创建的目录(/tmp 底下)删除掉!
[root@www tmp]# ls -l <==看看有多少目录存在?
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test <==可直接删除掉,没问题
[root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l <==您看看,底下的输出中test与test1不见了!
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
· cp(英文全拼:copy file): 复制文件或目录
语法:
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-a:相当于 -pdr 的意思,至于 pdr 请参考下列说明;(常用)
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r:递归持续复制,用于目录的复制行为;(常用)
例:用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖
· rm(英文全拼:remove): 删除文件或目录
语法:
rm [-fir] 文件或目录
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
· mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
语法:
[root@www ~]# mv [-fiu] (来源)source (目标)destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
例:复制一文件,创建一目录,将文件移动到目录中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
例:将刚刚的目录名称更名为 mvtest2
[root@www tmp]# mv mvtest mvtest2
可以使用 man [命令] 来查看各个命令的使用文档 例如:man ls
· cat 由第一行开始显示文件内容
· tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
· nl 显示的时候,顺道输出行号!
· more 一页一页的显示文件内容
· less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
· head 只看头几行
· tail 只看尾巴几行