vim和脚本5-6

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

命令模式转换至插入模式

i insert ,在光标所在处输入

I               在当前光标所在行的行首输入

a append 在当前光标所在处后面输入

A              在当前光标所在行的行尾输入

o              在当前光标所在行的下方打开一个新行

O             在当前光标所在行的上方打开一个新行

模式转换

插入模式  ESC 命令模式

命令模式    :   扩展命令模式

扩展命令模式 ESC ENTER 命令模式

关闭文件

扩展命令模式:

q 退出

q! 强制退出丢弃做出的修改

wq 保存退出

x 保存退出

命令模式:

ZZ 保存退出

ZQ 不保存退出

扩展命令模式

按:进入模式。创建一处于屏幕底部左侧的命令提示符:

w 写磁盘文件

wq 写入并退出

x 写入并退出

q 退出

q! 不存盘退出,更改全部丢弃

r FILENAME 读文件内容到当前文件中

w FILENAME 将当前文件内容写入另一个文件

!COMMAND 执行命令

r!COMMAND 读入命令的输出

命令模式光标跳转

字符间跳转:

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,delete)

d 删除命令,可结合光标跳转字符,实现范围删除

d$ 删除到行尾

d^ 删除到非空行首

d0 删除到行首

dw 删除一个单词

de 删除一个单词到当前单词尾

db 删除光标所在处的前一个单词

dd 删除光标所在处的行       #dd 多行删除

D 从当前光标位置删除至行尾,等同d$

复制命令:(y,yank):

y 复制,行为类似于d命令

y$ y0 y^ ye yw yb #COMMAND

yy 复制行         #yy复制多行

Y 复制整行

粘贴命令(p,paste):

p 缓冲区存的如果整行,则粘贴当前光标所在行下方;否则,则粘贴至当前光标所在处的的后面

P 缓冲区存的如果整行,则粘贴当前光标所在行上方;否则,则粘贴至当前光标所在处的的前面

改变命令(c,change):

c 修改后切换成插入模式,行为类似于d命令

c$ c^ c0 cb ce cw #COMMAND

cc 删除当前行并输入新内容,相当于S    #cc

C 删除当前光标到行尾,并切换成插入模式

扩展命令模式:地址界定

# 具体第几行,例如2表示第2行

#,# 从左侧#表示起始行,到右侧#表示结尾行

#,+# 从左侧#表示的起始行,加上右侧#表示的行数 2,+3表示2到5行

. 当前行

$ 最后一行 .,$-1从当前行到倒数第二行

% 全文,相当于1,$

/pat1/,/pat2/ 从第一次被pat模式匹配到的行开始,直到第一次被pat2匹配到的行结束

#,/pat/      /pat/,$

后跟一个编辑命令

d y 

w FILE将范围内的行另存为指定文件中

r FILE 在指定位置插入指定文件中的内容

撤销更改:

u 撤销最近的更改

#u 撤销之前多次更改

U 撤销光标落在这行后所有此行的更改

按ctrl -r 重做最后的“撤销”更改

. 重复前一个操作

n. 重复前一个操作n次



查找及替换方法

命令模式查找:

/PATTERN 从当前光标所在处向文件尾部查找

?PATTERN 从当前光标所在处向文件首部查找

n 与命令同方向   N 与命令反方向

扩展命令模式查找并替换:

s 格式: s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用\1,\2..等向后引用符号;还可以使用&引用前面查找时查找到的整个内容

修饰符 i 忽略大小写 g 全局替换;默认情况下每一行只替换第一次出现 gc 全局替换;替换前询问

查找替换中的分隔符可以替换为其他字符如:@、#



2、总结脚本中运算符、逻辑运算以及用法


算术运算:

bash中的算术运算:help let

+ - * / %取模(取余) **(乘方)

实现算术运算:

1 let var=算术表达式

2 var=$[算术表达式]

3 var=$((算术表达式))

4 var=$(expr arg1 arg2 arg3 ...)

5 declare -i var =数值

6 echo '算术表达式' |bc

乘法符号有些场景中需要转义,如*

bash有内建的随机数生成器:$RANDOM(0-32767)

echo $[$RANDOM%50]: 0-49之间随机数

赋值:

增强型赋值:

+= -= *= /= %=

let varOPERvalue

let count+=3

自加3后自赋值

自增自减:

let var+=1

let var++

let var-=1

let var--

逻辑运算:

true,false

1,0

与:

1与1=1

1与0=0

0与1=0

0与0=0

或:

1或1=1

1或0=1

0或1=1

0或0=0

非:!

!1=0 !true

!0=2 !false

短路与运算:

短路与:

第一个为0,结果必定为0

第一个为1,第二个必须要参与运算

短路或:

第一个为1,结果必定为1

第一个为0,第二个必须要参与运算

异或:^

异或的两个值相同为假0,不同为真1

同或:

相同为真1,不同为假0

条件性的执行操作符

根据退出状态而定,命令可以有条件的运行

&&代表条件性的AND THEN 短路与

CMD1为假,不运行CMD2 CMD1为真,运行CMD2

||代表条件性的OR ELSE 短路或

CMD1为真,不运行CMD2 CMD1为假,运行CMD2

例如:

grep -q no_such_user /etc/passwd\

|| echo 'No such user'

No such user




3、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中

#!/bin/bash

echo "Backup star"

cp -av /etc/ /root/etc`date +%F`

echo "Backup finish"


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

nologin.sh

#!/bin/bash

echo "User nologin"

touch /etc/nologin

echo "finish"

login.sh

echo "User login"

rm -rf /etc/nologin

echo "finish"




5、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

disk.sh

#!/bin/bash

REDs="\033[1;31m"

#red strat

REDe="\033[0m"

#red end

echo -e "The max disk per is $REDs`df|grep "/dev/sd.*%"|tr -s ' ' %|cut -d% -f5|sort -rn|head -1`%$

REDe"

你可能感兴趣的:(vim和脚本5-6)