Linux——基础二、文件系统
一、Linux的文件系统层次结构
1、概念:
Linux系统一切皆文件!Linux系统中的所有文件都存储在文件系统中,整个文件系统是一棵颠倒过来的树形结构,这个结构被称作文件系统层次结构。根目录(/)在顶部,下方延伸出来的子目录是这棵树的分支,且从根目录到下面的任一文件有且仅有一条路径。
注意:/这个字符还用作文件名中的目录分隔符,例如/etc/issue这个文件,第一个/字符代表根目录,第二个/字符代表etc和issue两个文件之间的分隔符,且issue一定是/etc文件下面的一个子目录。
2、重要目录:
- /usr -> 存放普通用户命令(/usr/bin)、供root用户使用的系统管理命令,(/usr/sbin)、及安装的软件等数据。
- /etc -> 存放系统服务的配置文件。
- /dev -> 存放设备文件,例如硬盘、cpu、网卡等数据。
- /home -> 普通用户的家目录(或主目录),存放普通用户的配置文件。
- /root -> root用户的家目录(或主目录),存放root用户的配置文件。
- /boot -> 存放系统启动过程所需的文件,系统内核等。
- /var -> 存放动态变化的文件,例如日志文件、缓存文件、数据库等。
- /tmp -> 存放临时文件,10天内未访问更改的文件将自动删除。
- /run -> 存放上一次系统启动过的进程文件。
3、其中的4个链接文件:
当查看这些链接文件的时候,系统会自动显示指向的对应文件内容。
- /bin -> /usr/bin -> 存放普通用户使用的命令。
- /sbin -> /usr/sbin -> 存放root用户使用的命令。
- /lib -> /usr/lib -> 库文件
- /lib64 -> /usr/lib64
4、文件系统的路径:
绝对路径:以“/”开头的所有路径都是绝对路径,这里的“/”指的是根分区,而不是文件之间的分隔符,如:/etc/crontab,每一个文件有且仅有一个绝对路径
相对路径:不以“/”开头的路径都是相对路径,如:etc/crontab
二、文件相关的命令:
1、基础命令:
1、touch命令——作用:创建一个空文本文件
[root@localhost ~]# touch /opt/abc
[root@localhost ~]# touch abc
2、dd命令——作用:创建一个大容量空文件
dd if=/dev/zero of=/test.file bs=1M count=100
3、mkdir命令——作用:创建文件夹
mkdir -p 创建多级目录
[root@localhost ~]# mkdir aaa
[root@localhost ~]# mkdir /aaa
[root@localhost ~]# mkdir -p /aaa/bbb/ccc
[root@localhost ~]# cd /aaa/bbb/ccc
[root@localhost bbb]# pwd
/aaa/bbb/ccc
4、cp命令——作用:复制文件
cp -r 复制文件夹(-r递归复制,也就是将当前文件夹里面所有子目录也复制过去)
注意:当复制的旧文件与新文件重名时,旧文件将覆盖新文件。
[root@localhost opt]# cp -r /aaa/ /opt/
[root@localhost opt]#
5、mv命令——作用:移动文件,重命名文件
[root@localhost ~]# mv /aaa /mnt
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
aaa
[root@localhost mnt]# mv aaa bbb
[root@localhost mnt]# ls
bbb
6、rm命令——作用:删除文件
rm -r 删除文件夹
rm -f 强制删除,不提示删除确认
[root@localhost /]# rm -f abc
[root@localhost /]#
[root@localhost /]# rm -rf /aaa
[root@localhost /]#
7、echo命令——作用:将命令后面的参数显示出来
$符号后面跟系统变量,这个变量可以是大写也可以是小写。
[root@localhost /]# echo $HOSTNAME
localhost.localdomain
[root@localhost /]# echo date
date
[root@chenglu213 /]# echo `date`
p 8 11:36:21 CST 2020
2、通配符的使用:
*号简单模式匹配 -> 由0个或更多字符组成的字符串
?号简单模式匹配 -> 任何1个字符
{ }大括号 -> 批量执行命令,可以连续使用或者嵌套使用
[root@localhost /]# echo file{a{1,2},b,c}.log
filea1.log filea2.log fileb.log filec.log
[root@localhost /]# echo file{a,b,c}{1..3}.log
filea1.log filea2.log filea3.log fileb1.log fileb2.log fileb3.log filec1.log filec2.log filec3.log
``反引号命令替换
[root@localhost /]# echo today is `date +%X%x`
today is 12:59:11 PM11/13/2021
\反斜杠转意字符
[root@localhost /]# echo the hostname is \&HOSTNAME
the hostname is &HOSTNAME
由单引号括起来的字符都作为普通字符出现
由双引号括起来的字符,除$、反引号(`)和反斜线(\)仍保留其特殊功能外,其余字符均作为普通字符对待。
3、重定向操作符:
一个>是重定向符,作用:覆盖写入,文件里的原有数据不保留
两个>>是追加重定向符,作用:追加写入,不覆盖已有内容,直接写在文件末尾,原数据保留
[root@localhost /]# touch err.txt
[root@localhost /]# systemctl restart unbound
Failed to restart unbound.service: Unit not found.
[root@localhost /]# systemctl restart unbound 2>err.txt
[root@localhost /]# cat err.txt
Failed to restart unbound.service: Unit not found.
在linux中,一个运行的程序(或称为进程)需要通过shell从键盘读取输入并将输出写入到终端或者文件。进程使用一个名为文件描述符的编号通道来获取输入并发送输出。所有进程在开始时至少需要具有三个文件描述符:标准输入(通道0)、标准输出(通道1)、标准错误(通道2)。
4、管道符 | 的使用:
管道是一个或多个命令的序列,由管道字符 | 分隔。作用是:将前面的执行结果丢到管道符后面的命令去执行。也可以形象地这么理解:数据从一个进程经管道“流向”另一个进程。
注意:管道符前面有重定向符号时,管道符后面要加上一个tee命令
[root@chenglu etc]# ls | grep ssh
ssh
[root@localhost /]# ls -l > 1.txt |tee less
三、vim文本编辑器:
Linux有一个简易的文本编辑器,叫做vi编辑器,vim编辑器是vi的升级版,它具有更高的效率和可配置性,所以我们通常用vim来编辑文本文件。
功能:
1)可以查看文本文件内容
2)可以编辑文本文件内容
3)可以同时打开多个文件进行编辑
4)可以筛选文件内容
Vim有四种模式,分别是:插入模式、命令模式、末行模式和可视化模式。
1、插入模式:
i/a/O/o -> vim进入编辑状态
- i -> 在当前光标处进行编辑
- a -> 在当前光标下一格进行编辑
- O -> 在当前光标上一行插入一个空行进行编辑
- o -> 在当前光标下一行插入一个空行进行编辑
2、命令模式:
- Esc->vim退出编辑状态(插入模式)
- yy(复制一行)
- nyy(复制n行)
- p(粘贴)
- dd (删除一行)
- ndd(删除n行)
- u -> 撤销上一次操作
- U -> 撤销之前所有的操作
- 大写的G -> 光标跳到末行
- 两次小写的g -> 光标跳到首行
3、末行模式:
- :(w/q/wq/wq!=x) -> 退出vim(w保存,q退出)
- :set nu -> 显示行号
- :set nonu -> 不显示行号
- /word -> 从上而下查找某个单词内容
- ?word -> 从下而上查找某个单词word
- N -> 从尾至头进行查找
- n -> 从头至尾进行查找
- :%s/XXX/YYY/g -> 将文档中所有的XXX替换为YYY
4、可视模式:
- V(大写的) -> 用光标选择 -> Y
Linux中修改文本文档的两种方式:
1)echo “XXX” > 、 >> filename
2) vim 或 vi
vim 1.txt 2.txt 3.txt -> 可同时打开多个文档