RHEL8中的命令行以及Linux下的文件管理
1.什么是Shell
内核操纵和控制着计算机,从安全以及易操作性的角度考虑,用户不能够直接接触内核,因此Shell应运而生,它是为用户提供操作界面的一个软件,是连接用户端和计算机之间的一个桥梁,能够保证内核的安全。
Shell可以分为两类:
图像界面 | GUI(Graphical User Interface shell) |
---|---|
命令行式 | Command Line Interface shell |
2.什么是内核
内核是系统的核心程序,操纵着计算机硬件例如:外围设备,内存,显示器等等。内核的主要模块包括:
- 存储管理
- CPU和进程管理
- 文件系统
- 设备管理和驱动
- 网络通信
- 系统的管理及调动
- 网络通信等
3.命令行提示符
- 格式及其含义:
[kioks@foundation0 Desktop]$
kikos | 开启shell的用户名称 |
---|---|
@ | 分隔符 |
function0 | 主机短名称 |
Desktop | 当前工作目录名称 |
$ | 身份提示符(普通用户) |
-
命令行的执行方式
标准格式 [kioks@foundation0 Desktop]$ 命令空格参数空格目标
例如:
[kiosk@foundation0 Desktop]$ ls -l westos -
命令,参数和目标之间要用空格隔开
-
参数是用来指定命令的一些功能的,可加可不加
-
参数中"-"表示单词的缩写,“–”表示单词全称,可以使用“–help”来查看参数
-
使用多个参数时,参数的顺序可以随意调整:即 -a -c -c = -abc =-bac =-cab 顺序无所谓
-
命令必须在行提示符之后输入,否则无效
-
TAB 键用于将命令行补齐
-
在执行命令时需要时刻记住 我是谁 我在哪里 我要干什么
4.系统中常用的快捷键
1.系统中常用快捷键
快捷键 | 作用 |
---|---|
CTRL+C | 取消命令执行 |
CTRL+D | 关闭当前的Shell |
CTRL+SHIFT+N | 打开一个新的Shell |
CTRL+SHIFT+T | 在Shell中打开一个新的窗口 |
2.命令行中常用快捷键
快捷键 | 作用 |
---|---|
CTRL+A | 移动光标到首字母处 |
CTRL+E | 移动光标到命令行的结尾 |
CTRL+K | 从光标处删除至行尾 |
CTRL+U | 从光标处删除至行首 |
5.Shell中历史记录的调用
history #查看历史记录
history -c #清空当前Shell中的历史
history > file #将Shell中的历史放入文件中
历史调用的常用方法
调用方法 | 调用结果 |
---|---|
上下键 | 逐行调用 |
!数字 | 指定行调用 |
!字母 | 指定首字母调用 |
CTRL+R | 指定关键字调用 |
6.文件的建立及删除
文件是一个非常重要的概念,因为在Linux中一切皆是文件,我们对系统进行管理其实是对文件进行管理即对文件实施增删改查。
1.文件的建立以及删除:
touch file1 file2 #建立文件file1 file2
rm -f file1 file2 #删除文件file1 file2, -f中f是force强制不询问
注意:touch还可以更改文件的时间戳
touch file1
stat file1 #查看file1的时间
touch file1
stat file1 #再次查看时间与上次查看不同
stat可以显示Linux下的三个时间分别为:
时间 | 含义 |
---|---|
Access Time | 文件的访问时间,当文件被访问时更新时间 |
Modify Time | 文件内容的修改时间,当文件内容被修改时更新时间 |
Change Time | 文件内容和属性的修改时间,当文件内容或属性被修改时更新时间 |
2.目录的建立与删除
mkdir dir1 dir2 #建立目录dir1 dir2
rm -fr dir1 dir2 #删除目录dir1 dir2, 此处要加上-r因为目录相当于一个容器,删除时需要递归删除
7.文件编辑
Linux中文件编辑有两种方式:
文本编辑方式 | 适用条件 |
---|---|
gedit | 图形的文本编辑,只有在图形开始时才可以用 |
vim | 常用的文本编辑工具 |
1.gedit使用方式
gedit file1 #会打开一个类似windows中记事本的文本编辑框在里面可以编辑保存文件
2.vim的使用方式:
在Linux中,vim的工作模式主要有三种:命令模式,插入模式以及退出模式。
vim file1 #用vim方式打开file1,打开后进入命令模式
(1)调整工作参数
:set 参数信息,例如 :set nu 为vim中的内容加上行号,在命令模式下调整的参数是临时的,当关闭vim后这些设定不会被保存,再次打开时之前的设定无效。
当需要对当前用户设定参数信息时:
vim ~/.vimrc #对当前用户设置参数信息
当需要全局永久设定参数信息时:
vim /etc/vimrc #永久设定参数信息
当永久设定完成后在vim中用 :set 参数信息时这个临时的参数设定也是会生效的。
(2)vim中字符的搜索
操作 | 效果 |
---|---|
/关键字 | 高亮显示关键字 |
:noh | 取消高亮显示 |
n | 向下匹配 |
N | 向上匹配 |
(3)vim中字符的管理
操作 | 效果 |
---|---|
yl | 复制一个字符 |
yw | 复制一个单词 |
yy | 复制一行 |
dl | 删除一个字符 |
dw | 删除一个单词 |
dd | 删除一行 |
dl | 删除一个字符 |
cl | 剪切一个字符 |
cw | 剪切一个单词 |
cc | 剪切一行 |
p | 粘贴 |
u | 撤销 |
CTRL+R | 恢复 |
(4)vim中字符的替换
:%s/原字符/替换后字符/g # %s代表所有行,g代表所有列
示例:
:%s/hello/westos/g 将全文中的hello替换为westos
:1,3s/hello/westos/g 将1-3行的hello替换为westos
:/gg/,/rr/s/hello/westos/g 将关键字gg 和 rr 之间的hello替换为westos
(5)vim中的可视化模式切换
在可视化模式下可实现批量添加字符的功能,首先按CTRL+V进入到可视化模式中,通过键盘上下键选择要加入字符的列,按大写的I进入编辑模式加入字符,按ESC键退出可以看到选择的列都加入了输入的字符
(6)vim的分屏功能
操作 | 效果 |
---|---|
:sp file2 | 在一个vim文件窗口中打开另一个文件file2窗口 |
CTRL+w v | 左右分屏 |
CTRL+w s | 上下分屏 |
CTRL+w 上下左右 | 移动光标所在窗口的位置 |
CTRL+w c | 关闭当前屏幕 |
(7)vim光标移动快捷键
gg | 光标移动到文件的第一行 |
---|---|
G | 光标移动到文件的最后 |
:数字 | 光标移动到制定行 |
编写模式下快捷键的使用
i | 光标所在位置插入 |
---|---|
I | 光标所在行行首插入 |
a | 光标所在位置的下一字符处插入 |
A | 光标所在行行尾插入 |
o | 光标所在行的下一行插入 |
O | 光标所在行的上一行首插入 |
s | 光标所在位置删除并插入 |
S | 光标所在行删除并插入 |
1.正常退出
:q | 退出,当文件只是被看而内容没有改变时使用 |
---|---|
:wq | 退出保存 |
:q! | 强制退出不保存,在改变文件内容但是不想保存时使用 |
:wq! | 强制退出不保存,在对只读文件编写时使用 |
2.异常退出
当vim中改变内容但是没有保存而被强行关闭时,有一个.swp的文件还存在保存着没有写入部分的数据,再次打开vim时会出现问题在提示窗口的最后有6种快捷键:
O(open Read-Only) | 只读打开 |
---|---|
E(Eqit anyway) | 继续编辑 |
R(Recover) | 恢复数据 |
D(Delete) | 删除.swp文件 |
Q(Quit) | 退出 |
A(Abort) | 恢复后退出 |
注意:其中E继续编辑会生成一个.swo文件,原来的.swp文件还是存在的
8.文件的查看
cat
cat file1 #显示文件的全部内容
cat -b file1 #显示文件的内容并且显示行号,但是不统计空行
cat -n file1 #显示文件的内容并显示行号,统计空行
在命令中显示的行号并不会被保存到文件中,即文件的内容不改变
less
less file1 #显示文件的全部内容
一般文件的内容比较长需要分页浏览时才需要使用less
less中常用的一些操作:
上下键 | 逐行移动 |
---|---|
pgup/pgdn | 逐页移动 |
/关键字 | 高亮显示关键字 |
v | 进入vim模式 |
q | 退出 |
当从less进入到vim模式后退出时:先按:wq退出vim,再按q退出less
head
显示文件前多少行
head file1 #默认显示文件的前10行
head -n file1 #默认显示文件的前n行
tail
显示文件的后多少行
tail file1 #默认显示文件的后10行
tail -n file1 #显示文件的后n行
tail -f file1 #监控文件后10行变化,一般用于监控系统日志
9.文件的移动以及复制
文件复制
复制的过程是按照模板新建的过程
1.文件的复制
cp 源文件 目的地文件 #复制文件,当目的文件存在时会有询问
cp 源文件1 源文件2 目的地目录 #复制多个文件到一个目录中,目的地目录必须存在
2.目录的复制
cp -r 源目录 目的地目录 #复制目录到目录中
cp -r 源目录1 源目录2 目的地目录 #复制多个目录到一个目录中,目的地目录必须存在
文件移动
在相同分区中移动只是重命名的过程,而在不同分区中移动是先复制再删除的过程
1.文件的移动
mv 源文件 目的地文件 #当目的地文件存在时会被覆盖
1.目录的移动
mv 源目录 目的地目录 #此处不需要加-r 直接移动
10.文件统计
file
文件的名称的后缀名并不能代表文件的类型例如:file.mp3,file.mp4并不是代表音频或视频文件,可以通过file来查看文件的类型
file file1 #查看文件file1的类型
wc
wc | 用来统计文件的字数,字符数,字节数,行数 |
---|---|
wc -l | 查看文件的行数 |
wc -w | 查看文件的字数 |
wc -m | 查看文件的字符数 |
wc -c | 查看文件的字节数 |
一个英文字符是一个字节,一个中文是三个字节
11.Linux中根文件系统的层级结构
FHS Filesystem Hierarchy Standard (文件系统层级结构标准)
/ | 根目录也是系统中的顶级目录 |
---|---|
/bin&/sbin | 二进制的可执行命令 |
/boot | 系统启动引导过程中加载的文件存放目录,不要动 |
/dev | 系统靠文件识别设备,dev中存放了设备文件 |
/etc | 系统程序的配置文件,比如改变用户名称在passwd中 |
/root | 超级用户的家目录,超级用户登陆后默认进入的系统目录 |
/home | 该目录下的子目录被设定为用户家目录,普通用户登陆后默认进入该目录中的相应子目录 |
/lib&/lib64 | 存放系统所需要的资料 |
/media&/mnt | 设备的挂载点 |
/opt | 系统默认第三方软件安装的位置 |
/proc | 进程和内核相关参数信息 |
/sys | 内核参数目录 |
/srv | 当前主机为系统服务提供的数据 |
/var | 经常变化的系统数据 |
/tmp | 系统临时文件的存放目录 |
/usr | Universal Shared Resource 全局共享只读资源除了/目录外最重要的目录里面有很多层级 |
/run | 当前运行进程的相关数据 |
12.Linux系统中文件寻址
绝对路径:文件在系统中的真实位置,无论现在位置在哪里里都能够实现,绝对命令是以“/”开头的
相对路径:省略了系统当前所在目录的名称,在相对路径中执行命令时会在操作对象前加上“pwd”所显示的值,相对路径不以“/”开头
文件寻址的相关命令
pwd #显示路径
cd 目录名称 #切换路径
cd - #当前目录和前一级目录之间切换
cd .. #进入当前目录的上级目录
查看文件信息:
ls -l file1 #查看文件属性
ls dir #查看目录中包含的内容
ls -d dir #查看目录本身
ls -ld dir #查看目录本身的属性
ls -l dir #查看目录中文件的属性
ls -a dir #查看目录中包含的隐藏文件
ls -s file/dir #查看文件或目录的大小
ls -S dir #查看并且按照文件大小排序
13.Linux系统中文件批量处理
系统中的通用配置符号(这个没有为啥就是记住)
? | 匹配单个字符 |
---|---|
[[:upper:]] | 匹配单个大写字母 |
[[:lower:]] | 匹配单个小写字母 |
[[:alphal:]] | 匹配单个字母 |
[[:digit:]] | 匹配单个数字 |
[[:punct:]] | 匹配单个符号 |
[[:space:]] | 匹配空格 |
[[:alnum:]] | 匹配单个数字或字母 |
[[:punct:][:upper:]] | 单个符号或大写字母 |
字符集合
{} 用于精确匹配内容
{1,4,6,8}就表示1,4,6,8这四个数
[]用于模糊匹配
[a-z]表示a-z中的任意字母而不是从a-z的24个字母
[!3-8]表示出了3-8之外的任何一个数字
模糊匹配不能用来建立文件
“~”代表的含义
~ | 当前用户的家目录 |
---|---|
~username | 指定用户的家目录 |
~+ | 当前目录 |
~- | 进入当前目录之前所在的目录 |