参考:
http://sed.sourceforge.net/sed1line_zh-CN.html </abc> 向前查询abc
<?abc> 向后查询abc
<n> 向前继续查询
<N> 向后继续查询
标记文本
mchar 用字母char标记当前光标的位置
`char 移至char所标记处
'char 移至char标记所在行的开头处
" 移至当前行上一次所在位置(在光标移动之后)――一个双引号
'' 移至当前行上第一次所在位置的行的开头处(在光标移动之后)―
―两个单引号
快速块复制
用m char标识某行(如 mb)
移动到复制的起始行,y'b,就可以复制整块
将整块复制到制定的‘寄存器’ "qy'b
将寄存器中的数据插入到某位置 "qp
在寄存器中保存的块在整个vi过程中有效(包括用e 重新编辑其他文件)
改tab的空格数set ts=N
% - 移至匹配的括号
xp - 交换两个字符
y[cursor movement] - 光标移多少复制多少,如yw, y2w, y2l
. - repeat last command
q<reg> - 开始录制宏,存入<register>Register中。
@<reg> - 回放<reg>中的宏
切换大小写字母用“~”
用命令行编辑功能重调用命令:
在KSH中:set -o vi
或在.profile中:EDITOR=/usr/bin/vi;export EDITOR
SHELL中预定义的变量:
$$当前执行的进程PID
$当前执行的shell文件名
$#传递给shell的所有位置参数个数
$*传递给shell的所有位置参数值
$?上一条命令的执行返回码(0表示成功)
$!上一条后台进程的pid
$1-$9对应的前九个参数
${10}-${n}对应更多的参数(只对KSH)
expr使用程序:
用于实现整数算数运算,组织表达式
例:
$var1=6
$var2=3
$expr $var1/$var2
2
$expr \($var1+$var2\)\*5
45
循环语句:
&&和||
利用命令的返回码决定下条命令是否执行
command1 && command2
command1 || command2
if语句:
if (条件)
then (执行一组命令)
else(执行另一组命令)
fi
for语句:
for 名字 in 字
do
(执行一组命令)
done
while语句:
while(表达式)
do
(执行一组命令)
done
test表达式或[ 表达式 ]
-f file file是一个文件
-d file file是一个目录
-r file file可读
-w file file可写
-x file file可执行
-s file file长度为非零
read命令从标准输入读入值,赋给shell变量:
read name 从命令行读入值放到变量name里,之后可用$name调出