• 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$

  • 相关阅读:
    BZOJ.1016.[JSOI2008]最小生成树计数(Matrix Tree定理 Kruskal)
    BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
    BZOJ.1014.[JSOI2008]火星人(Splay 二分 Hash)
    BZOJ.4903.[CTSC2017]吉夫特(Lucas DP)
    BZOJ.1011.[HNOI2008]遥远的行星(思路 枚举)
    BZOJ.1013.[JSOI2008]球形空间产生器(高斯消元)
    BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)
    BZOJ.1003.[ZJOI2006]物流运输(DP 最短路Dijkstra)
    BZOJ.1001.[BeiJing2006]狼抓兔子(最小割ISAP)
    BZOJ.1085.[SCOI2005]骑士精神(迭代加深搜索)
  • 原文地址:https://www.cnblogs.com/YFYkuner/p/2657442.html
Copyright © 2020-2023  润新知