Linux 练习03 VIM使用小结、脚本中运算符、逻辑运算及脚本编写实验

文章目录

        • 一、 vim命令行模式常见快捷方式,以及vim查找,替换的方法
          • 1. vim命令行模式常见快捷方式
          • 2.vim查找,替换的方法
            • 查找
            • 替换
        • 二、脚本中运算符、逻辑运算以及用法
          • 1. 条件运算符
          • 2. 逻辑运算符
        • 三、脚本实验
          • 1.编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中
          • 2.编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统
          • 3.编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

一、 vim命令行模式常见快捷方式,以及vim查找,替换的方法

1. vim命令行模式常见快捷方式

Linux 练习03 VIM使用小结、脚本中运算符、逻辑运算及脚本编写实验_第1张图片

快捷键 说明
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
ZZ 保存退出
ZQ 不保存退出
:q 退出
:q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出
字符间跳转
h
l
j
k
#COMMAND 跳转由#指定的个数的字符
单词间跳转
w 下一个单词的词首
e 当前或下一单词的词尾
b 当前或前一个单词的词首
#COMMAND 由#指定一次跳转的单词数
当前页跳转
H 页首
M 页中间行
L 页底
zt 将光标所在当前行移到屏幕顶端
zz 将光标所在当前行移到屏幕中间
zb 将光标所在当前行移到屏幕底端
行首行尾跳转
^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾
行间移动
#G 扩展命令模式下:# 跳转至由#指定行
G 最后一行
1G, gg 第一行
句间移动
) 下一句
( 上一句
段落间移动
} 下一段{
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
字符编辑
x 删除光标处的字符
#x 删除光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写
J 删除当前行后的换行符
替换命令 (r, replace)
r 替换光标所在处的字符
R 切换成REPLACE模式
删除命令
d 删除命令,可结合光标跳转字符,实现范围删除
x 删除当前光标所在位置的字符
dd 删除当前光标所在行
dw 删除当前光标所在位置的单词
d$ 删除当前光标所在位置至行尾的内容
J 删除当前光标所在行行尾的换行符(拼接行)
u 撤销前一编辑命令
复制命令 (y, yank)
y 复制,行为相似于d命令
粘贴命令 (p, paste)
p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
2.vim查找,替换的方法
查找
快捷键 说明
/string 正向查找(sting为查找对象)
?string 反向查找
set hls 查找高亮显示命令 ,使用*键将当前光标的单词高亮显示,使用n浏览下一个结果
替换
快捷键 说明
:s/old/new 将当前行的第一个字符串old替换为new
:s/old/new/g 将当前行的所有字符串old替换为new
:10s/old/new/g 将指定行的所有字符串old替换为new
:10,13s/old/new/g 将指定行的所有字符串old替换为new
:%s/old/new/g 将文本中所有的字符串old替换为new
:%s/old/new/gc 依次替换每个字符串
:%s/^struct/new/g 将所有以struct开头的字符串替换为new

二、脚本中运算符、逻辑运算以及用法

1. 条件运算符
运算符号 代表意义 应用 说明
= 等于 整型或字符串比较: str1 = str2 字符串str1 和字符串str2 相等时返回真,如果在[]中,只能是字符串
== 等于 整型或字符串比较: str1 == str2 字符串str1 和字符串str2 相等时返回真,如果在[]中,只能是字符串
!= 不等于 整型或字符串比较: str1 != str2 字符串str1和字符串str2不相等时返回真,如果在[]中,只能是字符串
< 小于 整型或字符串比较: str1 < str2 按字典顺序排序,字符串str1 在字符串str2 之前,在[]中,它表示字符串,如需使用请转义<
> 大于 整型和字符串比较 在[]中,它表示字符串,如需使用请转义>
-eq 等于 整型比较: int1 -eq int2 如果int1 等于int2,则返回真
-ne 不等于 整型比较: int1 -ne int2 如果int1 不等于int2,则返回真
-lt 小于 整型比较: int1 -lt int2 如果int1 小于int2,则返回真
-gt 大于 整型比较: int1 -gt int2 如果int1 大于int2,则返回真
-z 空字符串 字符串比较: -z string 字符串string 为空串(长度为0)时返回真
-n 非空字符串 字符串比较 :-n string 字符串string 为非空串时返回真
-le 小于或等于 整型比较: int1 -le int2 如果int1 小于等于int2,则返回真
-ge 大于或等于 整型比较: int1 -ge int2 如果int1 大于等于int2,则返回真
2. 逻辑运算符
运算符号 代表意义 应用 说明
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式 在[] 表达式中使用
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式 在[] 表达式中使用
! 逻辑否,条件为假,结果为真。
&& 双方都成立(and) 逻辑表达式 && 逻辑表达式 在[[]] 表达式中使用
\ \ 单方成立(or)

三、脚本实验

1.编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中
#!/bin/bash
clear
echo "备份/etc/到/root/etc"$(date +%F-%m-%d)!
cp -af  /etc/ /root/etc$(date +%F-%m-%d)

2.编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统

思路

当/etc/下存在nologin文件时普通用户就无法登录系统。管理员删掉这个文件后普通用户才可以登录。

禁止普通用户登录
[root@centos7 bin]#cat /root/bin/nologin.sh
#!/bin/bash
mkdir -p  /etc/nologin
解除禁止
[root@centos7 bin]#cat /root/bin/login.sh
#!/bin/bash
rm -fr /etc/nologin
3.编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
  #!/bin/bash
    echo "当前硬盘分区中空间利用率最大的值为: "$(df |tr -s " " ":"|cut -d ":" -f5|egrep -o "[[:digit:]]*"|sort -nr|head -n1)"%"
        
    ```

你可能感兴趣的:(Linux 练习03 VIM使用小结、脚本中运算符、逻辑运算及脚本编写实验)