Linux目录结构
- 目录与存储介质(磁盘,内存,DVD 等)的关系--先有鸡还是先有蛋?
- windows
- 以存储介质为主的,主要以盘符(C 盘,D 盘…)及分区的来实现文件管理。
- 除系统文件之外的用户文件放在任何地方任何目录也是没有多大关系
- Linux
- 与windows相反Linux系统以目录为主, Linux 是以树形目录结构的形式来构建整个系统的
- 虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。
- windows
FHS 标准
- 什么是FHS?
FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。 直观展示
使用如下shell命令可以在terminal中直观的感受上图
sudo apt-get update #更新软件库 sudo apt-get install tree #安装程序tree tree / -L 1 #查看 / 1级目录下的树形图
FHS 把目录定成四种交互形态:
- 目录路径
- 路径
- 为什么要有路径?
路径是用来定位目录(目录本质上也是文件)和文件的方法。 - 路径的相关命令
- 使用 cd 命令可以切换目录
- 在 Linux 里面使用 . 表示当前目录, .. 表示上一级目录(**注意,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件)。
- -表示上一次所在目录,~通常表示当前用户的”home”目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
相关命令演示:
- 为什么要有路径?
- 绝对路径
以根目录 / 为起点的路径,代表目录和文件的完整路径。比如: /usr/local/bin - 相对路径
以当前目录为起点,以目标目录为终点。比如:./a/b或者 ../../usr/local/bin
- 路径
- 什么是FHS?
- 目录与存储介质(磁盘,内存,DVD 等)的关系--先有鸡还是先有蛋?
- 文件基本操作
- 新建
- 新建文件 touch
- 新建文件夹 mkdir
- 复制
- 复制文件 cp
- 复制目录 -r
- 删除
- 删除文件 rm
- 删除目录 -r
- 强制删除 -f
- 移动文件与文件重命名
- 移动命令 mv
- 重命名命令
- 利用mv命令巧妙重命名
- 批量重命名 rename
- 利用mv命令巧妙重命名
- 移动命令 mv
- 查看文件
- 查看文件的命令
- cat
- tac
这两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示,tac倒序显示。加上参数 -n可以显示行号。 - nl
添加行号并打印,这是个比cat -n更专业的行号打印命令。
常用参数如下:
-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号(“cat -n”就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位) - more
- less
“man”手册内部就是使用的 less 来显示内容。其中more命令比较简单,只能向一个方向滚动,而”less”为基于”more”和”vi”开发,功能更强大。 - head
- tail
head只查看文件的头几行,tail只查看文件的末尾几行。默认为10行。通过参数-n num指令可以指定打印num行。比如:head -n 1 log。打印log文件的第一行。
值得一提的是,该命令常用于动态日志监控。
- 查看文件的命令
- 查看文件类型 file
- Linux中不是以后缀名来区分文件类型的,而windows则是以后缀来区分。
- 编辑文件
使用文本编辑器vim\emacs\nano。
有关文本编辑器的相关知识,会单独开几篇博客去讲解。
- 新建
本章节大致介绍了一些Linux目录的概念和一些文件的基本操作。如果对文件的基本操作有疑问的,可以通过man命令,查阅手册,毕竟别人解释再多也不如手册权威与详细。
补充一些问题的答案
- 什么是标准输入输出?
标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。