一、Linux目录结构
Linux目录结构和Windows目录结构从实现机制来看是完全不同的:一种不同体现在目录与存储介质(磁盘,内存,DVD等)的关系上,Windows一直是以存储介质为主的,主要以盘符(C盘,D盘...)及分区来实现文件管理,然后下一层才是目录,所以目录就显得不是那么重要了,除系统文件意外的用户文件放在任何地方任何目录都是没有多大关系的。UNIX/Linux恰好相反,UNIX是以目录为主的,Linux也继承了这一优良特性。Linux是以树形目录结构的形式来构建整个系统的,可以理解为一个用户可操作系统的骨架。无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说Linux的磁盘是“挂在”目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统,比如利用网络文件系统(NFS)载入某个特定目录等。
1.FHS标准
Linux的目录结构虽然复杂,但是它其中大部分目录结构是规定好了的,是符合FHS标准的,当你掌握好后,你的一切操作都会变得尽然有序。
FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数Linux版本采用这种文件组织形式。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。
FHS定义了两层规范:
第一层是规范了“/”下面的各个目录应该要放什么文件数据。例如/etc放置设置文件,/bin与/sbin则应该要放置可执行文件等等。
第二层是针对/usr及/var两个目录的子目录来定义。例如/var/log放置系统登录文件,/usr/share放置共享数据等等。
FHS详细规范可参考:FHS_2.3 标准文档
最直观的查看系统目录机构的方法是通过tree命令:
FHS是根据以往无数Linux用户和开发者的经验总结出来的,并且会持续更新,FHS依据文件系统使用的平凡与否以及是否允许用户随意改动(注意,不是不能,是能否随意),将目录定义为四种交互作用的形态,如下表所示:
可分享的(shareable) | 不可分享的(unshareable) | |
---|---|---|
不可变的(static) | /usr(软件文件) | /etc(配置文件) |
/opt(第三方软件文件) | /boot(开机及内核文件) | |
可变动的(variable) | /var/mail(用户邮件) | /var/run(程序相关) |
/var/news(新闻组) | /var/lock(文件锁相关) |
2.目录路径
使用cd
命令可以切换目录,在Linux里面使用.
表示当前目录,..
表示上一级目录(以.
开头的文件都是隐藏文件,所以这两个目录都是隐藏的,可以通过ls -a
命令查看隐藏文件),-
表示上一次所在目录,~
通常表示当前用户的“home”目录,使用pwd
可以获取当前所在绝对路径。
绝对路径:以根“/”目录为起点的完整路径;
相对路径:以当前目录“.”为起点,以要到的目录为终点,如:
usr/local/bin
;
相对路径实际山并没有加上当前目录的那个“.”,而是直接以目录名开头,因为usr目录是当前目录的子目录,;如果是当前目录的上一级目录,则需要使用“..”。
提示:在进行目录切换过程中,请多次使用Tab
键自动补全,可避免输入错误,连续按两次Tab
可以显示出全部候选结果
二、Linux文件的基本操作
1.新建
-
新建文件:
touch
,touch命令主要是来更改已有文件的时间戳的,但在不加任何参数的情况下,可以创建一个指定文件名的空白文件(不会覆盖已有同名文件):
-
新建目录
mkdir
,mkdir命令可以创建一个空目录,也可同时指定创建目录的权限属性:
2.复制
复制文件
cp
,cp命令复制一个文件或目录到指定目录。-
复制目录
cp -r
,直接使用cp
命令复制一个目录会报错,要成功复制需要加上-r
或-R
:
3.删除
-
删除文件
rm
,rm命令删除一个文件或目录。删除只读文件需要使用-f
参数进行强制删除:
-
删除目录
rm -r
,跟复制目录一样,如果要删除一个目录,也需要加上-r
或-R
参数:
4.移动和重命名
-
移动文件
mv
,mv命令用来移动文件,用法mv <filename> <dest-dir>
:
-
重命名文件
mv
,mv命令也可以用来重命名文件,用法mv <filename> <new-filename>
:
-
批量重命名
rename
,rename命令可以用来实现批量重命名。
rename
是先使用第二个参数的通配符匹配所有后缀为.txt
的文件,然后使用第一个参数提供的正则表达式将匹配的这些文件的.txt
后缀替换成.c
,这一点可以参考sed
命令。
5.查看
标准输入输出:当我们执行一个shell命令行时通常会自动打开三个标准文件:标准输入文件(stdin),默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向到终端的屏幕。进程从标准输入文件中得到的输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
-
使用cat,tac和nl命令查看文件
cat
:正序打印文件内容到标准输出,cat -n
可以显示行号。tac
:倒序打印文件内容到标准输出。-
nl
:添加行号并打印,这是比cat -n
更专业的行号打印命令。
-
使用more和less命令分页查看文件
more
:默认只打开一屏内容,终端底部显示当前阅读的进度,使用Enter
向下滚动一行,使用Space
键向下滚动一屏,按下h
显示帮助,q
退出。less
:集成了vi和more的功能。
-
使用head和cat命令查看文件
head
:查看文件头几行(默认10行,不足10行显示全部),结合-n
参数设置查看的行数。tail
:查看文件尾几行,结合-n
参数设置查看的行数,-f
参数实现不停地读取某个文件尾部的内容并显示。
-
使用file查看文件类型
6.编辑
在Linux下编辑文件通常会直接使用专门的命令行编辑器(比如:emacs,vim,nano)。