Vim編輯器?
Vim模式
-
command模式:該模式下鍵盤中的字母有特殊含義。如:G是跳轉到最后一行;gg是跳轉到第一行。
-
edit模式:在command模式下按i進入該模式。在該模式可以輸入內容。在該模式下按esc返回command模式。
-
extended command模式:在command模式下按:,進入該模式。在該模式下,可以保存文件(:w),強制退出編輯(:q!),報錯并退出(:wq)
-
visual edit模式:在command模式下按v(單個字符選中),V(整行選中)或ctrl+v(按矩形選中)進入該模式。在該模式下,用于選中文件,隨后可以復制或刪除選中的內容
命令行模式快捷鍵
定位文件內容:
-
單個字符移動,方向鍵↑↓←一→和鍵盤字母(h j k l)
-
w,向后1個word(word開頭);b,向前1個word(word開頭);
-
e,向后1個word(word結尾);
-
^,行首第一個字母;$,行尾最后一個字母;數字0,行首第一個字母。
-
(,上一個句子頭部;),下一個句子尾部。
-
{,上一個段落頭部;},下一個段落尾部。
-
gg,文章第一行;G,文章最后一行。
-
45G,跳轉到45行。
插入模式:
-
i,當前位置插入。
-
1,行首插入。
-
a,當前位置追加。
-
A,行末追加。
-
o,向下新開一個空白行
-
O,向下新開一個空白行
復制:yy,復制1行,相當于y1y。以此類推y2y y2w y2b。
粘貼:p當前位置后粘貼;P當前位置前粘貼。
刪除:
-
X,刪除當前單個字符。5x,刪除當前字符和后續4個字符。
-
dw,刪除1個word,以此類推d5w d3b d2d d$
-
D,從當前刪除到最后,相當于d$
回退:
-
u,回退一個操作。
-
U,回退當前行所有操作。
前進:ctrl+r,前進一個操作,與u相對。
修改,相當于刪除后插入:
-
S,刪除當前字符,并進入編輯模式。
-
S,刪除當前行,并進入編輯模式。
-
c,代表替換動作,例如cw,刪除1個word,并進入編輯模式。
-
C,從當前刪除到最后,并進入編輯模式。
替換:
-
r,替換單個字符后回退到命令行模式。
-
R,替換模式,一直替換直到按EsC返回命令行模式。
擴展命令行模式
-
:1,10d,刪除1到10行
-
:%s/10.5.5/10.1.8/g,將所有行中10.5.5替換為10.1.8
-
:5,$d,刪除第5行到最后一行
-
:w /path/to/file另存為/path/to/file。
-
:! date,執行date命令。
查找
-
/string,查看string字符串
-
/STRING\c,忽略大小寫查找string字符串
Linux輸入輸出重定向?
輸出重定向到文件
|通道名稱|描述|默認鏈接|用法| |-|-|-|-| |stdin|標準輸入|鍵盤|僅讀取| |stdout|標準輸出|終端|僅寫入| |stderr|標準錯誤|終端|僅寫入| |filename|其他文件|無|讀取/寫入|
輸入/輸出(I/O)重定向可更改進程獲取其輸入或輸出的方式。進程可以執行文件讀取或寫入,而不從鍵盤獲取輸入,也不將輸出和錯誤發送到終端。通過重定向,您可以將消息保存到文件,而不在終端上顯示輸出。
|用法|說明| |-|-| |> file|重定向stdout以覆蓋文件| |>> file|重定向stdout以附加到文件| |2> file|重定向stderr以覆蓋文件| |2> /dev/null|將stderr錯誤信息重定向到/dev/null,從而將它丟棄|
獨立輸出
查找/etc目錄下文件名是passwd的所有文件
find /etc -name 'passwd'
將找到的文件名覆蓋寫入passwd.list中
find /etc -name 'passwd' 1>passwd.list
#1>passwd.list可以省略1寫為passwd.list
#1和>之間不能有空格cat passwd.list
將找到的文件名追加到passwd.list中
find /etc -name 'passwd' >> passwd.list
將錯誤信息覆蓋寫入到passwd.err
find /etc -name 'passwd' 2>passwd.err
#如果不用root用戶會有權限不足的報錯
將錯誤信息扔掉
find /etc -name 'passwd' 2>dev/null
正確信息(標準輸出)
-
位置:直接顯示在終端(標準輸出,文件描述符
1
) -
內容:
find
命令找到的匹配文件路徑(如/etc/passwd
)
錯誤信息(標準錯誤)
-
位置:被重定向丟棄(
2>/dev/null
表示丟棄所有錯誤) -
內容:權限不足、目錄不存在等錯誤(如
find: /etc/ssh: Permission denied
)
將錯誤信息和正確信息覆蓋寫入到相同文件
find /etc -name 'passwd' > passwd.all 2>&1
將錯誤信息和正確信息追加寫入到相同文件
find /etc -name 'passwd' >> passwd.all 2>&1
輸出重定向到程序
管道符(|)實現,將上一個命令的輸出作為標準輸入傳遞給下一個命令
例:獲取ens33網卡ip地址
ip a | grep 'ens160$' | awk '{print $2}'
#hostname -I 也可以取ip
管道符后的命令必須能夠接受標準輸入,才可以配合管道符使用。但是ls不接受管道傳遞的標準輸入。
echo /etc/passwd | xargs ls -l
tee命令
tee命令覆蓋保存到文件
find /etc -name 'passwd' 2>/dev/null | tee passwd.list
cat passwd.list
tee命令追加保存到文件
find /etc -name 'passwd' 2>/dev/null | tee -a passwd.list
cat passwd.list
標準輸入重定向給程序
cat命令標準輸入數據
cat /etc/hosts
cat < /etc/hosts
shell讀取到EOF時,代表標準輸入完成
cat << EOF
> hello
> world
>EOF
判斷一個命令是否接受標準輸入:最簡單的方式就是將文件內容作為標準輸入重定向給程序。