Linux学习——文件管理
Linux学习——文件管理
2.1文件目录与路径
2.1.1 文件目录
利用ls可以查看根目录下的文件
[root@localhost /]# ls
backup bin boot date03 date04 dev dir10 etc home lib lib64 linn media mnt opt proc root run sbin srv sys tmp usr var
不同的颜色表示不同类型的文件
蓝色—>目录
绿色—>可执行文件
浅蓝色—>链接文件
红色—>压缩文件
黄色—>设备文件
根目录下常见的目录:
tree -L 1 /
/
├── bin -> usr/bin # 用于存放二进制命令
├── boot # 内核及引导系统程序所在的目录
├── dev # 所有设备文件的目录(如磁盘、光驱等)
├── etc # 配置文件默认路径、服务启动命令存放目录
├── home # 用户家目录,root用户为/root
├── lib -> usr/lib # 32位库文件存放目录
├── lib64 -> usr/lib64 # 64位库文件存放目录
├── media # 媒体文件存放目录
├── mnt # 临时挂载设备目录
├── opt # 自定义软件安装存放目录
├── proc # 进程及内核信息存放目录
├── root # Root用户家目录
├── run # 系统运行时产生临时文件,存放目录
├── sbin -> usr/sbin # 系统管理命令存放目录
├── srv # 服务启动之后需要访问的数据目录
├── sys # 系统使用目录
├── tmp # 临时文件目录
├── usr # 系统命令和帮助文件目录
└── var # 存放内容易变的文件的目录
2.1.2 文件路径
用户在磁盘中查找文件时,所经历的文件夹线路称为文件路径。
在文件系统中,用户可以通过tree命令显示路径结构
[root@localhost /]# tree
1.绝对路径
是指从根目录(/)开始的路径,如/usr,/etc/X11表示绝对路径。用户通过cd命令以绝对路径进入某个文件夹。
[root@localhost ~]# cd /usr/share/doc
用户可以通过pwd命令查看当前工作目录的绝对路径。
[root@localhost ~]# pwd
/usr/share/doc
输出结果表示用户当前处于/usr/share/doc路径下。
2.相对路径
是指相对于当前工作目录的路径,例如,用户从/usr/share/doc路径切换到/usr/share/man路径
[root@localhost doc]# cd ../man
[root@localhost man]# pwd
/usr/share/man
”../“表示当前目录的上层目录
”.“表示当前目录
2.2 目录与文件操作
2.2.1 目录操作
-
创建目录
” mkdir “——创建一个空目录
[root@localhost ~]# mkdir abc
” mkdir -p “——创建一个多层目录
[root@localhost ~]# mkdir -p aaa/bbb/ccc/ddd
-
查看目录
” pwd “——显示当前所在目录
” pwd -P “——显示实际工作目录,而非链接文件本身的目录名
[root@localhost lib]# pwd /lib [root@localhost lib]# pwd -P /usr/lib
” ls “ ——查看当前目录下的目录与文件
” ls -a “ ——查看隐藏的目录与文件
[root@localhost ~]# ls [root@localhost ~]# ls -a
” ls -l “ ——查看目录与文件的属性 ,可以简写为” ll “
[root@localhost lib]# ll 总用量 48 drwxr-xr-x. 3 root root 18 9月 10 14:56 alsa drwxr-xr-x. 2 root root 6 10月 2 2020 binfmt.d lrwxrwxrwx. 1 root root 10 11月 22 15:21 cpp -> ../bin/cpp drwxr-xr-x. 3 root root 43 9月 10 14:57 crda
-
切换目录
" cd "——切换目录到指定目录
[root@localhost ~]# cd /usr/share/doc
” cd “ ——不加任何路径直接回到root
[root@localhost doc]# cd [root@localhost ~]#
” cd - ”——返回上一次目录
[root@localhost ~]# cd - [root@localhost doc]#
-
删除目录
“ mkdir ”——只能删除空目录
[root@localhost ~]# mkdir fiel.txt
" mkdir -p "——连同上层的空目录一起删除
[root@localhost ~]# mkdir -p aaa/bbb/ccc/ddd
2.2.2 文件操作
-
创建文件
“ touch ”——创建一个空白文件
[root@localhost test]# ls [root@localhost test]# touch qf.txt [root@localhost test]# ls qf.txt
“ echo ”——写入新的内容到指定文件中,添加” -d “参数可以修改文件时间
[root@localhost test]# ll qf.txt -rw-r--r--. 1 root root 0 11月 23 23:32 qf.txt [root@localhost test]# touch -d "2018-3-30 16:41" qf.txt [root@localhost test]# ls -l qf.txt -rw-r--r--. 1 root root 0 3月 30 2018 qf.txt
-
查看文件
” cat “——查看内容较少的文件,添加参数” -n “可以显示行号,添加参数“ -A "显示不可控制字符(换行符/制表符)
[root@localhost test]# cat qf.txt #include<iostream> #include <string> #include<vector> using namespace std; void pp(string ss, string ss1) { int sum = 0; int i = 0; cout << "子串出现的位置: "; while (i <= ss.size() - ss1.size()) { int j = 0; while ((ss[i + j] == ss1[j]) && j < ss1.size()) { j++; } if (j == ss1.size()) { sum++; cout << i << " "; } i++; } cout << endl; cout << "子串出现的次数为:" << sum << endl; } int main() { string ss; cout << "请输入字符串: "; getline(cin, ss); int i = 0; string ss1; cin >> ss1; pp(ss, ss1); }
” more “——逐页的方式查看文件内容,空格键向下翻一页,b键向上翻一页
[root@localhost test]# more qf.txt
” less “——对文件和其他输出进行分页显示,可用pageup,pagedown与键盘方向键来上下翻看文件,最后按q键退出
[root@localhost test]# less qf.txt
” head -n “ ——查看文件前n行内容
[root@localhost test]# head -3 qf.txt #include<iostream> #include <string> #include<vector>
" tail "——查看文件后几行的内容,
[root@localhost test]# tail -4 qf.txt string ss1; cin >> ss1; pp(ss, ss1); }
” grep “——对文件内容进行过滤、搜索关键词,从而快速找到所需内容
显示含有string的行
[root@localhost test]# grep 'string' qf.txt #include <string> void pp(string ss, string ss1) { string ss; string ss1;
显示以void开头的行
[root@localhost test]# grep '^void' qf.txt void pp(string ss, string ss1) {
显示以;结尾的行
[root@localhost test]# grep ';$' qf.txt using namespace std; int sum = 0; int i = 0; cout << "子串出现的位置: "; int j = 0; j++; sum++; cout << i << " "; i++; cout << endl; cout << "子串出现的次数为:" << sum << endl; string ss; cout << "请输入字符串: "; getline(cin, ss); int i = 0; string ss1; cin >> ss1; pp(ss, ss1);
-
复制文件
“ cp file1(源文件) file2(目标文件) ” ——复制单个文件、整个目录、创建链接文件、对比新旧而予以更新
[root@localhost test]# touch abc.txt [root@localhost test]# echo "aaa" > abc.txt [root@localhost test]# cat abc.txt aaa [root@localhost test]# touch abb.txt [root@localhost test]# echo "ccc" >abb.txt [root@localhost test]# cat abb.txt ccc [root@localhost test]# cp abc.txt abb.txt cp:是否覆盖"abb.txt"? y [root@localhost test]# cat abc.txt aaa [root@localhost test]# cat abb.txt aaa
文件目录较长的时,可以使用花括号起不同的作用
[root@localhost ~]# cp -rf /aaa/bbb/ccc/ddd/a aaa/bbb/ccc/ddd/b.bak [root@localhost ~]# cp -rf /aaa/bbb/ccc/ddd/{a,b.bak}
-
移动文件
“ mv file1(源文件) file2(目标文件) ” ——移动或重命名文件或目录
[root@localhost ~]# mv aaaa.txt bbbb.txt
-
删除文件
“ rm file3(目标文件或目录) ” ——删除文件
[root@localhost test]# rm abb.txt rm:是否删除普通文件 "abb.txt"? y //y键然后回车
“ rm -r file3(目标文件或目录) ” ——删除mul
[root@localhost test]# rm -r aaaa
“rm -rf ”——跳过验证直接执行删除操作,如果利用此命令删除根目录,会导致整个系统瘫痪。
添加“ / ”会有相应的提示
[root@localhost test]# rm -rf /
2.3 Vim编辑器
vim是文件编辑器,是vi的升级版本,兼容vi的所有指令,同时做了优化和延伸。vim有多种模式,其中最常用的模式有命令模式、插入模式、底行模式以及替换模式和视图模式。
安装Vim
[root@localhost ~]# yum -y install vim-enhanced
-
命令模式:不能对文件直接编辑,只能通过快捷键进行一些操作(如移动光标、复制、粘贴等),打开vim后默认进入命令模式;
-
末行模式:可在末行输入一些命令对文件进行操作(如搜索、替换、保存、退出、高亮等);
-
编辑模式:可对文件内容进行编辑;
2.3.1 常见命令
光标定位常用命令
命令 | 说明 |
---|---|
h,j,k,l | 光标上下左右移动,也可用键盘自带方向键 |
o和$ | 光标移动到行首、行尾 |
gg和G | 光标移动到第一行首个字符的位置和光标移动到最后一行首个字符的位置 |
字符串 | 快速定位到字符串所在的行 |
/^d | 定位首字母为d的行 |
/txt$ | 定位结尾为txt的行 |
W | 移动光标到下一个单词 |
B | 移动光标到前一个单词 |
ctrl+f | 向前(朝向文件尾)翻动一页 |
Ctrl+b | 向后(朝向文件头)翻动一页 |
文件编辑常用命令
命令 | 说明 |
---|---|
yy | 复制当前行 |
dd | 删除当前行 |
p | 粘贴 |
x | 删除光标所在的字符 |
D | 从光标处删除到行尾 |
u | 撤销 |
^r | 重做 |
r | 可以用来修改一个字符 |
从命令模式进入其他模式常用命令
命令 | 说明 |
---|---|
o | 进入编辑模式,光标下面另起一行 |
a | 进入编辑模式,光标后一位 |
i | 进入编辑模式,光标当前位置 |
: | 进入末行模式 |
V | 进入可视行模式 |
v | 进入可视模式 |
^v | 进入可视块模式 |
R | 进入替换模式 |
末行模式常用命令
命令 | 说明 |
---|---|
:w | 保存 |
:w filename | 另存为filename |
:q | 退出 |
:wq | 保存并退出 |
:w! | 强制退出 |
:q! | 不保存强制退出 |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:整数 | 跳到该行 |
: s/abc/abd | 该行第一个abc替换成abd |
: s/abc/abd/g | 该行所有abc替换成abd |
2.3.2 编辑简单的文档
“ vim ”——如果文件已经创建,则打开;如果文件不存在,此命令将创建一个文档
[root@localhost test]# vim acc.txt
打开文档后,默认进入命令模式,不能编辑文本,需要切换到编辑模式。按i键进入编辑模式
进入编辑模式后,左下角出现“--插入--”,可以随意输入文本内容,Vim编辑器不会把文本内容当作命令执行。
在编写完后,保存退出。首先按Esc键切换到命令模式,如何再输入“:”,进入末行模式,最后输入“wq“,完成保存退出。
保存退出后,使用cat命令可以查看刚才输入的文本。
[root@localhost test]# cat acc.txt
www.qfedu.com
按o键进入编辑模式,另起一行并添加内容
如果此时不保存文件,直接退出,编辑器会拒绝此操作
在末行模式输入”:q!“强制退出
最后再查看文本,发现并未保存第二次添加内容,只显示原来的内容
[root@localhost test]# cat acc.txt
www.qfedu.com
2.4 文件时间
“ stat ”——查看文件目录时间
[root@localhost test]# stat abc.txt
文件:"abc.txt"
大小:4 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:60870 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-11-23 23:54:40.644802421 +0800
最近更改:2023-11-23 23:54:32.383760080 +0800
最近改动:2023-11-23 23:54:32.383760080 +0800
创建时间:-
-修改时间(Change time):文件的内容被最后一次修改的时间。“ls-l”命令显示的文件时间就是这个时间,当使用Vim对文件进行编辑之后保存,它的ctime就会相应地改变。
-访问时间(Access time):对文件进行一次读操作,它的访问时间就会改变。例如, cat、less等操作。但是 state与ls命令对 atime 不会有影响。
-状态时间(Modify time):当文件的状态被改变时,状态时间就会改变。使用chmod、chown等命令改变文件属性,会改变文件的 mtime。
以前的RHEL(Red Hat Enterprise Linux)版本,只要读取文件, 就会刷新时间,这种时间的变化专业术语叫“磁盘的 IO 操作”,就是写磁盘,访问一次写一次。举例来说, 千锋教育网站有上万个网页,如果有上万个人访问,访问一次时间就刷新一次,最后会导致大量IO 操作,这样做的积极意义并不大,由此带来的消极意义却是明显的,大大增加了磁盘IO的工作量。
从RHEL6开始, atime 延迟修改,刷新时间必须满足下列两个条件之一:自上次 atime 修改后已过去86400秒;发生写操作。这个改变作用是很大的。
“ find ”——命令查看根目录下5天以内被改过的文件(选取部分查询内容显示)。
root@localhost test]# find /root -mtime -5
/root
/root/.cache
/root/.cache/imsettings
/root/.cache/imsettings/log.bak
/root/.cache/imsettings/log
/root/.cache/tracker
/root/.cache/tracker/meta.db-wal
/root/.cache/tracker/meta.db-shm
/root/.cache/tracker/locale-for-miner-user-guides.txt
/root/.cache/tracker/locale-for-miner-apps.txt
2.5 文件类型
Linux系统中文件没有扩展名,修改无实际意义的扩展名无法修改文件的本质
[root@localhost test]# ls
abb.txt abc.txt ini.cfg qf.txt
[root@localhost test]# file abb.txt
abb.txt: ASCII text
[root@localhost test]# file ini.cfg
ini.cfg: empty
[root@localhost test]# mv abb.txt a.jpg
[root@localhost test]# ls
abc.txt a.jpg ini.cfg qf.txt
[root@localhost test]# file a.jpg
a.jpg: ASCII text //依旧是txt文件
使用”ls -l“查看文件名,
- 开头为” - “是普通文件(如文本文件,二进制文件,压缩文件,图片等);
- 开头为” d “是目录文件(蓝色);
- 开头为” b "是设备文件(块设备),存储设备硬盘,U盘,/dec/sda,/dev/sda1;
- 开头为“ c ”是设备文件(字符设备),打印机,终端,/dev/tty1,/dev/zero;
- 开头为“ s " 是套接字文件;
- 开头为” p “是链接文件(浅蓝色);
[root@localhost test]# ls -l
总用量 12
drwxr-xr-x. 3 root root 17 11月 24 21:08 aaa
-rw-r--r--. 1 root root 4 11月 23 23:54 abc.txt
-rw-r--r--. 1 root root 4 11月 23 23:55 a.jpg
-rw-r--r--. 1 root root 0 11月 24 21:03 ini.cfg
-rw-r--r--. 1 root root 561 11月 23 23:38 qf.txt
” file “——查看文件类型
[root@localhost test]# file abc.txt
abc.txt: ASCII text
” stat “ ——查看文件详细属性
[root@localhost test]# stat abc.txt
文件:"abc.txt"
大小:4 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:60870 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-11-23 23:54:40.644802421 +0800
最近更改:2023-11-23 23:54:32.383760080 +0800
最近改动:2023-11-23 23:54:32.383760080 +0800
创建时间:-
2.6 本章小结
本章主要介绍了文件的目录与路径之间的关联,以及如何对目录和文件进行整理和编辑,最后使用Vim编辑器编辑简单的文本。本章的知识都属于基本知识,在后面的学习中需经常使用。
在这章对于linux中基本的操作有一定的了解,对于目录和文件的操作自己已经完全掌握,对于后面的学习节省了不少的时间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现