Linux文件与目录管理
文件系统
Linux将文件存储在单个目录结构中,这个目录被称为虚拟 目录(virtual directory)。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中
Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按 照访问它们的目录路径一一列出,这点跟Windows类似
目录 | 用途 |
---|---|
/ | 虚拟目录的根目录。通常不会在这里存储文件 |
/bin | 二进制目录,存放许多用户级的GNU工具 4 /boot 启动目录,存放启动文件 |
/dev | 设备目录,Linux在这里创建设备节点 |
/etc | 系统配置文件目录 5 /home 主目录,Linux在这里创建用户目录 |
/lib | 库目录,存放系统和应用程序的库文件 |
/media | 媒体目录,可移动媒体设备的常用挂载点 |
/mnt | 挂载目录,另一个可移动媒体设备的常用挂载点 |
/opt | 可选目录,常用于存放第三方软件包和数据文件 |
/proc | 进程目录,存放现有硬件及当前进程的相关信息 |
/root | root用户的主目录 |
/sbin | 系统二进制目录,存放许多GNU管理员级工具 |
/run | 运行目录,存放系统运作时的运行时数据 |
/srv | 服务目录,存放本地服务的相关文件 |
/sys | 系统目录,存放系统硬件信息的相关文件 |
/tmp | 临时目录,可以在该目录中创建和删除临时工作文件 |
/usr | 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里 |
/var | 可变目录,用以存放经常变化的文件,比如日志文件 |
- 基本列表功能
ls命令最基本的形式会显示当前目录下的文件和目录
-a参数用来显示隐藏文件和普通文件及目录
-F参数在目录名后加了正斜线(/),以方便用户在输出中分辨它们。类似地,它会在可执行 文件(比如上面的my_script文件)的后面加个星号,以便用户找出可在系统上运行的文件。
-R参数是ls命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中 的文件。如果目录很多,这个输出就会很长
- 创建文件
$ touch test_file
$ vim test_file
- 复制文件
$ cp test_one test_two
新文件test_two和文件test_one的修改时间并不一样。如果目标文件已经存在,cp命令 可能并不会提醒这一点。最好是加上-i选项,强制shell询问是否需要覆盖已有文件
- 重命名或移动文件
mv file_name new_name
mv file_name /path/name
- 删除文件或目录
rm filename
rm -i /file/path
- 创建目录
mkdir -p New_Dir/Sub_Dir/Under_Dir
- 查看整个文件
# cat
$ cat -n test1
-n参数会给所有的行加上行号
# more命令
$ more filename
# cat命令的主要缺陷是:一旦运行,你就无法控制后面的操作。为了解决这个问题,开发人 员编写了more命令。more命令会显示文本文件的内容,但会在显示每页数据之后停下来
# less命令
$ less filename
- 查看部分文件
# tail命令显示文件最后几行的内容
$ tail log_file
$ tail -n 2 log_file # 显示文件的最后两行
# head命令会显示文件开头那些行的内容
$ head -5 log_file
ln
1)软链接
软链接(又称符号链接),可以理解为快捷方式,如果删除原文件,则对应的软链接文件也会消失。
ln -s test.txt test_softlink
软链接相当于给原文件创建了一个快捷方式,如果删除原文件,则对应的软链接文件也会消失。
2)硬链接
硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。
ln test.txt test_hardlink
理解文件权限
Linux采用复杂的位系统来判定文件和目录的访问权限。每个文件都有三个安全等级:文件 的属主、能够访问文件的默认属组以及系统上的其他用户。每个安全等级通过三个访问权限位来 定义:读取、写入以及执行,对应于符号rwx。如果某种权限被拒绝,权限对应的符号会用单破折线代替
ls命令可以用来查看Linux系统上的文件、目录和设备的权限
$ ls –l
total 68
-rw-rw-r-- 1 rich rich
drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test1
drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test2
输出结果的第一个字段就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象 的类型:
-代表文件
d代表目录
l代表链接
c代表字符型设备
b代表块设备
n代表网络设备
之后有3组三字符的编码。每一组定义了3种访问权限:
r代表对象是可读的
w代表对象是可写的
x代表对象是可执行的
若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:
对象的属主
对象的属组
系统其他用户
- 改变权限
chmod命令用来改变文件和目录的安全性设置。该命令的格式如下: chmod options mode file
mode参数可以使用八进制模式或符号模式进行安全性设置。八进制模式设置非常直观,直 接用期望赋予文件的标准3位八进制权限码即可。
$ chmod 760 newfile
$ ls -l newfile
-rwxrw---- 1 rich rich 0 Sep 20 19:16 newfile
- 改变所属关系
有时你需要改变文件的属主,比如有人离职或开发人员创建了一个在产品环境中需要归属在 系统账户下的应用。Linux提供了两个命令来实现这个功能:chown命令用来改变文件的属主, chgrp命令用来改变文件的默认属组。
可用登录名或UID来指定文件的新属主。
$ chown dan newfile
# 非常简单。chown命令也支持同时改变文件的属主和属组。
$ chown dan.shared newfile
如果你不嫌麻烦,可以只改变一个目录的默认属组。
$ chown .rich newfile
最后,如果你的Linux系统采用和用户登录名匹配的组名,可以只用一个条目就改变二者。
$ chown test. newfile
chown命令采用一些不同的选项参数。-R选项配合通配符可以递归地改变子目录和文件的所 属关系。-h选项可以改变该文件的所有符号链接文件的所属关系。
chgrp命令可以更改文件或目录的默认属组。
$ chgrp shared newfile
用户账户必须是这个文件的属主,除了能够更换属组之外,还得是新组的成员。现在shared 组的任意一个成员都可以写这个文件了。这是Linux系统共享文件的一个途径