Linux 的目录结构从1993 年开始,之后制定了文件系统层次标准(Filesystem Hierarchy Standard,FHS),如今Red Hat 和Ubuntu 以及BSD 系列都一直在遵行FHS 标准,比如现在Ubuntu 使用/media 来挂载同硬盘上的NTFS 分区和可移动设备,当然,原来熟悉Linux 的话,/mnt 仍然是存在的
这种目录结构布局的一致性会对开发人员极为有利(这些类UNIX 操作系统而言),就算是作为知道这个秘密的你,也无法充分的利用它。因为只有程序员才知道软件、脚本和其他工具的确切位置,作为管理员,显然会对系统管理和修复得心应手。想要看看实在的东西了吧,光说还是很抽象,打开终端(Applications->Accessories->Terminal,如果默认是中文的话,应用程序->附件->终端;当然,喜欢快捷键的话,使用Alt+F2 键入gnome-terminal
如果默认是Xfce 的话应该是xfce4-terminal),不在这里臭美了,解释一下命令提示符:
UserName@HostName : Path $
这个里面的学问大了,用户名@ 主机名: 路径名$ 。@的意思很明显吧,就是说这个用户是隶属于这个主机的,然后: 指的是工作路径,一般刚刚打开的终端,初始位置是用户的个人目录,也叫做宿主目录,一般都是在/home/UserName ,为了简洁明了,于是乎就有了几个专有符号来指代特殊位置,比如这个宿主目录是可以使用~ 来替代,还有两个符号要事先说明一下,分别是. 和.. 也许早在WinRAR 中你就发现我的空白文件夹中怎么还有文件呢?恩,在Windows 中的疑惑,Linux 很容易便可以解决: . 表示的是当前目录.. 表示的是父级目录。然后还有一个概念的问题,路径分两种,绝对路径和相对路径,恩,没错,如果使用. 或者.. 来作为目录的话,那就是相对路径啦,反之就是绝对路径,不难理解吧。最后就是那个美元符号了,别想多了,只是一个提示用户可以输入命令的标志而已,而且只有普通用户才是这样子的。
如果你搞到了超级管理员权限,那就一定也要来看看终端的情况哦~
root@HostName:~#
恩,没错,用户名就是root,主机名如果不修改多是Linux 发行版的名称,默认路径是~ 最后的命令提示符是# 表明了当前用户是个超级管理员,最牛的执行权限,想干任何事情都是可以的!!包括删除整个/ 都是一点阻挠没有的操作~这就就不像Windows 下那么多费劲的东西了,不过,不是很精通基础命令的时候,使用root 用户绝对是见非常危险的事情,足够让你很后悔的!所以,先来看看下面的内容再来动手吧
回到一开始的问题上面来,想要看看目录结构,恩:
$ ls /
解释一下上面的命令, $ 表示使用命令的级别,如果是# 表示需要用户管理员权限,$ 就是普通用户了,相信看过上面的文章,这些东西很容易就可以理解吧,之后将不再做解释
之后是命令本身,ls 很形象的就可以让大家想到一个单词list(列表),后面接着的/表示的是整个文件目录的根,就像树一样,都是从根(/ 也就是根目录)向上,然后发展出繁多的树枝(子级目录)和叶子(子级文件)
然后我们来看一下几个经常被使用到的树枝把(根目录下的常用目录,也就是文件夹)
/ 根目录,所有的数据都建立在它之上
/bin 基本命令存放在这个目录中
/boot Linux 启动引导文件的位置,还有内核镜像文件,有空研究一下grub,会有新发现哦
/dev 存放设备文件,类UNIX 的操作系统都是采取一切对象皆文件的形式
/etc 多数的配置文件都在这个目录中
/home 普通用户的个人目录的上级目录
/lib 共享库存放地,类UNIX 操作系统都是模块化的方式,经量多的来共享有相同共性的东西
/lost+found 看英语也能知道这个是干啥用的,不过只有root 才能访问这个目录
/media Ubuntu 默认用来挂载同一块硬盘上的Windows 分区或者移动存储介质
/mnt 原Linux 默认挂载目录的位置,可挂载远程文件系统等等
/opt 附加软件包安装目录
/proc 内核和进程文件目录,都是虚拟的文件
/root 超级管理员的家目录,也就是root 的宿主目录
/sbin 系统命令的存放处,多数只有root 可以使用,不过可以委派给某个用户也来使用
/srv 系统服务数据文件,当前正在处理的多是在/var 目录下
/tmp 临时文件
/usr 次重要的文件层次结构,内容很复杂
/var 可变数据,缓冲文件等
如果详细的看的话~
/sbin 里面的命令多是静态链接的,不依赖/lib 和/usr/lib 里面的软件库
/dev 文件数目会很多,都是系统可能会使用到的挂载点,也就是说有很多是暂时不用的了,比如/dev/hda 表示第一块IDE 硬盘,第二块为hdb;如果是SCSI 接口的驱动器,比如光驱/dev/scd0,还有串口COM1表示为/dev/ttyS0;还有打印机/dev/lp0等等
/etc 下面的东西就多了去了,绝大多数的配置文件都在这个地方,比如几个跟操作系统密切相关的: fstab(文件系统表,对应着每一个与系统相连接的存储设备,还有一些选项)、inittab(系统初始化表,定义了运行级别,开机默认使用图像界面还是文字以及拨号远程访问等等操作)、modprobe.conf(加载内核模块来启动硬件所使用的指令和选项,在引导的时候被使用,允许手动修改)、passwd(一看就知道,密码文件,记录了用户账户信息)、printcap(系统打印机数据库)、shells(shell 命令行列表)
/home 这里面的东西对于Ubuntu 用户来说便是最重要不过的了,一般给初学者的建议都是将这个目录独立分区,从而保证不会受到意外将数据损坏
/proc 的内容是直接从内存中创建的,只有在运行的时候才会存在,由内核提供信息而产生。通过”反射”将数据传递给/proc/sys 文件,使得可以动态更改Linux 内核的运行行为,具体来说
/proc/cupinfo CPU 系列、类型、速度
/proc/net/dev 活动的接口信息
/proc/net/route 路由信息
/proc/net/netstat 网络统计信息
/proc/devfs 设备文件系统信息
/proc/udev 在Ubuntu 6.10以后,取代了devfs 的功能,实现了一种管理系统即插即拔的方法
/proc/devices 是如今的Ubutnu 10.10 的设备管理文件,完全取代了之前的呃devfs和udev 文件
/proc/version 内核版本信息,当然在/boot/下面看源码文件也能获取
/proc/uptime 系统性能信息,例如正常运行时间
/proc/stat 其他统计信息,例如CPU 负载、交换文件利用率、进程信息等等
/usr 包含了所有用户使用的软件应用程序、库和其他类型的共享数据,并持有XWindow、手册、共享文件、软件包文档以及本地构建和安装的整个目录树/usr/local,其实/usr/X11R6是从/usr/bin 下的一个链接,X11R7的确是一个单独的目录
/tmp 如果需要清楚里面的陈旧文件,使用命令tmpwatch(删除10天没有使用的任何文件),具体的配置可以修改/etc/crontab 文件,使用浏览器指定打开的文件(其实是下载在了这个地方)
/var 系统服务用户缓冲和记录日志的子目录,多是可变的数据文件,例如打印脱机队列、接收的邮件等等;当然,这个目录还有很多重要的服务,例如FTP、Web Server 等等