1.3 文件管理命令
1.3.1 cd:切换目录(change directory)
cd 绝对路径/相对路径
# 根目录 [root@localhost ~]# cd / # 家目录 [root@localhost /]# cd [root@localhost /]# cd ~ # 父级目录 [root@localhost /]# cd .. # 返回上一次目录 [root@localhost /]# cd -
绝对路径:
[root@localhost ~]# cd /etc/opt/
相对路径:
[root@localhost ~]# cd Public/
1.3.2 ls:可以列出当前目录的内容或指定目录(list)
常见选项:
-a包含隐藏文件
-l显示额外信息
-R目录递归
-ld目录和符号链接信息
-S按从大到小排序
1.3.3 touch:创建文件
touch 路径和名字
[root@localhost ~]# touch /root/data/file
1.3.4 mkdir:创建文件夹
mkdir
路径和目录名
[root@localhost ~]# mkdir /root/data
常见选项:
-
-p当创建目录没有上一级时,自动创建
例:在/home下创建a1文件夹,在a1文件夹中,直接创建b1/c1文件夹,最终文件层级结构为/home/a1/b1/c1
[root@localhost ~]# mkdir -p /home/a/b/c
1.3.5 cp:复制
是英文单词 copy
的缩写,用于复制文件和目录。它是一个常用且功能强大的命令,可以帮助我们在文件系统中创建副本或者说备份文件。
cp
命令的语法如下:
cp 源文件 目标文件夹 cp 源文件 目标文件 cp -t 目标文件夹 源文件
例:将c中的文件d复制到a中
[root@localhost ~]# cp /home/a/b/c/d /home/a/
练习1:将d1复制到桌面
常见选项:
练习2:将a文件夹下面的所有文件复制到桌面
-
-r/-R
:递归复制目录及内部的所有内容
[root@localhost ~]# cp -r /home/a /root/Desktop/
-
-f
:强制覆盖文件,如果目标位置已经存在同名文件,cp
命令默认会询问是否覆盖。可以使用-f
选项来强制覆盖目标文件而不进行询问。cp -f boat.ini /opt/games/gta6/model/objs/boat2.ini # centos7无反应
1.3.6 mv:移动
move 的缩写,可以移动文件或目录,将其从一个位置移到另一个位置。当然,它还能给文件或目录重命名。
mv
命令的基本语法如下:
mv 源文件或目录 目标文件或目标
例:
将/root/data/a/b/c文件夹中的文件file1移动到/root/data/a中
将/root/data/a/b中的文件c及其包含的文件、文件夹移动到/root/data/a中
将/root/data/a/b中的文件c及其包含的文件、文件夹移动到/root/data/a中,并将其文件夹改名为cc
[root@centos-1 ~]# mv /root/data/a/b/c/file1 /root/data/a/ [root@centos-1 ~]# mv /root/data/a/b/c /root/data/a/ [root@centos-1 ~]# mv /root/data/a/b/c /root/data/a/cc
例:
重命名文件/root/data/a/file1为file2
重命名文件夹/root/data/a/c为d
[root@centos-1 ~]# mv /root/data/a/file1 /root/data/a/file2 [root@centos-1 ~]# mv /root/data/a/c /root/data/a/d
常见选项参数:
-
-i
:覆盖目标文件前询问用户是否确认。 -
-f
:强制执行移动或重命名操作,当发生覆盖时是不进行确认提示,就不会询问是否覆盖,简而言之,强制覆盖。 -
-u
:当源文件比目标文件的创建时间更加新时,才执行覆盖操作
1.3.7 rm:删除
remove的所需,用于删除一个文件或者目录。
rm
命令的基本语法如下:
rm 文件名/目录名
常见选项参数:
-
-i
删除前逐一询问确认。 -
-f
即使原档案属性设为唯读,亦直接删除,无需逐一确认。 -
-r
将目录及以下之档案亦逐一删除。
例:
删除文件/root/data/a/file2
删除文件夹/root/data/a/cc
[root@centos-1 data]# rm /root/data/a/file1 # 删除目录必须添加-r或-rf [root@centos-1 data]# rm -r /root/data/a/cc/
删除当前目录下的所有文件及目录
rm -r *
注意:文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。(centos7以上版本有些可以留在回收站)
1.3.8 查看文件内容
vim的安装:
yum install -y vim
1.3.8.1 cat
操作系统中常用的一种文本文件查看和处理命令,它的主要作用是连接文件并且将它们输出到标准输出设备(通常是屏幕)。
cat
命令的基本语法如下:
cat [选项] 文件名
常见选项参数:
-
-n
:显示每行行号; -
-b
:显示非空行行号; -
-s
:压缩空白行为一行; -
-v
:显示制表符和非打印字符; -
-E
:在每行结束处显示$符号。
例:
# cat /etc/profile # cat -n /etc/profile # cat -nb /etc/profile
1.3.8.2 more:翻页
more命令用于逐页显示文件内容,通常用于查看大型文件的内容,可以一次显示一页,按下空格键显示下一页,按下回车键显示下一行,按下Q键退出查看。
more
命令的基本语法如下:
more [选项] 文件名
常见选项参数:
-
+n
:从笫n行开始显示。 -
-n
:定义屏幕大小为n行。 -
+/pattern
:在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 -
-c
:从顶部清屏,然后显示。 -
-d
:提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能。 -
-l
:忽略Ctrl+l(换页)字符。 -
-p
:通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似 -
-s
:把连续的多个空行显示为一行。 -
-u
:把文件内容中的下画线去掉。
常用操作命令:
-
Enter
:向下n行,需要定义。默认为1行。 -
Ctrl+F
:向下滚动一屏。 -
空格键
:向下滚动一屏。 -
Ctrl+B
:返回上一屏。 -
=
:输出当前行的行号。 -
f
:输出文件名和当前行的行号。 -
V
:调用vi编辑器。 -
!命令
:调用Shell,并执行命令 。 -
q
:退出more。
例:
显示文件中从第3行起的内容。
more +3 /etc/profile
设定每屏显示行数。
more -3 /etc/profile
列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。
ls /etc | more -5
1.3.8.3 head:头部
用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
head
命令的基本语法如下:
head [参数] 文件名
常见选项参数:
-
-q
隐藏文件名 -
-v
显示文件名 -
-c
<数目> 显示的字节数。 -
-n
<行数> 显示的行数。
例:
显示 /etc/profile 文件的开头 10 行
head /etc/profile 或 head -n 10 /etc/profile
显示 /etc/profile 文件的开头 5 行
head -n 5 /etc/profile
显示 /etc/profile 文件的前20个字节
hed -c 20 /etc/profile
1.3.8.4 tail:尾部
用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
tail
命令的基本语法如下:
tail [参数] 文件名
常见选项参数:
-
-f
循环读取 -
-q
不显示处理信息 -
-v
显示详细的处理信息 -
-c
<数目> 显示的字节数 -
-n
<行数> 显示文件的尾部 n 行内容 -
--pid=PID
与-f合用,表示在进程ID,PID死掉之后结束 -
-q, --quiet, --silent
从不输出给出文件名的首部 -
-s, --sleep-interval=S
与-f合用,表示在每次反复的间隔休眠S秒
例:
显示 /etc/profile 文件的最后 10 行
tail /etc/profile
要跟踪名为 /var/log/messages 的文件的增长情况
tail -f /var/log/messages
显示文件 /etc/profile 的内容,从第 20 行至文件末尾
tail -n +20 /etc/profile
显示文件 /etc/profile 的最后 10 个字符
tail -c 10 /etc/profile
1.3.8.5 grep:文本过滤
1.3.9 修改文件内容
1.3.9.1 重定向
ls -a > list.txt
1.3.9.2 gedit
图形文件编辑器
1.3.9.3 vi/vim
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
什么是vim?
Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
vi/vim的使用
基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。
1)命令模式:用户刚刚启动vi/vim,便进入了命令模式
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i被当作了一个命令。
以下是普通模式常用的几个命令:
-
i
-- 切换到输入模式,在光标当前位置开始输入文本。 -
x
-- 删除当前光标所在处的字符。 -
:
-- 切换到底线命令模式,以在最底一行输入命令。 -
a
-- 进入插入模式,在光标下一个位置开始输入文本。 -
o
:在当前行的下方插入一个新行,并进入插入模式。 -
O
-- 在当前行的上方插入一个新行,并进入插入模式。 -
dd
-- 删除当前行。ndd -
yy
-- 复制当前行。nyy -
p
-- 粘贴剪贴板内容到光标下方。 -
P
-- 粘贴剪贴板内容到光标上方。 -
u
-- 撤销上一次操作。 -
Ctrl + r
-- 重做上一次撤销的操作。 -
:w
-- 保存文件。 -
:q
-- 退出 Vim 编辑器。 -
q!
-- 强制退出Vim 编辑器,不保存 -
hjkl
--上下左右 -
0 $
--行首行尾 -
gg G
--页首页尾 -
3G
--进入第三行 -
v
--进入可视化模式
2)输入模式
在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
在输入模式中,可以使用以下按键:
-
字符按键以及Shift组合,输入字符
-
ENTER,回车键,换行
-
BACK SPACE,退格键,删除光标前一个字符
-
DEL,删除键,删除光标后一个字符
-
方向键,在文本中移动光标
-
HOME/END,移动光标到行首/行尾
-
Page Up/Page Down,上/下翻页
-
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
-
ESC,退出输入模式,切换到命令模式
3)底线命令模式
在命令模式下按下 :(英文冒号)就进入了底线命令模式。 底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
-
:w
:保存文件。 -
:q
:退出 Vim 编辑器。 -
:wq
:保存文件并退出 Vim 编辑器。 -
:q!
:强制退出Vim编辑器,不保存修改。 -
:set nu
:显示行号 -
:set list
:显示控制字符 -
:set nonu
:取消显示行号 -
/string
:查找字符,安n选下一个 -
范围 s/原内容/新内容/全局
:查找替换,例:1,5 s/root/yu/g
按 ESC 键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
1.3.9.4 临时文件删除
因异常退出vim,导致相同路径下有.(源文件名).swap临时文件被系统生成,打开源文件如下图所示(无法编辑):
解决方法:
-
使用ls -a,找到.(源文件名).swap
-
使用rm删除该隐藏临时文件