Linux文件与目录管理

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系统共享文件的一个途径

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容