Shell Notes(1)

> 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.

image图1 文件描述符举例。

如果没有参数,则将标准输入复制到标准输出;1个参数,将该文件作为输入,内容输出到屏幕(标准输出);2个参数,第一个作为输入,第二个作为输出,即将文件1拷贝到文件2中。

> 删除

删除一个字符 x

删除当前一行 dd

删除光标之后单词剩余部分 dw

删除光变之后改行剩余部分 d$

posted @ 2012-08-26 16:09  郝玉琨  阅读(204)  评论(0编辑  收藏  举报