Linux下的文件管理
文章目录
一.文件管理命令:
1.新建文件与目录:
touch 命令用于新建文件,修改文件的时间戳
命令 | 效果 |
---|---|
touch file1 file2… | 新建空文件 |
touch -t YYYYMMDDHHmm file | 更改文件的时间戳至指定时间:YYYY年MM月DD日HH小时mm分钟 |
新建文件:
文件时间属性的修改:首先应右键file后点击properties(属性)进行查看在下方会显示文件的时间属性,经过touch -t命令的修改之后重新查看,会发现时间属性已被成功修改,若要修改时间属性的秒数,用touch --help可以进行查看,在时间属性修改上,修改至秒数则用touch -t
YYYYMMDDHHmm.ss file的格式进行修改:
mkdir命令用于新建目录(make directory)
命令 | 效果 |
---|---|
mkdir dir1 dir2… | 建立空目录 |
mkdir -p test/redhat/linux | 建立多层目录(符合递归关系) |
建立目录:
建立多层目录:
2.删除文件或目录:
rm命令用于删除文件或目录
命令 | 效果 |
---|---|
rm file1 file2… | 删除文件时有提示 |
rm -f file | 强制删除文件不提示(f用force记忆) |
rm -r dir1 dir2… | 递归删除目录 |
rm -fr dir | 递归删除目录(包括目录中的所有) |
删除文件以及目录:
在删除文件或目录时,若未加上-f就会提示,对于该提示的问答按y代表yes,按n代表no
3.图形文本编辑器:
gedit命令可以用于图形的文本编辑:
命令 | 效果 |
---|---|
gedit file1 file2 | 编辑file1,file2 |
注:gedit在使用时必须有图形,并且file1,2可以不存在
4.vim文本编辑器:
vim命令可验用于文本编辑,本文中只涉及基础操作,后续将介绍vim高级编辑效果:
命令 | 效果 |
---|---|
vim file | 进入到vim的浏览模式 |
vim模式界面浏览:
注:
[1]进入到vim浏览模式时不能编辑文件
[2]浏览模式时需按i后进入插入模式(下方出现insert)即可进行编辑
[3]在vim中鼠标不能控制光标,只能用上下左右移动
[4]按Esc退出插入模式
[5]按**:wq**可以保存更改并退出
对于vim模式下在未保存时异常退出(如直接强行关闭shell)时,再次打开shell并进行vim编辑:
操作 | 效果 |
---|---|
O | 只读打开文件 |
E | 继续上一次的编辑(被强制关闭时的编辑) |
R | 恢复未保存的内容编辑 |
D | 删除.swp文件并进入编辑 |
Q | 退出当前的文件编辑 |
A | 退出vim程序 |
以上命令在报错出现时都会有提示:
vim在同时打开多个文件时的操作:
命令 | 效果 |
---|---|
vim -o file1 file2 | 分上下两个模式打开文件 |
ctrl+w+上/下 | 控制上下模式中转换窗口 |
vim -p file1 file2 | 分左右两个模式打开文件 |
:tabn | 左右模式中转换至后一个窗口 |
:tabq | 左右模式中转换至前一个窗口 |
注:vim后接空格file1和file2,只会成功保存file1,file2的保存则会出现问题
vim上下打开文件:
vim左右打开文件:
5.文件的显示与浏览:
cat命令可以显示文件中的所有内容:
命令 | 效果 |
---|---|
cat file | 显示文件中所有内容 |
cat -b file | 显示文件内容并显示行号,不显示空行的行号 |
cat -n file | 显示文件内容并显示行号 |
以下的实验素材:将history的执行结果放入file中:命令为:history > file
head命令可以查看文件前多少行
命令 | 效果 |
---|---|
head file | 默认显示文件前10行 |
head -n file | n为数字,显示文件的前n行 |
tail命令可以查看文件后多少行:
命令 | 效果 |
---|---|
tail file | 默认显示文件后10行 |
tail -n file | n为数字,显示文件的后n行 |
less命令可以对文件进行分页浏览:
命令 | 效果 |
---|---|
less file | 进入到less模式查看file |
less file+上/下 | 在less模式中用上/下进行逐行查看 |
pgup/pgdn | 逐页查看文件内容 |
less file+/关键字 | 搜索关键字,并按n向上逐一匹配,按N向下逐一匹配 |
less模式下按v | less模式直接进入vim编辑,编辑完成后按:wq完成编辑保存退出后返回到之前的less模式中 |
less模式下q | 在less模式中退出 |
less模式:
less模式匹配关键字:
6.文件的移动与复制:
cp命令可以复制文件:
命令 | 效果 |
---|---|
cp file 目的地 | 将file复制至目的地 |
cp file1 file2 目的地 | 将file1,file2复制至目的地 |
cp -r dir1 dir2 | 将dir1复制至dir2 |
mv命令可以移动文件:
命令 | 效果 |
---|---|
mv file1 file2 dir | 将file1,file2移动至目录dir1中 |
mv dir1 dr2 dir3 | 将dir1,dir2移动至目录dir3中 |
mv file newname | 不存在file时对file进行重命名 |
最后需要搞清移动与复制对应的概念: 复制文件,即按照源文件在目的地处新建一个文件,可以通俗地理解为“抄作业”;移动文件需要分为两种情况,一是相同设备分区中的文件移动实质是重命名过程,二是不同设备分区中的文件移动是建立新文件与删除原文件的过程。
注:命令ls -i file可以查看文件的节点号(相当于文件的身份证号),通过比对节点号就可以明白其原理
7.文件的类型查看:
file命令可以对文件类型进行查看:
命令 | 效果 |
---|---|
file file1 | 查看file1的文件类型 |
实验素材:分别对于file1中文件进行不同的文本编辑,并对几种情况做出对比:
8.文件的容量统计:
wc命令可以用于文件容量的统计:
命令 | 效果 |
---|---|
wc -l | 统计文件行数 |
wc -m | 统计文件字符数 |
wc -w | 统计文件单词数 |
wc -c | 统计文件字节数 |
注:
[1]本实验vim编辑文本统计字节数时除了helloworld这10个字母外还有两个换行符,一个在hello后,一个在world后
[2]本实验中由于编辑vim的内容是英文,所以-m和-c的效果一致,即对于英文的输入来说,字符数等于字节数,但是输入中文时不同,字节数就将远大于字符数,并且一个汉字对应三个字节,字节数就是衡量容量文件大小的单位。
二.Linux中文件的寻址:
1.Linux系统结构:
FSH (Filesystem Hierarchy Standard)Linux层级结构标准3,Linux的哲学思想是一切皆文件,把几乎所有资源统统抽象为文件形式。
系统二级目录 | 内容 |
---|---|
/bin | 系统常规命令 |
/sbin | 系统管理命令 |
/dev | 设备文件 |
/home | 普通用户家目录集合,此目录中的子目录为普通用户家目录 |
/root | 超级用户家目录 |
/lib64 | 64位函数库 |
/lib | 系统函数库 |
/proc | 进程信息,系统识别的硬件信息 |
/run | 当前运行的硬件和系统模块 |
/srv | 系统数据(常量) |
/var | 系统数据(变化) |
/tmp | 系统临时文件存放目录 |
/mnt | 临时设备挂载点 |
/media | cdrom临时挂载点 |
/etc | 系统大多数程序的配置目录 |
/opt | 第三方软件安装位置 |
/boot | 系统启动分区,系统启动时读取文件都在此目录中 |
/sys | 关于内核设定目录 |
/usr | unix system resource仅次于/的重要,多数系统资源都在此目录 |
2.相对路径与绝对路径:
相对路径: 绝对路径名称的简写,省略了用户当前所在的系统位置,此名称只有在管理当前所在系统目录中子文件时才能使用,系统中不以 / 开头的文件名称都为相对路径,在程序操作时会自动识别当前路径的信息并关联操作目标。
绝对路径: 文件在系统中的真实位置,在任何场景下都可以使用,通常以 / 开头,不会考虑当前的系统位置。
3.关于文件寻址的命令:
pwd命令可以显示当前目录,cd命令可以切换当前的工作目录:
命令 | 效果 |
---|---|
pwd | 显示当前的工作目录 |
cd~- | 切换当前的工作目录,且cd~-=cd- |
cd . . | 切换到当前目录的上一级 |
结合路径与pwd和cd的相关练习:
ls命令可以显示文件的信息:
命令 | 效果 |
---|---|
ls | 显示当前目录中文件的名称 |
ls file | 显示指定文件名称 |
ls dir | 显示指定目录中内容的名称 |
ls -d dir | 显示目录本身的名称 |
ls -l file | 显示文件的属性 |
ls -l dir | 显示目录中内容的属性 |
ls -ld dir | 显示目录本身属性 |
ls -a dir | 显示目录中所有文件名称包括隐藏文件名称 |
ls -s | 显示文件大小 |
ls -R dir | 递归显示目录中的内容 |
三.文件批量处理:
1.匹配符:
以下介绍在linux中的几种匹配符:
匹配符 | 效果 |
---|---|
* | 匹配0~任意字符 |
? | 匹配单个字符 |
[[:alpha:]] | 匹配单个字母 |
[[:lower:]] | 匹配单个小写字母 |
[[:upper:]] | 匹配单个大写字母 |
[[:digit:]] | 匹配单个数字 |
[[:alnum:]] | 匹配单个数字或字母 |
[[:punct:]] | 匹配单个符号 |
[[:space:]] | 匹配单个空格 |
将/etc/目录下所有后五个字符为.conf的文件复制到当前目录:
匹配当前目录中所有名称为五个字符的文件:
建立多个文件后对比匹配,依次匹配得到实验现象,值得关注的是后三个,[[:alpha:][:space:]]可以匹配所有字母以及空格的,[![:alpha:][:space:]]可以匹配所有除了字母以及空格以外的,与[^ [:alpha:][:space:]]效果相同:
2.字符集合匹配规则及~的使用方法:
字符集合表示方法:
表示方法 | 效果 |
---|---|
[ ] | 条件是或者关系是模糊匹配,对象和几个对比匹配就操作 [1-10] 为1到10,[!d-f]/[^d-f]指除了d-f以外 |
{ } | 点名机制,精确到指定集合中的每一个元素 {1…10}指从1到10的所有元素,{a…c}指从a到c的所有元素 |
在建立和删除时也可以用[ ]和{ }批量处理,并且在匹配文件时fi[3-4]le?表示匹配所有格式为fi3le+任意单个字母以及fi4le+任意单个字母的文件,若中间不添加-只是几个数字的罗列,则只会删除该括号内数字显示的文件:
匹配方式 | 效果 |
---|---|
~ | 默认代表当前用户的家目录 |
~username | 指定的用户家目录 |
~+ | 等于. 指当前目录 |
~- | 当前目录之前所在的目录 |
. . | 当前目录的上级目录 |
~的匹配演示:
~+的匹配演示:
~-和. .的匹配演示:
四.TEST:
Q1:用命令和正则表达式按要求建立文件:
(1)用一条命令建立12个文件WESTOS_classX_linuxY(X的范围是1-2,Y的范围是1-6)
(2)这些文件都包含在root用户桌面的study目录中
(3)用一条命令建立8个文件redhat_versionX(X的范围是1-8)
(4)redhat_versionX这些文件都包含在/mnt目录中的version中
Q2:管理刚才所建立的文件,要求如下:
(1)用一条命令吧redhat_versionX中带有奇数的文件复制到桌面的/SINGLE中
(2)用一条命令把redhat_versionX中带有偶数的文件复制到/DOUBLE中
(3)用一条命令把WESTOS_classX_linuxY中class1的文件移动到当前用户桌面的CLASS1中
(4) 用一条命令把WESTOS_classX_linuxY中class2的文件移动到当前用户桌面的CLASS2中
Answer:
第一题:(结合路径直接建立)
mkdir study
touch study/WESTOS_class{
1..2}_linux{
1..6}
mkdir /mnt/version
touch /mnt/version/redhat_version{
1..8}
第一题还可以先新建文件与目录,再将文件新移动相关目录:
touch WESTOS_class{
1..2}_linux{
1..6}
mkdir study
mv WESTOS_class{
1..2}_linux{
1..6} study
touch redhat_version{
1..8}
mkdir /mnt/VERSION
mv redhat_version{
1..8} /mnt/VERSION
第二题:
mkdir /SINGLE /DOUBLE
cp redhat_version[1357] /SINGLE
cp redhat_version[2468] /DOUBLE
mkdir CLASS1 CLASS2
mv WESTOS_class[1]_linux? CLASS1
mv WESTOS_class[2]_linux? CLASS2