【明目标】
- 掌握Linux的文件系统的目录结构
- 掌握绝对路径和相对路径
- 理解路径中的特殊代词,如根目录,用户家目录,当前目录和父目录代词
-
【探情景】
一、在网络运维中,经常需要做以下的任务:
备份配置文件到家目录
- 查看日志文件,并做备份
- 将光盘ISO文件挂载到文件系统
二、转化为学习任务
【学新知】
参考资源
- 菜鸟教程 [ https://www.runoob.com/linux/linux-tutorial.html ]
- 参照对照 Windows的文件系统和文件类型来学习
一、Linux的文件系统树
(二)Linux的文件树结构
Linux是单根文件系统树,特点有:
- 只有一个根目录,是
/
,是固定的。相对来说,Windows是磁盘盘符,如c
盘等。 - 它的子目录也是约定好的,有各自的用途
- 文件系统 >磁盘分区。磁盘或分区都是mount挂载到一个文件系统的目录下。
- 存放数据的目录建议单独分区。如
/home, /var,/tmp
- 而类似
/dev,/etc,/usr
这些都是与/
目录在一起的。
(三)常用的二级目录
用户主目录
**/home**
和**/root**
在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。而系统管理员root的用户主目录在 /root。
配置文件目录
**/etc**
这个目录用来存放所有的系统管理所需要的配置文件和子目录。/var 和 /tmp
/var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。/tmp 是临时目录,用来存放临时文件的。
/usr 和 /opt
usr 是 unix shared resources(共享资源) 的缩写,用户通过rpm二进制安装的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。里面有重要的子目录,包括 /usr/bin; /usr/sbin; /usr/lib如果用户自定义安装,源码编译安装,可以用 /opt目录。
/mnt 和 /media
/mnt, 让用户临时挂载别的文件系统的,如挂载同磁盘的Windows的文件系统目录,进行查看。包括光驱镜像文件。
可移动磁盘(U盘、光盘等)也可以挂载到 /media目录下。/dev 和 /proc /sys
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
proc 是 Processes(进程) 的缩写,/proc 是虚拟文件系统,它是系统内存的映射,存储的是当前内核运行状态,我们可以通过直接访问这个目录来获取系统信息。
sys 一个文件系统 sysfs , 该文件系统是内核设备树的一个直观反映。/boot 和/run 以及其他
boot 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
(三)一切皆文件
在Linux中,一切都可以认为是文件
- 普通文件,包括链接文件
- 目录是文件
- 设备也以文件形势存取
- 文件是以文件系统组织起来的
【仿示范】
一、使用文件操作命令
(一)命令提示符
在shell中,[root@localhost ~]#
- root@localhost 是指 在主机名为localhost的主机上, 当前登陆用户是root
- ~ 的当前所在目录路径,随着目录切换而变化。 ~是当前用户的主目录的指代。
- 如果root登陆, ~对应的路径是 /root
- 如果是非root用户,如sdxy, ~对应的是/home/sdxy
- 提示符 # 后面是root用户权限的命令。 非root用户的提示符是 $
- 在#(或$)后面可以输入指令,回车执行,并返回结果
二、浏览命令
pwd
显示当前所处的路径。是print work directory的首字母缩写
```shell [root@localhost ~]# pwd /root [root@localhost ~]#
[root@localhost ~]# su sdxy # 使用 su 切换用户 [sdxy@localhost root]$ pwd # gxsd@ 表示当前用户变了, root] root表示路径还是 /root /root [sdxy@localhost root]$ cd # 直接cd 不加目的目录,默认到当前用户的主目录 [sdxy@localhost ~]$ pwd /home/gxsd [sdxy@localhost ~]$
2. `cd `切换目录路径
(英文全拼:change directory) , 这是用来变换工作目录的命令。
```perl
cd [相对路径或绝对路径]
## 切换到根目录 /
[root@localhost ~]# cd /
[root@localhost /]# pwd
/
## 切换到用户主目录, cd后面留空
[root@localhost /]# cd
[root@localhost ~]# pwd
/root
[root@localhost ~]#
## 切换到用户主目录 ~
[root@localhost ~]# cd ~
[root@localhost ~]# pwd
/root
[root@localhost ~]#
## 切换到上级目录 ..
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd ..
[root@localhost /]# pwd
/
[root@localhost /]#
## 相对路径中 当前目录 ./
[root@localhost ~]# cd /
[root@localhost /]# pwd
/
[root@localhost /]# cd ./
bin/ dev/ home/ lib64/ mnt/ proc/ run/ srv/ tmp/ var/
boot/ etc/ lib/ media/ opt/ root/ sbin/ sys/ usr/
[root@localhost /]# cd ./etc/
ls 和 ll , 列出目录及文件名
list files ,在Linux系统当中, ls 命令可能是最常被运行的。
## 追加 --help 参数, 查询 命令 ls的用法帮助
[root@localhost ~]# ls --help
用法:ls [选项]... [文件]...
##参数的含义
-l, 使用较长格式列出信息。
-a, --all 不隐藏任何以. 开始的项目
-d, 显示目录自身,不是它的子目录或子文件
因为
ls -l
非常常用, 可以简写为ll
。注意不是数字1,是字母L的小写。 ```shell [root@localhost ~]# cd /home/ [root@localhost home]# ll ### ll ==> ls -l 以每行一个目录(文件)列表显示。显示具体属性。 总用量 4 drwx———. 15 gxsd gxsd 4096 3月 15 00:38 gxsd [root@localhost home]#
[root@localhost home]# ls -a ## 显示所有子目录和文件, 横排文件名。 . .. gxsd [root@localhost home]# ll -d ## 显示目录自身的属性,不是子。。 drwxr-xr-x. 3 root root 18 1月 23 03:14 . [root@localhost home]#
三、变更类命令<br />(一)新增一个目录<br />`mkdir [-p] 目录 `
```shell
[root@localhost ~]# pwd
/root
[root@localhost ~]# mkdir logs ## 在当前目录下 新建 logs目录
[root@localhost ~]# ll -d logs/ ## -d, 只显示父目录自身,不显示内容
drwxr-xr-x. 2 root root 6 3月 15 01:44 logs/
[root@localhost ~]#
## 切换到logs目录下,创建2022的年份子目录,在其中再创建03的月份目录,
## 可以使用 mkdir -p 父子目录一起创建
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd logs/
[root@localhost logs]# pwd
/root/logs
[root@localhost logs]# mkdir -p 2022/03
## 查看下
[root@localhost logs]# ll -R ## -R的递归查看
.:
总用量 0
drwxr-xr-x. 3 root root 16 3月 15 01:46 2022
./2022:
总用量 0
drwxr-xr-x. 2 root root 6 3月 15 01:46 03
./2022/03:
总用量 0
[root@localhost logs]#
(二)删除一个目录。 删库跑路??用法:rmdir [选项]... 目录...
删除指定的空目录。
## 将刚创建的目录删除
[root@localhost logs]#
[root@localhost logs]# rmdir 2022/
rmdir: 删除 "2022/" 失败: 目录非空
[root@localhost logs]# rmdir -p 2022/03/
[root@localhost logs]# ll
总用量 0
[root@localhost logs]#
(三)新增一个文件
touch 命令
[root@localhost logs]# touch abc.txt
[root@localhost logs]# ll
总用量 0
-rw-r--r--. 1 root root 0 3月 15 02:03 abc.txt
echo 重定向
[root@localhost logs]# echo ' ' >> abc2.txt
[root@localhost logs]# ll
总用量 4
-rw-r--r--. 1 root root 2 3月 15 02:05 abc2.txt
-rw-r--r--. 1 root root 0 3月 15 02:03 abc.txt
vim 编辑器 ```shell [root@localhost logs]# vim abc3.txt [root@localhost logs]# ll 总用量 4 -rw-r—r—. 1 root root 2 3月 15 02:05 abc2.txt -rw-r—r—. 1 root root 0 3月 15 02:09 abc3.txt -rw-r—r—. 1 root root 0 3月 15 02:03 abc.txt
(五)删除文件<br />默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定<br />的目录,以及其下所有的内容。
```shell
[root@localhost logs]# rm --help
用法:rm [选项]... 文件...
Remove (unlink) the FILE(s).
复制命令
cp -rf /etc/hosts ~/2022/03/
【做任务】
任务1. 将/etc/hosts配置文件 备份到我们的家目录/root/2022/03/.
- 浏览找到/etc/hosts的配置文件
- 目的目录在哪里? 是否要创建
- 复制过来。
【拓技能】
【共复盘】
Shell 浏览和查看 Linux的文件树
[sdxy@localhost ~]$ pwd ### 返回当前所在是目录路径
/home/sdxy
[sdxy@localhost ~]$ cd /
[sdxy@localhost /]$
[sdxy@localhost /]$ pwd
/
[sdxy@localhost /]$ ls ### 列表显示 当前目录下的所有子目录,文件
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr