第2章 磁盘与文件管理
少年的肩膀,就该这样才对嘛,什么家国仇恨,浩然正气的,都不要急,先挑起清风明月、杨柳依依和草长莺飞,少年郎的肩头,本就应当满是美好的事物啊
磁盘管理
windows和Linux磁盘管理的区别
windows资源管理方式
- 系统一般安装在C盘
- C盘下的”Windows”目录是操作系统的核心
- C盘下的”Program Files”目录下安装软件
- C盘下的”用户”目录是所有的用户,包括超级管理员也在其中
- windows操作系统分为C盘、D盘、E盘等,每个磁盘下采用文档树的形式组织文件
Linux资源管理方式
linux操作系统采用一个文档树来组织所有的资源。
这棵树的根目录的名字叫做:/
/ 是一个目录名字,是linux操作系统中所有文件的根。
/ 目录下又有很多其他的子目录,比如:dev home lib …..
比较重要的几个目录概述:
- /bin目录:包含一些常用的二进制可执行文件,如cat、ls、mkdir、rm等。这些二进制文件在系统运行时始终可用,可以被任何用户运行。
- /etc目录:包含了系统的大多数配置文件,如网络配置、用户登录信息、软件包安装配置等。大多数应用程序在安装后都会在这个目录下创建自己的子目录,以便存储自己的配置文件。
- /home目录:包含Linux系统用户的家目录,每个用户的数据和个人文件都存放在这里。
- /lib目录:包含一些共享库文件,应用程序可以通过这些共享库文件调用系统的功能,如libc.so,是C语言函数库的共享库。
- /root目录:是系统管理者(超级用户)的家目录。
- /tmp目录:是系统中的一个临时目录,所有用户都可以在这里创建临时文件,文件系统会定期清空该目录,以防止文件滞留。
- /usr目录:包含系统启动后,所有用户能访问的应用程序和数据文件。
- /var 目录:包含可变数据的文件。包括日志、数据库、Web服务器、邮件队列等文件。它是一个经常被修改的目录,如果在其他目录有可变数据的话,它们都应当被链接到 /var 中。
pwd
在终端中输入该命令,可以查看当前所在位置,例如:
可以看到,当前所在位置是根目录。
man和—help
man命令
man命令可以查看某个命令的具体用法,例如:man pwd。如果一个命令具体的用法你不知道的话,问那个男人就行了。
man命令怎么进行翻页?空格
man命令怎么退出?q
—help参数
—help,也可以查看一个命令的帮助,一次性列出。用法:touch —help
ls
ls
ls命令是list的意思:列出,列表等。
通过ls命令可以查看当前目录下的子目录和子文件。例如:
ls -a
a是all的意思,表示所有。
列出包含隐藏文件在内的所有的文件。(在Linux操作系统中隐藏文件的文件名通常以”.”开始)
ls -l
-l 参数表示使用长格式输出:long format
输出结果中每一列的含义如下:
注意权限部分:
ls -l 可以简写为:ll
ls -al
ls -al等同于:ls -a + ls -l的功能。
可以简写为:ll -a
ll -a /home/powernode
可以指定查看某个目录下的所有文件详情。
cd
cd命令:change directory
cd命令用法:
1 | cd 路径名 |
cd .. 回到上级目录
cd ../.. 回到上级目录的上级目录
cd ~ 回到主目录
cd / 回到根目录
cd /home/powernode 切换到 /home/powernode目录下
cd abc 切换到当前目录下的abc目录中
- 这里的abc没有以 / 开始,表示这个路径是相对路径,相对路径指的是从当前所在目录作为起点开始找。
- 以 / 开始的路径被称为绝对路径。
- cd 命令后面既可以是相对路径,也可以是绝对路径。只要路径正确即可。
clear
清屏
文件管理
新建目录
mkdir abc (mkdir是新建目录的命令,abc是一个目录名)
mkdir -p a/b/c (-p参数表示,一次创建多重目录)
mkdir -p a/kk/ff (虽然a已经存在了,但是不会报错,直接在a目录下新建kk目录,kk目录下新建ff目录。)
新建文件
touch 文件名,例如:touch Hello.java 表示在当前目录下新建一个文件Hello.java
touch a.txt b.txt c.txt 一次性在当前目录下,新建多个文件,文件名之间采用空格分隔。
删除文件
用法:rm 文件名
rm a.txt(删除当前目录下的a.txt文件)。这种方式会询问,是否删除,输入y表示删除,输入n表示不删除。
不想让系统询问你是否删除,怎么进行强行删除呢? -f 参数可以做到。
- rm -f a.txt(强行删除a.txt文件,不询问)
删除多个文件
- rm -f b.txt c.txt (删除b.txt和c.txt文件)
- rm -f *.java(删除所有.java结尾的文件,模糊匹配的方式。)
删除目录
删除目录的时候,必须添加-r参数,这个-r表示删除一个目录,或者递归删除目录下的所有子目录以及子文件。
rm -r x(删除当前目录下的x目录,以及x目录下所有的子目录),但是这种方式需要用户自己输入y进行确认删除。
rm -rf x (强行删除x目录以及x目录下所有的子目录,并且不询问。包括子文件也全部删除。)
文件拷贝
cp a.txt aa.txt(复制当前目录下的a.txt文件,粘贴到当前目录下并且生成新文件aa.txt)
语法如下:
- cp file1 file2
- file1就是被拷贝的文件
- file2就是粘贴之后的文件
- file1和file2可以添加路径。
- cp 被拷贝文件的路径 粘贴到哪里的路径
cp Hello2.java a/Hello3.java
目录拷贝
cp 目录名1 目录名2
- 目录名1 是拷贝源
- 目录名2 是拷贝到哪里
-rf (-r递归拷贝,-f强行拷贝)
cp -rf a abc(将当前目录下的a目录拷贝到当前目录下的abc目录当中)
cp -rf /home/powernode/a /home/powernode/x (将/home/powernode/a目录拷贝到/home/powernode/x目录下)
移动
mv Hello.java x(将当前目录下的Hello.java文件移动到x目录下)
mv /home/bjpowernode/Hello2.java /home/bjpowernode/x (将/home/bjpowernode/Hello2.java 移动到 /home/bjpowernode/x目录下)
mv x f(将x目录移动到f目录下)
文件搜索
在CentOS中,可以使用以下方式进行文件搜索:
- find命令:使用find命令可以在指定目录下搜索文件。可以使用不同的选项来指定搜索的文件类型、大小、修改时间等条件。例如:
1 | find /usr/local -name "catalina.out" |
- whereis命令:使用whereis命令可以在系统中搜索指定的命令的位置。例如:
1 | whereis startup.sh |
- which命令:使用which命令也可以在系统中搜索指定的命令的位置。例如:
1 | which command |
文件的inode号
在Linux操作系统中,每一个文件都有自己的身份证号:inode号(index node:索引节点号)
每个文件都有自己的inode号,并且不会重复,在Linux操作系统中通过inode来区分两个文件。
查看文件的inode号:
1 | ls -i HelloWorld.java |
软链接与硬链接
软链接
软链接类似于windows操作系统中的快捷方式。
软链接的作用:方便操作。快捷。。。有些经常被操作的文件,藏的很深,每一次找很麻烦,怎么办,可以给这些经常操作的文件创建软链接。通过软链接快捷的操作目标文件。
怎么创建软链接呢(在linux当中怎么创建快捷方式呢)?
1 | ln -s HelloWorld.java HelloWorld.java2 |
- 表示给hello.java文件创建一个hello2.java的快捷方式(软链接)
- hello.java是目标文件。hello2.java文件是软链接,属于快捷方式
软链接和目标文件实际上是两个文件,在软链接中存储的是目标文件的路径。软链接关联的目标文件如果被删除,软链接这个快捷方式也就失效了。
可以通过查看inode号,来证明软链接是两个不同的文件:
硬链接
怎么创建硬链接?(把软链接创建过程中的 -s 去掉就是创建硬链接的语法。)
创建硬链接的语法:
1 | ln HelloWorld.java HelloWorld.java2 |
通过测试得知:inode号一致,说明创建的硬链接和原文件是同一个文件。
通过操作硬链接,目标文件会改变吗?操作目标文件,硬链接会改变吗? 答案是:当然会。
硬链接的特点:
- 主要是用来做:重要文件备份。
- 目标文件删除之后,硬链接只要在,文件其实就没有被删除。或者说硬链接删除之后,目标文件还在。总结一句话:目标文件或者硬链接只要有一个存在,文件就没有被真正的删除。
- 硬链接机制和复制粘贴还不一样,复制粘贴之后的文件,修改其中之一,另一个不会变,但是硬链接就不一样了。
文件压缩与解压缩
tar是在linux系统当中完成压缩和解压缩的命令。
压缩后的文件又被称为归档文件。
tar命令详解
tar命令语法格式: tar 参数 要压缩的或解压的文件或目录
tar命令的常用参数:
- z:指定是否使用gzip压缩方式压缩。(扩展名通常为:tar.gz。特点:速度最快)
- j:是否需要用 bzip2 压缩方式压缩。(扩展名通常为:tar.bz2。特点:体积最小)
- c:创建压缩(create)
- x:解压缩
- v:是否在压缩的过程中显示文件
- f:指定归档文件名(file)。f参数后面必须紧跟文件名,不能在f参数后面再加其他参数。
- t:查看 tarfile 里面的文件
- C:指定解压到的具体目录。注意是大写C。
注意:c、x、t,这三个参数不能共存,只能出现一个。
压缩
压缩一个文件
- tar -zcvf mytxt.tar.gz log1.txt
压缩多个文件
- tar -zcvf mytxt2.tar.gz log1.txt log2.txt log3.txt
- tar -zcvf mytxt3.tar.gz *.txt
压缩目录
- tar -zcvf mytxt4.tar.gz test 【将test目录压缩为mytxt4.tar.gz】
查看归档文件
- tar -tf mytxt.tar.gz
解压
tar -zxvf mytxt.tar.gz 【解压到当前目录下】
tar -zxvf mytxt.tar.gz -C test【将mytxt.tar.gz压缩包解压到test目录】
文件编辑vi & vim
vi与vim概述
vi 和 vim 都是在 Linux 和 Unix 中常用的基于字符终端的文本编辑器。
vi 是 Unix 早期提供的标准命令行下的文本编辑器,是一款非常强大、高效的编辑器,可以对文本进行快速修改和编辑,具有常见编辑器的基本功能。
vim(Vi Improved)是在vi基础上进行了改进和扩展的一个版本,它保留了vi的全部功能,并添加了许多新功能,如基本的 GUI 界面、语法高亮、多级撤销/重做、对齐、插件支持等等。可以说 vim 是强大的文本编辑器之一,被众多的开发者、管理员、写作人员和爱好者使用。
通过 vi 和 vim 命令,我们可以在终端中打开并编辑文本文件,进行各种修改和编辑,保存后退出,是 Linux 和 Unix 系统中非常基础、常用的一种文本编辑方式。
总之,vi 和 vim 均是一款 Linux 和 Unix 中常用的基于字符终端的文本编辑器,其中 vim 是在 vi 基础上进行了改进和扩展的版本。
在 CentOS 中,系统默认安装的是 vim 编辑器,但是为了兼容 vi 编辑器的使用习惯,CentOS 将 vim 的执行文件命名为 vi。因此,实际上在 CentOS 中使用 vi 和 vim 是等价的,都是使用 vim 编辑器进行文本编辑。
vi 编辑器使用
第一步:使用vi编辑器打开文件,语法:vi 文件的路径
- vi Hello.java(打开当前路径下的Hello.java)
- vi /home/bjpowernode/Hello.java(打开/home/bjpowernode目录下的Hello.java文件。)
第二步:编辑文件(vi编辑器为用户准备了两个模式)
- 第一个模式:命令行模式。(此时键入的都是命令)
- 第二个模式:编辑模式。(此时键入的内容都会写入文件)
- 进入vi编辑器时是命令模式:键入i命令进入编辑模式
- 从编辑模式回到命令模式:按一下esc键
第三步:保存。在命令模式下,输入以下命令:
- :wq 这是一个命令,这个命令可以保存并退出。
- :q! 这是一个命令,这个命令可以强行退出vi编辑器,并且不保存。
注意:vi编辑器打开的文件如果不存在,则自动新建。
vi编辑器常用命令
dd:删除光标所在行
yy:复制光标所在行到缓冲区
p:粘贴缓冲区中的内容
gg:光标回到文件第一行
GG:光标回到文件最后一行
^ :光标移动至当前行的行首
$ :光标移动至当前行的行尾
/关键字:按斜杠/键,可以输入想搜索的字符,然后确定进行搜索,如果第一次查找的关键字不是想要的,可以一直按 n 键往后查找到想要的关键字为止
o命令:在下一行插入。
x命令:命令行模式下,x命令会删除单个字符。
a命令:在光标后面插入。
nano编辑器
nano编辑器相对于vi编辑器来说出现的较晚,1999年诞生。vi编辑器时1976年诞生。nano编辑器更加简单一些。
以下是nano常用的快捷键,这些快捷键多数是无法在windows环境下使用的,也就是说在xshell中无法使用,因为和windows很多快捷键是冲突的,在linux环境中可以用:
- 打开文件:nano Test.java
- 保存文件:ctrl + o
- 退出nano:ctrl + x
- 选中多个字符:shift + 左方向/右方向
- 剪切:ctrl + k
- 粘贴:ctrl + u
- 搜索:ctrl + w
- 替换:ctrl + \
- 复制选中的:alt + 6
- 撤销:alt + u
- 重做:alt + e