> 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 文件描述符舉例。
如果沒有參數,則將標準輸入復制到標準輸出;1個參數,將該文件作為輸入,內容輸出到屏幕(標準輸出);2個參數,第一個作為輸入,第二個作為輸出,即將文件1拷貝到文件2中。
> 刪除
刪除一個字符 x
刪除當前一行 dd
刪除光標之后單詞剩余部分 dw
刪除光變之后改行剩余部分 d$