Linux知识心得09 -文件处理

今日内容

文件处理基础

linux系统的目录结构与作用

"""
1.linux与windows的目录结构对比
Windows 以多根的方式组织文件 C:\ D:\ E:Linux 以单根的方式组织文件 /

2.绝对路径与相对路径
绝对路径是从linux最底层的根(/)开始算
绝对路径:/a/b/c/22.txt

相对路径就是相对当前你所在路径开始算
相对路径:b/c/22.txt

3.一切皆文件的设计思想
因为linux将文件作为一切可用资源的使用接口.“一切资源”包括内存、磁盘、其他各种设备、进程间的通信,还有网络通信。这是一种简化的思想,把一切资源都简化为文件展示出来,将这些对资源的操作简化为对文件的操作。

4.文件的时间
ls -l 文件名 仅看的是文件的修改时间
Linux文件有三种时间,用stat查看 
例如:stat anaconda-ks.cfg
访问时间:atime,查看内容,用cat检测
修改时间:mtime,修改内容
改变时间:ctime,修改内容,修改权限等属性,凡是有改动都会变

5.文件的扩展名
// 方法一:
ls -l 文件名    //看第一个字符
-   普通文件(文本文件,二进制,压缩文件,电影,图片。。。),例如:/bin/ls
d   目录文件(蓝色),例如/home/
b   设备文件(块设备)存储设备硬盘,U盘,例如:/dev/sda
c   设备文件(字符设备)打印机,例如:终端/dev/tty1
s   套接字文件,例如:/run/rpcbind.sock 
p   管道文件,例如:/run/systemd/initctl/fifo
l   链接文件(淡蓝色),例如:/bin

ps:通过颜色判断文件的类型是错误的!!!

// 方法二:
[root@xxx ~]# file /etc/grub.conf

6.系统目录作用
[root@aliyun ~]# ls -l /  # /是所有linux操作系统的顶点目录,不像windows,每个分区都有一个顶点目录  total 64

# 1、命令相关目录
lrwxrwxrwx.  1 root root     7 Jul 11  2019 bin -> usr/bin # 普通用户使用的命令如ls、date
lrwxrwxrwx.  1 root root     8 Jul 11  2019 sbin -> usr/sbin # 管理员使用的命令

#2、启动目录
dr-xr-xr-x.  5 root root  4096 Feb 11 19:06 boot # 存放的启动相关的文件,例如kernel,grub(引导装载程序)
      
#3、系统文件目录
drwxr-xr-x. 13 root root  4096 Jul 11  2019 usr # 系统文件,相当于C:\Windows
lrwxrwxrwx.  1 root root     7 Jul 11  2019 lib -> usr/lib # 库文件Glibc
lrwxrwxrwx.  1 root root     9 Jul 11  2019 lib64 -> usr/lib64 # 库文件Glibc

#4、用户家目录
drwxr-xr-x.  5 root root  4096 Feb 24 16:42 home # 普通用户家目录
dr-xr-x---. 11 root root  4096 Jul  8 17:03 root # root用户的HOME

#5、配置文件目录
drwxr-xr-x. 79 root root  4096 Jul  8 17:04 etc # 配置文件,很重要,系统级服务配置文件都在这里
/etc/sysconfig/network-script/ifcfg-*,网络配置文件
/etc/hostname,系统主机名配置文件
/etc/resolv.conf,dns客户端配置文件
/etc/hosts,本地域名解析配置文件
/etc/fstab    系统挂载目录 开机自启动挂载列表
/etc/passwd  系统用户文件

#6、设备目录文件
drwxr-xr-x  19 root root  2960 Feb 15 17:22 dev # 设备文件,/dev/sda /dev/sr0
/dev/cdrom 和/dev/sr0,系统光盘镜像设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能源源不断地产生数据,类似于取款机,随时随地取钱
/dev/pts/0,虚拟的Bash Shell终端,提供给远程用户使用 0代表第一个终端 1代表第2个终端
以此类推
/dev/stderr,错误输出    
/dev/stdin,标准输入
/dev/stdout,标准输出

#7、虚拟文件系统:类似于小汽车的仪表板,能够看到汽车是否有故障,或者是否缺油了。
dr-xr-xr-x  89 root root     0 Feb 15 17:22 proc # 虚拟的文件系统,反映出来的是内核,进程信息或实时状态 
反映系统当前进程的实时状态
/proc/meminfo:内存信息
/proc/cpuinfo:cpu信息
    
#8、可变的目录与临时目录
drwxr-xr-x. 19 root root  4096 Jul 11  2019 var  #存放的是一些变化文件,比如数据库,日志,邮件...
/tmp,系统临时目录(类似于公共厕所),系统会定时删除该目录下长时间没有访问的文件。
/var,存放一些变化文件,如下
                    mysql:          /var/lib/mysql
                    vsftpd:         /var/ftp
                    mail:           /var/spool/mail
                    cron:           /var/spool/cron
                    log:            /var/log 系统日志文件存放目录
                                    /var/log/messages系统日志
                                    /var/log/secure系统登录日志
                    /var/tmp        临时文件(主要是程序产生的临时文件)

# 9、设备(主要指存储设备)挂载目录
drwxr-xr-x.  2 root root  4096 Apr 11  2018 media # 移动设备默认的挂载点
drwxr-xr-x.  2 root root  4096 Apr 11  2018 mnt # 手工挂载设备的挂载点
drwxr-xr-x.  2 root root  4096 Apr 11  2018 opt # 早期第三方厂商的软件存放的目录.
drwxrwxrwt. 10 root root  4096 Jul  9 15:16 tmp # 临时存放文件,类似于回收站,超过十天自动删除
    
#10、其他的一些重要目录
drwx------.  2 root root 16384 Jul 11  2019 lost+found # 孤儿文件
这个目录是使用标准的ext2/ext3档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时, 将一些遗失的片段放置到这个目录下。这个目录通常会在分割槽的最顶层存在, 例如你加装一颗硬盘于/disk中,那在这个系统下就会自动产生一个这样的目录『/disk/lost+found
lost+found这个目录一般情况下是空的,当系统非法关机后,如果你丢失了一些文件,在这里能找回来用来存放fsck过程中部分修复的文件的
lost+found:几乎每个被格式化过的Linux分区都会有,意外后找回的文件一般在这里面。
这个目录是储存发生意外后丢失的文件的。只有root用户才能打开

drwxrwxr-x   6 root root  4096 Feb 23 19:24 application
drwxr-xr-x  25 root root   660 Jul  8 17:00 run #  存放程序运行后所产生的pid文件
drwxr-xr-x.  2 root root  4096 Apr 11  2018 srv # 物理设备产生的一些文件
dr-xr-xr-x  13 root root     0 Feb 16 01:22 sys # 硬件设备的驱动程序信息

"""

bash shell对文件进行管理:

"""
1. 创建
2. 复制
3. 删除
4. 移动
5. 查看
6. 编辑
7. 压缩
8. 权限操作
9. 查找


"""

文件管理:

"""
1.基本命令

#1、查看当前所在的目录
[root@localhost ~]# pwd
/root

#2、切换目录
cd  绝对路径    如:cd /home/alice     cd ~alice
cd  相对路径    如:cd home/alice      cd ..
cd -      # 返回上次目录  
cd        # 直接回家,等同于cd ~
cd .      #保持当前目录不变
cd ..     #切换到当前目录的上一级目录

#3、查看目录树:需要先安装tree命令,执行yum install tree -y
tree -a 目录    # 显示所有文件,包括隐藏文件
tree -d 目录    # 只显示子目录
tree -L 1 目录  # -L 遍历目录的最大层数,-L后应该是大于0的正整数
tree -F 目录    # -F 在条目后加上文件类型的指示符号,例如会在显示出的目录后面加上左斜杠/

[root@localhost ~]# tree /a  
/a
├── b
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
├── bb
│   ├── a.txt
│   ├── b.txt
│   └── c.txt
└── bbbb

了解一下tree命令其他选项
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

#4、浏览
ls        # 默认浏览当目录
ls -l 目录 # 浏览目录下的子目录子文件名的详细信息
ls -al 目录 # 浏览的结果中包含隐藏文件
ls -dl 目录 # 查看目录

[root@localhost ~]# ll a.txt 
-rw-r--r--. 1 root root 0 12月 15 14:02 a.txt
# 各部分解析如下
-rw-r--r--. 权限,后面的点代表是否在selinux开启的情况下(enforcing或者permissive都属于开启)创建的文件
1               硬链接个数
root            属主
root            属组
0               文件大小,单位字节
12月 15 14:02   文件修改时间
a.txt           文件名字

# 权限的第一个为代表文件类型
格式         说明
-            普通文件(文本,    二进制,    压缩包,    图片,    日志等)    
d            目录文件
b            设备文件(块设备)存储设备硬盘    /dev/sda1,    /dev/sda2
c            设备文件(字符设备)打印机,终端    /dev/tty1,    /dev/zero
s            套接字文件,    进程间通信(socket)
p            管道文件
l            链接文件

注意: Linux文件扩展名不代表任何含义, 仅仅是为了运维人员便于识别

"""

文件管理之:创建/复制/移动/删除 (增删改查)

# 创建
"""
#1、=============创建文件:touch  

参数说明:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。

touch file1.txt             //无则创建,有则修改时间
touch /home/file10.txt
touch file{1..20}
touch Ego{n,N}.txt     //等价touch Egon.txt EgoN.txt
touch -t 2011111111 2018.rmvb 
修改文件时间 语法:
-t STAMP
         use [[CC]YY]MMDDhhmm[.ss] instead of current time
    
了解文件的三个时间参数:https://www.cnblogs.com/linhaifeng/articles/13324247.html

#2、=============创建目录:mkdir  
mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -v /home/{dir6,dir7}
    mkdir: 已创建目录 “/home/dir6”
    mkdir: 已创建目录 “/home/dir7”
mkdir -p /home/dir8/111/222     //包括其父母的创建

"""

# 复制
"""
#1、=============复制:cp   
cp 源 目标

选项与参数:
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r:递归持续复制,用于目录的复制行为;(常用)
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
-v:详细显示命令执行的操作。

cp -v install.log /home/dir1
cp -v install.log /home/dir1/aaa.txt
cp -r /etc /home/dir1
cp install.log /home/dir2
cp anaconda-ks.cfg !$
cp anaconda-ks.cfg /home/dir2
cp -r /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts .

cp -rv /etc /tmp
\cp -rv /etc /tmp

扩展用法:
cp -rfv /etc/hosts{,.old}
cp -rvf /etc/sysconfig/network-scripts/ifcfg-eth0{,.old}

关于-f参数的一个实验
[root@aliyum ~]# echo "1111" > /opt/a.txt
[root@aliyum ~]# echo "2222" > /t2/a.txt
[root@aliyum ~]# 
[root@aliyum ~]# chmod o=wx /t2
[root@aliyum ~]# chmod o=- /t2/a.txt 
[root@aliyum ~]# 
[root@aliyum ~]# ll -d /t2
drwxr-x-wx 2 root root 4096 Oct 20 00:07 /t2
[root@aliyum ~]# ll /t2/a.txt 
-rw-r----- 1 root root 5 Oct 20 00:07 /t2/a.txt
[root@aliyum ~]# 
[root@aliyum ~]# su - xxx
Last login: Tue Oct 20 00:05:43 CST 2020 on pts/2
[xxx@aliyum ~]$ cp /opt/a.txt /t2/a.txt  # 失败
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$ \cp /opt/a.txt /t2/a.txt  # 失败
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$ 
[xxx@aliyum ~]$ 
[xxx@aliyum ~]$ cp -f /opt/a.txt /t2/a.txt  # 成功
[xxx@aliyum ~]$ exit
logout
[root@aliyum ~]# cat /t2/a.txt 
1111
[root@aliyum ~]# 

========================================================
小知识:root用户使用cp (默认有一个别名 alias cp=‘cp -i‘) -i   显示提示信息(是否覆盖)
1. /bin/cp -rf /etc /tmp
2. # unalias cp                
    # cp -rf /etc /tmp  
3. # \cp -rf /etc /tmp
4.-f 参数是强制复制,比如你在A文件夹里面有个文件名叫B,然后你把C文件夹里面的另一个文件名叫B的复制到A里面,这个时候会照成冲突,然后会提示你要不要继续复制.加上-f 就不会提示你了.
你输入-f 还是会提示你的原因是
-------------------------------------------------------------
有的系统在安装的时候,cp - i 的 alias 就是 cp
也就是说你在执行cp的时候,其实是执行的cp -i 
取消掉cp的alias就好了 
==========================================
解决办法
unalias cp  \cp
==========================================
"""

# 移动
"""
# =============移动:mv   
mv 源 目标

选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

# mv file2 /home/dir3   将file2移动到/home/dir3里
# mv file4 file5        将file4重命名为file5,当前位置里的移动就是重命名

PS:mv 命令可以将文件移动到 /tmp文件夹下 可以当作删除使用。

"""

# 删除
"""
=============复制:rm

选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
-v : 详细过程

示例:删除/home/dir1       
# cd /home
# rm -rf dir1       

"""


文件管理之:查看文件内容

# 文本文件查看命令 (cat less more head tail grep)
"""
//系统的主日志文件:
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/passwd
/etc/shadow 
/etc/group
/etc/grub.conf
/etc/resolv.conf
/var/log/messages   
"""

# cat(由第一行开始显示文件内容)
"""
选项与参数:

-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
	包括控制字符(换行符)linux $  Windows ^M$
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符

========================================================
扩展知识:
dos2unix    将Windows格式的文件转换成Unix格式
unix2dos    将Unix格式的文件转换成Windows格式
例如
# unix2dos file1
# dos2unix file2
========================================================
"""

# less (一页一页翻动)
"""
less运行时可以输入的命令有:

空白键    :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]  :向上翻动一页;
/字串     :向下搜寻『字串』的功能;
?字串     :向上搜寻『字串』的功能;
n         :重复前一个搜寻 (与 / 或 ? 有关!)
N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q         :离开 less 这个程序;

"""

# more (一页一页翻动) 百分比
"""
在 more 这个程序的运行过程中,你有几个按键可以按的:

空白键 (space):代表向下翻一页;
Enter         :代表向下翻『一行』;
/字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f            :立刻显示出档名以及目前显示的行数;
q             :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

"""

# head (显示文件开头的n行 默认是10行)
"""
语法:head [-n number] 文件 

-n :后面接数字,代表显示几行的意思

"""

# tail (显示文件结尾的n行 默认是10行)
"""
语法:tail [-n number] 文件 

-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

"""

# grep (过滤)
"""
grep 针对文件内容进行过滤
# grep ‘root‘ /etc/passwd
# grep --color ‘root‘ /etc/passwd
# grep --color ‘^root‘ /etc/passwd
# grep --color ‘bash$‘ /etc/passwd

"""

文件管理之:修改文件内容 - vim

Linux知识心得09 -文件处理

"""
1.什么是vi/vim
	可以理解为windows下面的文本编辑器,比如记事本,比如word文档。
	vi编辑器通常被简称为vi,而vi又是visual editor的简称。它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。 
	vi 编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。没有菜单,只有命令,且命令繁多。
    
    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。连 vim 的官方网站也说 vim 是一个程序开发工具而不是文字处理软件。

2.为什么要用vim
	1)修改配置
	2)写脚本

3.vi与vim的区别
    vi不显示高亮颜色语法,vim显示高亮颜色语法。
    其他功能没有什么区别。	

4.vi编辑器的操作模式(??见上图显示??)
	#1、命令行模式:在编辑模式下按下ESC键返回命令行模式。
vi的默认模式。在这一模式中,所有的输入被解释成vi命令,可以执行修改、复制、移动、粘贴和删除正文等命令,也可以进行移动光标、搜索字符串和退出vi的操作等。
	#2、编辑/插入模式:输入a、i、o之一
在编辑模式中,可以往一个文件中输入正文。在这一模式下,输入的每一个字符都被vi编辑器解释为输入的正文。使用ESC键返回命令行模式。
a:进入插入模式并在光标之后进行添加。
i:进入插入模式并在光标之前进行插入。
o:进入插入模式并在当前(光标所在)行之下开启新的一行。
	#3、扩展/末行模式:输入冒号:
在一些UNIX系统上也叫最后一行模式。在这一模式下,可以使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等。要进入最后一行模式,需要在命令行模式中输入冒号(:),冒号这一操作将把光标移到屏幕的最后一行。

	4.1.1 在vi编辑器中光标的移动
	
	0 或功能键[Home]:这是数字『 0 』:移动到这一行的最前面字符处 (常用)
	$ 或功能键[End]:移动到这一行的最后面字符处(常用)
	
	4.1.2 掌握快速在屏幕中移动光标的位置的命令
	
	H	光标移动到这个屏幕的最上方那一行的第一个字符
    M	光标移动到这个屏幕的*那一行的第一个字符
    L	光标移动到这个屏幕的最下方那一行的第一个字符
    
    4.1.3 掌握快速移动光标在文件中的位置的命令
    
    G	移动到这个档案的最后一行(常用)
    nG	n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
    gg	移动到这个档案的第一行,相当于 1G 啊! (常用)
    
    4.2 在命令行模式下删除与复制的操作
    
    x, X	在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
    nx	n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
    dd	删除游标所在的那一整行(常用)
    ndd	n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
    d1G	删除光标所在到第一行的所有数据
    dG	删除光标所在到最后一行的所有数据
    d$	删除游标所在处,到该行的最后一个字符
    d0	那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
    yy	复制游标所在的那一行(常用)
    nyy	n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
    y1G	复制游标所在行到第一行的所有数据
    yG	复制游标所在行到最后一行的所有数据
    y0	复制光标所在的那个字符到该行行首的所有数据
    y$	复制光标所在的那个字符到该行行尾的所有数据
    J	将光标所在行与下一行的数据结合成同一行
	c	重复删除多个数据,例如向下删除 10 行,[ 10cj ]
    
    4.3 粘贴命令
    
     p, P	p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)	
     
     4.4 复原和重做命令
     
     u	  复原前一个动作。(常用)
	[Ctrl]+r	重做上一个动作。(常用)
	
	4.5 在拓展模式下常用的命令:
	
	w	将编辑的数据写入硬盘档案中(常用)
    :w!	若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
    :q	离开 vi (常用)
    :q!	若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
    :wq	储存后离开,若为 :wq! 则为强制储存后离开 (常用)
     注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
     
"""

Linux知识心得09 -文件处理

上一篇:linux内核可加载模块编程简单入门


下一篇:linux 磁盘扩容-根目录