Linux随笔02
第二章 文件管理:
2.1 文件目录与路径
2.1.1 文件目录:
Windows系统以多根的方式组织文件(如C:\、D:\、E:\),而Linux系统以但单根的方式组织文件
如图所示,所有文件都在根目录(/)下,其中箭头指向真实存在的文件。例如,/bin实际存在于/usr/bin,/bin只是一个链接文件
ls命令:用户查看根目录下的文件。
[root@localhost suli]# ls
大多数Linux版本都遵循文件系统层次化标准,用户通过该标准可以了解特定文件的具体目录。
根目录(/):只包含目录,不包含具体文件
根目录下常见的目录:
目录 | 说明 |
/bin | 存放二进制可执行文件,常用命令一般都在此处 |
/etc | 存放系统管理和配置文件,如/etc/sysconfig/network(网卡配置)、/etc/hostname(用户名配置)、/etc/ssh/sshd_config(远程连接) |
/home | 存放所有用户文件的根目录,是用户主目录的基点,比如用户usr的主目录就是/home/user,可以用~user表示 |
/usr | 存放用户安装的程序和系统程序 |
/tmp | 存放正在执行的程序的临时文件 |
/root | 超级用户的主目录 |
/sbin | 存放二进制可执行文件,只有root才能访问 |
/var | 存放运行时需要改变数据的文件,也是某些大文件的溢出区,如/var/lib/mysql(数据库)、/var/spool/mail(邮件)、/var/spool/cron(计划任务)、/var/log/messages(日志) |
2.1.2 文件路径:
文件路径:用户在磁盘中查找文件时,所历经的文件夹线路。
如图所示,用户需要查找messages文件,可以从根目录开始,依次通过var目录、log目录,然后找到messages文件。
在Linux系统中,用户可以通过tree命令显示路径结果(可使用yum-y install tree命令安装tree工具)
文件路径分为绝对路径和相对路径。
1.绝对路径:
绝对路径是指从根目录(/)开始的路径,如/usr、/etc/X11表示绝对路径。用户通过cd命令以绝对路径进入某个文件夹,用户通过pwd命令可以查看当前工作目录的绝对路径。
[root@localhost suli]# cd /usr/share/doc/
此时,用户通过pwd命令可以查看当前工作目录的绝对路径
root@localhost doc]# pwd
/usr/share/doc
2.相对路径
相对路径是指对于当前工作目录的路径。例如,用户从/usr/share/doc路径切换到/usr/share/man路径
[root@localhost doc]# cd /usr/share/doc/ [root@localhost doc]# cd ../man [root@localhost man]# pwd /usr/share/man
注意:“..”表示当前目录的上层目录,“.”表示当前目录,“/”表示下层目录。
2.2 目录与文件操作:
2.2.1 目录操作:
目录操作包括建目录、查看目录、切换目录、删除目录。
1.创建目录:
用户可以通过mkdir命令创建一个空白目录,mkdir命令还可以添加“-p”参数来创建一个多层目录
2.查看目录
用户可以通过pwd命令显示当前所在的目录,添加“-p”参数可以显示实际工作目录,而非链接文件本身的目录名。
[root@localhost lib] # pwd /lib [root@localhost lib]# pwd -p /usr/lib
用户通过ls-a命令可以查看隐藏的目录与文件;通过ls-l命令可以查看目录与文件的属性
注意:ls-l可以简写为ll。
3.切换目录
用户通过cd命令切换目录。cd不加任何路径表示直接返回root目录,cd-表示返回上次目录。
[root@localhost suli]# cd suli/aba/abb/abc
[root@localhost abc]# cd
[root@localhost ~]# cd -
/root/suli/abd/abb/abc
4.删除目录
用户通过rmdir命令只能删除空目录
添加-p参数即可连同上层空目录一起删除
[root@localhost abd]# pwd /root/suli/abc/abd [root@localhost suli]# rmdir -p abc/abd [root@localhost suli]# ls
2.2.2 文件操作
文件操作包括创建文件、查看文件、复制文件、移动文件、删除文件。
1.创建文件
用户通过touch命令可以创建一个空白文件,也可以设置文件、属性。用echo命令写入新的内容到qf.txt文件中,再次查看。添加-d参数可以修改文件时间。
2.查看文件
(1)cat命令
用户使用cat命令查看内容较少的文件(添加-n显示行号,添加-A显示不可显示控制字符),得切换至根目录(cd /)才可查看
使用cat命令查看内容较多的文件时,整个文件的内容从上到下滚动显示,用户来不及阅读内容,就到达了文件末尾。为了避免这个问题,用户可以使用more命令查看较长的文件
(2)more命令
more命以逐页的方式显示文件内容,用户可以通过空白键向下翻一页,b键向上翻一页
(3)less命令
less命令对文件或其他输出进行分页显示,可用pageup、pagedown与键盘方向键来上下翻看文件,查找文件比more更容易,最后按q键退出。
(4)head命令
head命令可以查看文件前几行的内容,添加-n显示文件的前n行
(5)tail命令
tail命令查看文件后几行的内容,添加-n显示文件的后n行,添加-f可以查看动态文件
(6)grep命令
grep命令可以对文件内容进行过滤、搜索关键词,从而快速找到所需内容
上述命令表示显示含有root的行
上述命令表示显示以root开头的行
3.复制文件
用户使用cp命令可以复制文件
格式:
cp file1(源文件) file2(目标文件)
用户使用cp命令除了复制单个文件之外,还可以复制整个目录,创建链接文件,对比新旧文件而予以更新
文件目录较长时可以用花括号括起不同的部分。
[root@localhost suli]# cp -rf /aaa/bbb/ccc/ddd/a /aaa/bbb/ccc/ddd/a.bak
[root@localhost suli]# cp -rf /aaa/bbb/ccc/ddd {a,a.bak}
4.移动文件
mv命令可以移动或者重命名文件或目录。
格式:
mv file1(源文件) file2(目标文件)
如果将一个文件移动到一个已经存在的目标文件中,则目标文件的内容将被覆盖。mv与cp的结果不同,cp对文件进行复制,文件个数增加,mv类似于文件“搬家”,文件个数不增加
[root@localhost suli]# ls
linux.txt
[root@localhost suli]# mv linux.txt qiangfeng.txt
[root@localhost suli]# ls
qiangfeng.txt
5.删除文件
rm命令可以删除文件。
格式:
rm file2(目标文件或目录)
添加-r可删除目录,-f可以跳过验证直接执行删除操作。
[root@localhost suli]# ls linux.txt [root@localhost suli]# rm linux.txt rm: remove regular empty file 'linux.txt'? y //按回车键
使用rm-rf时需要十分小心,root用户不会收到提示,一旦执行命令,目录和文件肯定会被删掉。脚本删除要使用绝对路径,可降低误删的概率
如果用户使用此命令删除了根目录,整个系统就会瘫痪。一旦在工作中手误执行了此命令,后果将会非常严重。不过CentOS7有相应的提示,避免发生重大事故
[root@localhost suli]# rm -rf /
rm:在“/”进行递归操作十分危险
rm:使用 --no-preserve-root选项跳过安全模式
2.3 Vim编辑器
Vi编辑器是Linux上最基本的文本编辑器,工作在字符模式下,效率非常高。Vi编辑器的功能是其他图形界面的编辑器所无法比拟的。Vim是Vi的增强版
下载安装Vim的命令:
[root@localhost suli]# which vim /usr/bin/vim [root@localhost suli]# yum -y install vim-enhanced
Vim编辑器主要有三种模式:命令模式、编辑模式和末行模式(扩展命令模式)
命令模式:控制光标,对文件进行复制、粘贴、删除、查询等操作
编辑模式:进行文本录入与更改
末行模式:文档保存与退出,设置编辑环境
每个模式下都有不同的命令快捷键,和图形界面相比有些抽象,但当用户熟悉这些操作之后,工作效率会比用图形界面高很多
打开Vim编辑器后,默认进入命令模式,进入其他模式的指令都是以命令模式发起的
例如,按i键进入编辑模式。此时如果要进入末行模式,用户需要先按Esc键返回命令模式,然后输入“:”即可
2.3.1 常用命令
光标定位常用命令:
命令 | 说明 |
h、j、k、l | 光标上下左右移动。也可以用键盘自带方向键 |
0和¥ | 光标移动到行首、行尾 |
gg和G | 光标移动到第一行首个字符的位置和光标移动到最后一行首个字符的位置 |
/字符串 | 快速定位到字符串所在的行 |
/^d | 定位首字母为d的行 |
/txt$ | 定位结尾为txt的行 |
文本编辑常用的命令:
命令 | 说明 |
yy | 复制当前行 |
dd | 删除当前行 |
p | 粘贴 |
x | 删除光标所在的字符 |
D | 从光标处删除到行尾 |
u | 撤销 |
^r | 重做 |
r | 可以用户来修改一个字符 |
命令和命令可以组合,作用也是叠加的。
从命令模式进入其他模式常用的命令:
命令 | 说明 |
o | 进入编辑模式,光标下面另起一行 |
a | 进入编辑模式,光标后一位 |
i | 进入编辑模式,光标当前位置 |
: | 进入末行模式 |
V | 进入可视行模式 |
v | 进入可视模式 |
^v | 进入可视块模式 |
R | 进入替换模式 |
末行模式常用的命令:
命令 | 说明 |
:w | 保存 |
:q | 退出 |
:wq | 保存并退出 |
:w! | 强制保存 |
:q! | 不保存强制退出 |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:整数 | 跳出该行 |
:s/abc/abd | 该行第一个abc替换成abd |
:s/abc/abd/g | 该行所有abc替换成abd |
2.4 文件时间
在Windows下新建一个文件,保存文件的同时也会保存文件的创建时间、修改时间、访问时间等
在Limux系统下,一个文件也有三种时间:访问时间、修改时间、状态时间。stat命令可以查看文件的详细信息
在输出结果中可以看到系统中保存了三个时间:Access time(访问时间)、Modify time(状态时间)、Change time(修改时间)
在Linux系统中,文件是没有创建时间的,如果新创建一个文件,它的三个时间都与创建的时间相同
修改时间:文件的内容被最后一次修改的时间。“ls-l”命令显示的文件时间就是这个时间,当使用Vim对文件进行编辑之后保存,它的ctime就会相应地改变。
访问时间:对文件进行一次读操作,它的访问时间就会改变。例如,cat、less等操作。但是state与 ls 命令对 atime 不会有影响。
状态时间:当文件的状态被改变时,状态时间就会改变。使用chmod、chown等命令改变文件属性,会改变文件的mtime。
以前的RHEL (Red Hat Enterprise Linux)版本,只要读取文件,就会刷新时间,这种时间的变化专业术语叫“磁盘的 IO操作”,就是写磁盘,访问一次写一次。
举例来说,千锋教育网站有上万个网页,如果有上万个人访问,访问一次时间就刷新一次,最后会导致大量I0操作,这样做的积极意义并不大,由此带来的消极意义却是明显的,大大增加了磁盘IO的工作量。
2.5 文件类型
Linux系统中文件没有扩展名,修改无实际意义的扩展名无法修改文件的本质
使用“ls -l”命令查看文件吗,看第一个字符,开头为“-”的是普通文件,开头为是'd"的是目录文件
开头为“b”的是设备文件(块设备),存储设备硬盘、U盘、/dev/sda、/dev/sda1;“c”表示设备文件(字符设备),打印机、终端、/dev/tty1、/dev/zero;“s”表示套接字文件;“p”表示管道文件;“l”表示链接文件
使用file命令查看文件类型,如文本文件、二进制文件、管道文件、设备文件、链接文件等
使用stat命令查看文件的详细属性。例如,文件的名称、大小、权限、atime、ctime、mtime等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?