文件系统

为了很好地使用linux系统,你必须适应linux的文件及目录。在命令行界面,文件和目录没有被直观的显示,因此,你必须记住你目前在哪个目录里,以及这个目录与其他目录之间的层次关系。当然,你可以使用shell命令,比如cd与pwd,在各个目录之间移动,以及定位你的位置。

linux文件系统呈树状层级分布:一个目录可能包括其他的目录,即子目录。子目录本身也可能包含其他文件及子目录,等等,直至无穷。位于最高层的目录被称为根目录,并以 “/” 表示。

linux使用 “名字和斜线” 的方式描述文件和目录的位置,也就是路径(path)。例如: /one/two/three/four ,上述路径表示根目录 / 下面one子目录下的 two 子目录下的 three 子目录下的 four 文件。如果一个路径以根目录为起点,则称为绝对路径,否则,就是一个相对路径。

shell有一个当前工作目录,在shell中运行命令时,它就作用在这个目录。更具体地说,如果在shell中使用相对文件路径,它也是相对于当前工作目录而言的。例如,如果shell的当前工作目录是:/one/two/three,提供给命令的文件路径是myfile,那么这个命令真正操作的文件是:/one/two/three/myfile。同理,相对路径:/a/b/c意味着真实的路径是:/one/two/three/a/b/c。

linux的shell中还使用了两个特殊目录.一个点)和 ..两个点)。前者表示当前目录,后者表示上一级目录。因此,如果你的当前目录是:/one/two/three时,则 . 代表此目录,.. 代表目录:/one/two。

再来说一说cd命令,我们可以使用cd命令从一个目录移动到另一个目录,如例:

$ cd /one/two/three

更专业地说,这个命令将shell的当前目录更改为:/one/two/three。对于这个例子来说,cd使用的是绝对路径(因为目录以"/"开始)。当然,cd也可以使用相对路径,比如:

$ cd d            //进入子目录d
$ cd ../mydir     //回到上级目录,然后进入其子目录mydir

文件和目录名可以包含大多数字符:大小写字母数字句点破折号下画线,以及大部分符号(除了“/”,因为它留作分割目录用)。但是,在实际使用中,要避免使用空格星号括号,以及其他在shell中有特殊意义的字符。否则,要给这些符号进行转义。

主目录

linux里每个用户都有一个存放个人文件的目录,称为主目录。普通用户的个人目录通常位于:/home目录下,典型的目录名称是:/home/your-username,如:/home/smith,/home/jones,等等。对于超级用户来说,主目录是:/root 。有几种方法可以找到或者引用你的主目录。

  • cd        如果不带参数,cd命令会带你移动到你的主目录,例:$ cd

  • HOME环境变量        环境变量HOME包含你的主目录名称。例:$ cd  $HOME ,也可移动到你的主目录。

  • cd ~        当使用字符“~”代替目录名时,shell会自动将其扩展成主目录名。例:$ cd ~,也可移动到你的主目录。

  • cd ~username        当“~”后跟着用户名时(如:$ cd ~jones),也可移动到主目录。

系统目录

典型的linux系统有上万个系统目录。系统目录包含操作系统文件,应用程序,文档等,囊括除用户个人文件(/home目录下)外的所有文件。除非你是一名系统管理员,否则大多数系统目录你都几乎不用访问,但是只要有点基础知识,你就可以理解或猜测出这些目录的作用。这些目录的名字通常包含三部分,我们称之为:范畴(scope),分类(category),以及应用(application)。例如,目录:/usr/local/share/emacs包含了文本编辑器emacs的数据。它的scope是:/usr/local(安装系统文件的地方),category是 share(特定应用的数据与文档),application是emacs(文本编辑器)。

目录路径的category

category告诉你目录下文件的类型。

程序类
bin 程序(通常二进制文件)
sbin 专给超级用户使用的程序(通常二进制文件)
lib 程序使用的库文件
libexec 供其它程序调用的程序,可当作“可执行程序的库”
文档类
doc 文档
info emacs内置帮助系统的文档
man 可用man程序查看在线手册;这些文件通常是压缩过的,或者含有man命令才能解释的排版指令
share

特定程序的文件,如示例,安装说明等

配置类
etc 系统配置文件
init.d 与linux启动有关的配置文件
rc.d 与linux启动有关的配置文件;也可能是rc1.d,rc2.d .....
编程类
include 程序头文件
src 程序的源码
网站类
cgi-bin 网站运行的脚本和程序
html 网页
public_html                                                                        网页,通常位于用户主目录
WWW 网页
显示类
fonts 字体
X11 X Window系统文件
硬件类
dev 设备文件,内核提供给应用访问磁盘及其他硬件的接口
media 挂载点,用于访问磁盘的目录
mnt 挂载点,用于访问磁盘的目录
misc 挂载点,用于访问磁盘的目录
运行状态类
var 存放随当前计算机的运行而改变的文件
lock         锁定文件,程序创建它用来表明自己正在执行。它的存在是用来阻止其他程序进行某些操作,或是避免同一个系统上同时运行多个一样的程序
log 日志文件,记录系统的重要事件,包含错误,警告,以及一些仅仅是信息性的消息等
mail 接收邮件的邮箱
run PID文件,包含正在执行的进程的ID;  这些文件常用来对特定的进程进行追踪或者终止其运行
spool 过滤文件,比如等待寄出的email,打印任务,计划任务等
tmp 供程序或者用户临时使用的空间
proc
操作系统状态

目录路径的scope

目录路径的scope是从更高的层次上描述整个目录的体系结构。比较常见的scope是:

/ linux提供的系统文件(称为 “root” )
/usr 更多linux提供的系统文件(称为 ""user )
/usr/games                                           游戏
/usr/local 个别组织或计算机专用的系统文件,比如:个人另外安装的软件包
/usr/X11R6 X Window系统的文件

目录路径的application

目录路径的application部分通常是程序的名字。在scope和category(比如说 /usr/local/doc)之后,程序可以有自己的子目录(比如 /usr/local/doc/myprogram)来包含自己所需的文件。

操作系统目录

这些目录包含了支持linux内核(即linux操作系统的最底层部分)的文件。

/boot 与系统启动相关的文件
/lost+found                                            供磁盘修复工具存放恢复好的受损文件
/proc 描述进程的运行状态

文件保护

一个linux系统中,可能有许多用户拥有登录账号。为保护隐私和安全,多数用户只能访问一些文件,而不是所有文件。访问控制主要体现在下面两个方面:

谁有权限                                                                            

每份文件和目录都有一个拥有者(owner),他有权限对这些文件,目录进行任何操作。通常,用户创建一个文件后,即成为该文件的拥有者,但是也有例外

此外,预定义的用户组(group)也有访问文件的权限。用户组由系统管理员定义

最后,文件或目录也可以向系统中所有用户开放。这些既不是拥有者也非用户组成员的其他任何用户,都称为“其它人”(other)。

授于何种权限                          文件拥有者,用户组,以及所有其他人都可能有读,写,执行某些文件的权限。目录同样有这三种权限。

查看特定文件的访问模式,如例,可执行:

$ ls -l aaa
-rw-r--r-- 1 fuhaidong fuhaidong 8  3月 28 18:27 aaa

查看特定目录的访问模式,如例,可执行:

$ ls -ld One
drwxrwxr-x 3 fuhaidong fuhaidong 4096  5月 31  2013 One/

输出的信息中,最左边的10个字符是文件的访问权限,r(读),w(写),x(执行),与其他字母及 “-” 符号的组合,例如:drwxrwxr-x 。上述字母符号的意义如下:

位置 意义
1 文件类型-表示文件,d表示目录,l表示符号链接,p表示命令管道,c表示字符设备,d表示块设备
2 ~ 4 文件拥有者的读,写,执行权限
5 ~ 7 用户组读,写,执行权限
8 ~ 10                                            其他人读,写,执行权限

因此,示例:-rwxr-x--- 就表示文件可被拥有者读,写,执行;被用户组读,执行;禁止其他人访问。

你可能感兴趣的:(linux)