1.基础文件和目录操作
(1). 在用户主目录下创建一个名为test_dir的目录,并在该目录中创建一个名为test_file.txt的空文本文件。
#mkdir /test_dir
#touch /test_dir/test_file.txt
(2). 将test_file.txt文件复制到/tmp目录下,并将复制后的文件重命名为copy_of_test.txt。
#cp /test_dir/test_file.txt /tmp/copy_of_test.txt
(3). 删除test_dir目录及其下的所有文件(包括test_file.txt),请使用一个命令完成此操作。
#rm -rf /test_dir
(4).在test_dir目录(如果已删除可重新创建)下创建一个test_file.txt文件,然后再创建该文件的软链接链接名为soft_link.txt,再创建一个硬链接,链接名为hard_link.txt。
#mkdir /test_dir
#touch /test_dir/test_file.txt
#ln -s /test_dir/test_file.txt #~/test_dir/soft_link.txt
#ln /test_dir/test_file.txt ~/test_dir/hard_link.txt
(5). 删除test_file.txt文件,查看软链接和硬链接文件是否还能访问,分别说明原因。
#rm /test_dir/test_file.txt
#ls l ~/test_dir/soft_link.txt
#cat /test_dir/soft_link.txt
#cat /test_dir/hard_link.txt
2.文件内容查看与编辑
(1). 使用合适的命令查看/etc/passwd文件的前 10 行内容。
#head -10 /etc/passwd
(2). 向copy_of_test.txt文件中追加一行内容 "这是追加的测试内容",并使用命令查看文件内容确认追加成功。
#echo "这是追加的测试内容" >> /tmp/copy_of_test.txt
#cat /tmp/copy_of_test.txt
(3). 使用文本编辑器(如vim)打开copy_of_test.txt文件,将 "测试" 替换为 "练习",保存并退出编辑器。
#vim /tmp/copy_of_test.txts
3.综合操作
(1).在/home目录下创建一个名为backup的目录,将/etc目录下所有以.conf结尾的文件复制到backup目录中。
#mkdir /home/backup
#cp /etc/*.conf /home/backup/
(2). 统计backup目录中文件的数量,并输出结果。
#ls -1 /home/backup | wc -l
(3).将backup目录打包成一个名为etc_backup.tar.gz的压缩包,并删除原始的backup目录。
#tar -czf /home/etc_backup.tar.gz -C /home backup
#rm -rf /home/backup
(4).将当前主机/home/backup目录中的所有文件备份到另一台主机的/test目录。
#scp -r /home/backup user@remote_host:/test
4.文件权限管理
(1).将copy_of_test.txt文件的所有者修改为当前系统中的普通用户user1(假设user1存在),文件所属组修改为group1(假设group1存在)。
#chown user1:group1 /tmp/copy_of_test.txt
(2).为copy_of_test.txt文件设置权限,使得所有者有读写执行权限,所属组有读和执行权限,其他用户只有读权限,写出具体命令。
#chmod u=rwx,g=rx,o=r /tmp/copy_of_test.txt
(3).查看copy_of_test.txt文件的详细权限信息。
#ls -l /tmp/copy_of_test.txt
5.用户和用户组基础操作
(1).创建一个名为newuser1的普通用户,并指定其默认登录 Shell 为/bin/bash。
#useradd -s /bin/bash newuser1
(2).创建一个名为newgroup1的用户组,然后将newuser1添加到该用户组中。
#groupadd newgroup1
#usermod -aG newgroup1 newuser1
(3).删除用户newuser1,要求保留其家目录。
#userdel newuser1
6.文件和目录权限设置与修改
(1).在用户主目录下创建一个名为perm_test_dir的目录和perm_test_file.txt的文件,分别为该目录和文件设置权限:目录的所有者有读写执行权限,所属组有读和执行权限,其他用户无任何权限;文件的所有者有读写权限,所属组和其他用户只有读权限。
#mkdir /perm_test_dir
#touch /perm_test_dir/perm_test_file.txt
#chmod 750 /perm_test_dir
#chmod 644 /perm_test_dir/perm_test_file.txt
(2).将perm_test_dir目录及其下所有文件的所属组修改为newgroup1。
#chgrp -R newgroup1 ~/perm_test_dir
(3).递归地将perm_test_dir目录的权限修改为:所有者和所属组有读写执行权限,其他用户只有读权限。
#chmod -R 774 /perm_test_dir
7.写出通过dnf以及本地源安装httpd的详细过程。
#mkdir /sr0
#mount /dev/sr0 /sr0 # 临时生效
#echo “mount /dev/sr0 /sr0” >> /etc/rc.d/rc.local
#chmod +x /etc/rc.d/rc.local
#vim /etc/yum.repos.d/base.repo
[BaseOS]
name=RHEL9-BaseOS
baseurl=file:///sr0/BaseOS/
gpgcheck=0
enabled=1
[AppStream]
name=App
baseurl=file:///sr0/AppStream/
gpgcheck=0
enabled=1
# dnf install httpd
# systemctl start httpd
8.vim 练习题
| 分类 | 选项 | 作用说明 | 示例 |
|---|---|---|---|
| 文件操作 | -o 或 -O | -o 水平分割窗口打开多个文件;-O 垂直分割窗口打开多个文件。 | vim -o file1.txt file2.txt(水平分割窗口打开两个文件)vim -O file1.txt file2.txt(垂直分割窗口打开两个文件) ctrl+w+w |
| -R | 以只读模式打开文件,防止误修改。 | vim -R config.txt(只读模式打开config.txt文件) | |
| -M | 与 -R 类似,但不允许强制写入,更严格的只读模式。 | vim -M important_file.txt(严格只读打开文件) | |
| +num | 打开文件后,将光标定位到指定行号num处。 | vim +10 script.sh(打开script.sh后,光标定位到第 10 行) | |
| +/{pattern} | 打开文件后,自动搜索并将光标定位到第一个匹配pattern的位置。 | vim +/function_name main.c(打开main.c后,定位到首个出现function_name的位置) | |
| 搜索与替换 | --cmd | 在启动 vim 时执行指定命令,常用于设置搜索或替换规则。 | vim --cmd ":%s/old/new/g"(打开文件时自动执行全文替换) |
| 模式 | 分类 | 快捷键 / 指令 | 功能说明 |
|---|---|---|---|
| 命令模式 | 光标移动 | w |
移动到下一个单词的开头 |
W |
移动到下一个以空格分隔的单词开头 | ||
b |
移动到当前单词的开头 | ||
B |
移动到上一个以空格分隔的单词开头 | ||
e |
移动到当前单词的结尾 | ||
E |
移动到当前以空格分隔的单词结尾 | ||
0 |
移动到当前行首 | ||
^ |
移动到当前行第一个非空白字符处 | ||
$ |
移动到当前行尾 | ||
gg |
移动到文件开头 | ||
G |
移动到文件结尾 | ||
nG |
移动到第 n 行(n 为数字) | ||
| 文本删除 | x |
删除光标所在字符 | |
X |
删除光标前一个字符 | ||
dd |
删除当前行 | ||
ndd |
删除从当前行开始的 n 行 | ||
d0 |
删除从光标处到行首的内容 | ||
d$ |
删除从光标处到行尾的内容 | ||
dw |
删除从光标处到下一个单词开头的内容 | ||
dG |
删除从当前行到文件结尾的内容 | ||
dgg |
删除从当前行到文件开头的内容 | ||
| 文本复制 | yy |
复制当前行 | |
nyy |
复制从当前行开始的 n 行 | ||
y0 |
复制从光标处到行首的内容 | ||
y$ |
复制从光标处到行尾的内容 | ||
yw |
复制从光标处到下一个单词开头的内容 | ||
yG |
复制从当前行到文件结尾的内容 | ||
ygg |
复制从当前行到文件开头的内容 | ||
| 文本粘贴 | p |
在光标后粘贴复制 / 删除的内容 | |
P |
在光标前粘贴复制 / 删除的内容 | ||
np |
粘贴 n 次复制 / 删除的内容 | ||
| 文本修改 | r |
替换光标所在字符(输入新字符后生效) | |
R |
进入替换模式,持续替换光标后的字符 | ||
cc |
删除当前行并进入插入模式 | ||
cw |
删除从光标处到单词结尾的内容并进入插入模式 | ||
~ |
切换光标所在字符的大小写 | ||
J |
将当前行与下一行合并 | ||
| 撤销与重做 | u |
撤销上一步操作 | |
Ctrl + r |
重做上一步被撤销的操作 | ||
:u n |
撤销前 n 步操作 | ||
| 插入模式 | 进入方式 | i |
在光标当前位置插入 |
I |
在当前行首插入 | ||
a |
在光标后插入 | ||
A |
在当前行尾插入 | ||
o |
在当前行下方新建一行并插入 | ||
O |
在当前行上方新建一行并插入 | ||
| 可视化模式 | 进入方式 | v |
字符可视化模式(选中单个字符) |
V |
行可视化模式(选中整行) | ||
Ctrl + v |
块可视化模式(选中矩形块) | ||
| 操作指令 | d |
删除选中内容 | |
y |
复制选中内容 | ||
c |
删除选中内容并进入插入模式 | ||
> |
将选中内容向右缩进 | ||
< |
将选中内容向左缩进 | ||
~ |
切换选中内容的大小写 | ||
U |
将选中内容转为大写 | ||
u |
将选中内容转为小写 | ||
| 命令行模式 | 文件操作 | :w |
保存文件 |
:w filename |
另存为 filename 文件 | ||
:q |
退出 vim(无修改时) | ||
:q! |
强制退出,不保存修改 | ||
:wq 或 :x |
保存并退出 | ||
:e filename |
打开另一个文件 filename | ||
:e! |
放弃修改,重新加载当前文件 | ||
:r filename |
将 filename 文件内容插入到当前光标位置 | ||
:r !command |
将 Shell 命令 command 的输出插入到当前光标位置 | ||
| 查找替换 | /pattern |
向下查找 pattern | |
?pattern |
向上查找 pattern | ||
:noh |
取消高亮显示查找结果 | ||
:%s/old/new/g |
全文替换 old 为 new | ||
:%s/old/new/gc |
全文替换,每次替换前确认 | ||
:n1,n2s/old/new/g |
在 n1 到 n2 行之间替换 old 为 new | ||
| 窗口操作 | :split 或 :sp |
水平分割窗口 | |
:vsplit 或 :vsp |
垂直分割窗口 | ||
:close |
关闭当前窗口 | ||
:only |
关闭其他窗口,只保留当前窗口 | ||
| 配置设置 | :set nu |
显示行号 | |
:set nonu |
隐藏行号 | ||
:set hlsearch |
高亮显示查找结果 | ||
:set nohlsearch |
关闭查找结果高亮 |
(1).使用快捷键将光标快速移动到文件的第 3 行第 5 个字符处
打开vim test.txt文件后,在命令模式下,输入3G可以将光标快速移动到第 3 行的行首,然后输入5l(l表示向右移动一个字符,输入5l即向右移动 4 个字符),即可将光标移动到第 3 行第 5 个字符处。
(2).删除文件中第二行的所有内容,然后撤销该删除操作
在命令模式下,将光标移动到第二行(可以使用2G快速定位到第二行),输入dd即可删除当前行(即第二行)的所有内容。删除后,输入u命令,即可撤销上一步的删除操作,恢复第二行内容。
(3).复制文件的前两行内容,并粘贴到文件末尾,形成一个新的段落,最后保存文件
在命令模式下,将光标移动到第一行,输入2yy复制当前行及下一行(即前两行)的内容。然后将光标移动到文件末尾(可以使用G快速定位到文件末尾),输入p将复制的内容粘贴到文件末尾。完成操作后,输入:w保存文件。
查找与替换
(4).在 vim test.txt文件中查找 "Linux" 这个单词,并统计其出现的次数
在命令模式下,输入/Linux,然后按回车键,vim 会自动定位到第一个 "Linux" 出现的位置。继续按n键可以查找下一个 "Linux",按N键查找上一个。若要统计出现的次数,可以在命令模式下输入**:%s/Linux//gn**,其中%表示在整个文件范围内,s表示替换操作,//表示查找 "Linux",g表示全局替换(即查找每一处),n表示只显示匹配次数而不进行实际替换,执行该命令后,vim 会在底部显示 "Linux" 出现的次数。
(5).将文件中所有的 "Linux" 替换为 "RHEL 系统",要求在替换前显示替换提示
在命令模式下,输入:%s/Linux/RHEL系统/gc,其中%表示整个文件,s表示替换,Linux是要查找的内容,RHEL系统是替换后的内容,g表示全局替换,c表示在每次替换前显示确认提示,输入y确认替换,n跳过本次替换 。
(6).在文件中查找以 "LOGO" 开头的行,并将光标定位到该行
在命令模式下,输入/^LOGO,然后按回车键,vim 会自动将光标定位到以 "LOGO" 开头的行。其中^表示匹配行首。