在进入文件操做以前,首先引入Linux中的一个重要概念:Linux下一切皆文件。mysql
这句话很好理解,就是它的字面意思。在Linux系统中,目录是一种文件,快捷方式是一种文件,硬件设备(硬盘,U盘,鼠标,光驱;打印机等等)是文件,连命令也是文件。这是由于Unix哲学(Unix philosophy)中将文本流做为程序之间的通用接口,而文本流的载体天然就是文件了。linux
Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.sql
一个程序只作一件事,并作好。程序要能协做。程序要能处理文本流,由于这是通用的接口。数据库
--quoted in A Quarter Century of Unixide
因此Linux中所谓的扩展(extension)只是为了帮助了解该文件的用途,不会发生改了扩展名程序就运行不了的状况(控制台环境下,图形界面状况下,linux就是一个简易版Windows)。一个linux文件能不能被执行,只与执行者拥有的权限和文件内是否有可被对应程序执行的数据有关,与文件名根本一点关系都没有。函数
文件是linux系统的基石,而linux又有众多的发行版,若是每发行版都用本身的想法来配置文件放置的目录,那换一个发行版就和换了一个系统同样。在早期的UNIX系统中,各个厂家各自定义了本身的UNIX系统的文件系统构成,局面比较混乱。有鉴于此,Linux在面世不久就开始了对文件系统进行标准化的活动,通过多年的发展,有了如今的 Filesystem Hierarchy Standard (FHS) 标准,目前的最新版本为2004年发布的2.3 (可前往 http://www.pathname.com/fhs/ 查看)。spa
Linux 的文件系统采用了级层式的树状目录结构,其中最上层是根目录 (root, /), 其余全部目录都包含在根目录中。目录树(directory tree) 结构示意图以下:
blog
目录树起始点为根目录 (root, /), 除了表示根目录,"/" 同时也是目录名的分隔符。好比到达patrick这个目录的路径为 /home/patrick,其中第一个 "/" 表示根目录,第二个 "/" 则是用来分隔home目录和patrick目录。接口
注:root这个词在linux中的意义不少,若是以帐号的角度看,所谓的root指的是 “超级用户” 或者叫 “系统管理员” 的身份,这里以 “目录” 的角度看,root指的是根目录。进程
上图中列出了根目录下的五个子目录,事实上FHS规定了13个根目录下的次级目录,并对其中 /var 和 /usr 两个目录行进了更详细的定义,这里只是简要说明一下,有个大体概念就好了。
/usr: 放置Unix软件资源 (Unix Software Resource), 全部系统默认的软件 (distributions 发布者提供的软件)都放置在这里,相似Windows中的 "C:\Windows\ + C:\Program files\" 综合体,通常来讲是占用硬盘容量最多的目录。
/var: variable的缩写,放置系统运行产生的文件,好比log,mysql数据库的文件等。
/bin: 放置可以被全部用户使用的可执行文件 (binary 二进制文件), 咱们知道系统其实仅认识且可执行的是二进制文件。
/sbin: 放置重要的系统文件,仅供root用户使用, 与bin相比,多出来的那个 s 表明 superuser
/boot: 放置开机会用到的文件
/dev: 放置设备文件 (devices)
/etc: 放置各种配置文件 (etcetera 附加物)
/home: 放置出 root 外的全部用户主目录,~表明当前登录用户的主目录, ~user1表明user1的主目录,就至关于/home/user1/
/root: root的主目录
/lib: 放置开机时会用到的函数库,以及 /bin 和 /sbin 下指令会呼叫的函数库
/media: 当你插入一个可移动设备时(U盘,SD卡,DVD等),系统会经过这个目录下对应的子目录来读取设备,这就是所谓的挂载 (mount)
/mnt: 挂载 (mount) 的缩写,这个目录是/media的前身,有了/media以后, 这个目录常就被用于临时挂载了
/opt: 用于放置加载项 (add-ons), 也就是第三方软件(非distribution提供的),不过习惯于放在 /usr/local 下
/proc: 放置系统运行信息,如进程信息 (process) , 他的数据都放在内存中,因此不占用任何硬盘空间
/tmp: 放置临时文件 (temporary),应按期清理,不可放置重要文件,FHS甚至建议在每次开机时将/tmp目录清空
事实上,每一个放行版针对FHS都有异同,毕竟FHS只是一个参考标准,但差别有限。