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 ->  可同时打开多个文档