文件管理
1.文件基本目录结构
Linux操作系统以/作为根目录,并下辖一级目录,二级目录…N级目录等等。
一级目录如下图所示(参考菜鸟教程):
树状目录结构(参考菜鸟教程):
目录 | 解释 |
---|---|
bin | binaries(二进制文件简写),存放常见的使用命令。 |
boot | 启动Linux会使用的核心文件,比如镜像文件和一些链接文件。 |
dev | 存放Linux的外部设备。 |
etc | 配置文件的目录。 |
home | 普通用户的家目录 |
root | 超管的家目录 |
run | 是一个临时文件系统,存储系统启动以来的信息 |
sbin | 存放超管的命令 |
tmp | 存放一些临时文件 |
usr | 用户应用程序和文件安装的目录,类似于WIndows的program Files |
var | 频繁变化的文件会放在这个目录,比如日志文件 |
2.文件常见的类型
最常见的文件类型是文件和目录,图形符号是 - 和 d ,通过ls -l
可以查看某目录下的文件类型。
e.g
总的文件类型如下:
类型 | 符号 |
---|---|
文件 | - |
目录 | d |
块设备 | b |
字符设备 | c |
链接文件 | l |
套接字文件 | s |
管道文件 | p |
3.文件管理相关的命令
一些特殊目录 如 .
表示当前目录,..
表示上级目录,-
表示上一次命令所在目录,~
表示当前登录用户的家目录.XXX
代表的是隐藏文件。工作目录可以通过pwd
命令打印。
命令通常来说是
命令 + 选项 + 参数
e.g
# 以长文本的格式展现根目录下的文件
ls -l /
一些命令该怎么用,它到底有什么选项,通常可以用命令 --help 来查找用法。
3.1创建文件或目录
创建文件:
# touch 路径+文件名 如果没有路径,那么默认是当前路径
# e.g 在 /tmp 下创建一个 a.txt
touch /tmp/a.txt
创建目录:
# mkdir [-p] 目录名 p代表递归创建,其作用是针对父目录不存在时,连带着将父目录创建
# e.g 在 /tmp 下 创建 a/b目录,如果a目录不存在,那么需要加上 -p选项
mkdir -p /tmp/a/b
注意 : touch命令 和 mkdir命令 一次执行,可以创建多个文件或是目录,并不是执行一次,只能创建一个。
情景模拟:
在 /tmp 目录下创建 a ,b ,c 目录 ,a目录下创建aa目录,b目录下创建bb目录,c目录下创建cc目录。
然后在aa目录下创建aaa.txt,bb目录下创建bbb.txt,cc目录下创建ccc.txt。
3.2复制剪切删除文件或目录
复制文件或目录:
# cp [-r] 若干原文件 目标路径 -r参数代表复制目录
# e.g 将/tmp目录复制到var目录
cp -r /tmp /var
移动/剪切文件或目录:
# mv 若干原文件 目标路径
# e.g 将 /tmp/a 目录 移动到 /var目录
mv /tmp/a /var
mv也可以用来给文件改名
# e.g 将 /tmp/a.txt 移动到/var 下 并更名为b.txt
mv /tmp/a.txt /var/b.txt
# e.g 将/tmp/a.txt 更改名为b.txt
mv /tmp/a.txt /tmp/b.txt
删除文件或目录:
# rm [-rf] 若干原文件 r针对目录 f代表强制删除,不询问是否删除
# e.g 强制删除 /tmp/a/ 目录
rm -rf /tmp/a/
#e.g 强制删除 /tmp/a/ 目录下的文件
rm -rf /tmp/a/*
注意:如果你是root用户,rm -rf /*
是玩火!!! 勿用!
情景模拟:
创建目录 com/lordbao/ ,并再创建子目录entity , service ,dao,controller,在entity创建 User.java,UserService.java,UserDao.java,UserController.java。然后通过mv命令,将UserService.java移动到service目录下,将UserDao.java移动到 dao目录下,通过cp +rm命令将UserController.java移动到controller下。
3.3查看文件内容
在查看之前,先创建一封email,在里面头内容主要是
Dear Jerry:
I’m Tom,Waiting for me to…
xxxx
Yours,
Tom
查看文本内容的命令如下:
命令 | 解释 |
---|---|
cat 文件 | 查看文件所有内容,不过长内容文本可读性不好 |
head -n 文件 | n需要替代为特定的数字,如2,代表看文本的前2行 |
tail -n 文件 | n需要替代为特定的数字,如2,代表看文本的倒数2行 |
more 文件 | 空格键往下翻一页,回车往下翻一行,不过不能往回看 |
grep 关键字 文件 | 查看关键字所在的那些行 |
测试结果:
当然文本太短的时候,more命令和cat命令差不多。
下面把文本内容多增加有点,通过gif看看效果。
最开始是按 回车键,翻一行,然后是 按空格键,翻一页
3.4复制文本内容
如何复制文本内容呢? 这里涉及到一点重定向的概念,>
用于覆盖内容,>>
表示追加内容。
情景模拟:
1.txt 里面有一行内容,杨过&&小龙女
2.txt 里面有一行内容,郭靖&&黄蓉
现在将1.txt的文本的覆盖到2.txt里面。
然后将1.txt的文本追加到2.txt里面。
4.Vi/Vim文件编辑器
Vim当做是Vi的进阶版就可以了,Vim是一个文本编辑器,对应Windows的记事本,不像Word一样,有什么加粗,加红的样式效果。
Vi/Vim常见的模式如下:
除上图外,补充如下:
命令模式
进入Vim的第一个模式。进入命令模式下,有一些快捷键:
- gg进入页首,G进入页尾
- 0进入行首,$进入行尾
- nGG(n为数字),进入到第n行
- hjkl (左下上右),当然,四个上下左右的方向键也可以。
- yy+p ,复制并粘贴光标所在行。nyy+p(n代表数字),复制并粘贴光标及以下n行。
- dd, 删除光标所在行。ndd(n代表数字)删除光标及以下n行。在删除之后,如果按下p键,效果为剪切并粘贴。
- x删除光标后一个字符。如果按下p键,效果为剪切并粘贴。nx其实就是删除n个字符,nx+p等价于前剪切并粘贴。
- ZZ直接退出Vim编辑器
插入模式
以按 i 键为例,从命令模式进入插入模式,进行文本的编辑。
按ESC键重新回到命令模式
末行模式
末行模式可以设置编辑器的一些格式
比如 set nu 表示设置行号 set nonu表示不是设置行号 set list将制表符和行尾符等显示出来,set nolist就是隐藏将制表符和行尾符。
又比如可以利用其来对文本内容进行修改 5,7 s/aaa/bbb/g 表示将5到7行的aaa都替换为bbb
其他模式
比如可以用 /{keyword} 来查看 比如 /h 表示查找h
从命令模式按v进入可视模式,利用这个模式可以用来选中某些特定位置的文本。比如第3行第5个字到第4行第7个字。
偶尔可能会出现这种情况
原因可能是这个文件正被不同的人进行编辑又或是其他不正常情况发生的,比如上一次该文件编辑时非正常退出了。当在恢复文件之后,删掉.1.txt.swap就可以了。