vi文本替换:
:s/old/new (把当前行第一次出现的old字符串替换成new字符串)
:s/old/new/g (把当前行出现的所有old字符串替换陈gnew字符串)
:%s/old/new/g (把文件中出现的所有old字符串替换陈gnew字符串)
:10,20s/old/new/g (把文件中第10到20行出现的所有old字符串替换陈new字符串)
vi文本多行移动、复制、删除
:n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下;
:n1,n2 co n3 复制n1-n2行(包括n1,n2)到n3行之下;
:n1,n2 d 删除n1-n2行(包括n1,n2)行;
vi一行文本缩进
>> 向后缩进一个word space
<< 向前缩进一个word space
:set sw = 4 设置每次缩进的空格数
命令模式下vi光标光标换行移动
gg:光标移动至第一行
G:光标移至最后一行
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
末行模式:
0/1 :光标移动到第一行
$: 光标移动到最后一行
vi删除
d^:删除从行首到当前光标所在位置的内容。
d$:删除从当前光标所在位置到行末的内容。
dw:删除从当前光标所在位置到字末的内容。
3dd:从当前光标所在位置向下删除3行。
shell 整型变量自增(加1)的几种方法
#!/bin/sh
a=1
a=$(($a+1))
a=$[$a+1]
a=`expr $a + 1`
let a++
let a+=1
((a++))
echo $a
整数运算
article_num=$[$num * 20 /100]; #`echo "num*0.2"|bc`;
浮点数运算
activity_num=`echo "scale=2;$num*0.01"|bc`;
当你 exit 0 的时候,在调用环境 echo $? 就返回0,也就是说调用环境就认为你的这个程序执行正确
当你 exit 1 的时候,一般是出错定义这个1,也可以是其他数字,很多系统程序这个错误编号是有约定的含义的。
但不为0 就表示程序运行出错。 调用环境就可以根据这个返回值判断 你这个程序运行是否ok。
. $path/file 不支持正则表达式如 *或者 *.*
得到时间格式字符串
$`date +%Y%m%d%H%M%S`
20161016021612
shell用变量的值作为新的变量名
str=java
java_new="wo xiang yao de"
tmp=${str}_new
dest=`eval echo '$'$tmp`
echo ${dest} #wo xiang yao de