> vi复制粘贴
光标移动到要复制的部分的开头,Esc退出插入模式,按v进入Visual模式,用hjkl选中要复制的部分
按Y或者yy,复制
移动光标到目标位置,按p,粘贴
> echo –e
参数 –e 可以使echo解释由反斜杠“\”转义的字符,转义字符一定要由双引号引起来
echo –E
与-e相反,禁止对转义字符“\”的解释,默认如此
> echo –n
禁止换行符终止消息
> script=$(basename $0)
这是替换的命令。可以理解为script=$basename,然后用的时候,将$basename替换为$0
> $#
参数个数,不含脚本名自身。
eg. vi $#是0; vi test $#是1
> $$
脚本运行时的进程编号PID
> $?
运行一条指令后,用$?捕捉指令执行返回状态
> $0,$1,$2。。。
$0是脚本文件名,$1,$2为脚本运行时输入的参数,一次编号
> shift
脚本参数$1,$2,$3...维护成一个队列,使用一次shift后,$1从队列中移出,之后,$2-->$1, $3-->$2 ...
> $*
表示参数的列表,不含$0,即脚本文件名
for argv in $* 可以用来遍历列表中的参数,也可以直接用简写 for argv 来表示
> Here 文档
以 << 开头,表示后面紧跟的是一个Here文档。<< 后面跟着一组成对的mark,mark中间的内容是Here文档的内容。mark可以是一个或多个符号。结尾的mark必须独占一行。
shell 将mark之间的所有内容当做标准输入发送给进程。
eg.
cat >file1 <<'End of file1'
This is a file.
It contains two lines.
End of file1
> 1>&2
一般加在echo命令后面,将本条输出重定向到标准错误输出
> 文件描述符
exec n> outfile 打开一个输出文件outfile,并赋值给n;之后,向outfile写数据,直接将输出指向n即可
exec m< infile 打开一个输入文件infile,并复制给m;之后,从infile读数据,直接用m来读就可以了。
<& 复制一个输入文件描述符
>& 复制一个输出文件描述符
> 左算子是文件描述符,右算子是文件; >& 左右算子都是文件描述符。
特例: >&n 将标准输出1赋值(即重定向到)n
<&m 将标准输入0赋值(即重定向到)m
eg.
如果没有参数,则将标准输入复制到标准输出;1个参数,将该文件作为输入,内容输出到屏幕(标准输出);2个参数,第一个作为输入,第二个作为输出,即将文件1拷贝到文件2中。
> 删除
删除一个字符 x
删除当前一行 dd
删除光标之后单词剩余部分 dw
删除光变之后改行剩余部分 d$