這一節主要學習了重定向,管道和vim編輯器
首先看看輸出重定向
1 > 或者> 都表示将正确的資訊覆寫輸出重定向, 1>>或者>>表示追加的重定向
2 > 表示将錯誤的資訊覆寫輸出重定向, 2>>表示追加的錯誤資訊重定向
&> 将所有的資訊,正确或者錯誤都定向到一個檔案,也可以使用 > aa 2>&1 或者 2>aa 1>&2的格式,不過很明顯後者比較複雜
如下所示 第一次可以将正确的資訊定向到aa,第二次錯誤的資訊1>無法定向過去,清空檔案之後無法寫入新的内容;第三次2>将錯誤資訊定向到aa
這個例子是豆子利用rsync在蘋果伺服器和linux之間進行拷貝,他會把失敗和成功的資訊都寫入同一個日志檔案
除了輸出重定向,輸入也可以重定向,比如下面建立一個test文檔,以eof結束
接下來看看管道的作用,他可以把前一個指令的結果傳給後一個指令作為輸入。一個很常見的使用就是結合grep進行查詢
看看下面的例子,首先建立一個新的使用者beanxyz,注意大寫
拷貝 passwd 檔案到本地, 然後執行 cat -n passwd | grep beanxyz, 可以看見找到了小寫的使用者名
如果添加了-i (ignore),則可以忽略大小寫,可以獲得兩個使用者的資訊
如果指定了a3 (下面3行),b3(上面3行),還可以獲得附近幾行的資料
如果使用了 -v,可以進行反向過濾,除了 ‘beanxyz’之外的行數都列出來
有的時候,如果需要儲存資料到某個臨時檔案,可以使用tee 進行寫入,如果要追加資訊,可以使用-a 選項
小測試:如何擷取/etc/passwd 裡面第11到20行的資料?
思路:先擷取前20行資料,再擷取後10行資料就可以了
接下來看看重頭戲 vim的使用。
首先看看vim編輯器裡面如何顯示行号,在單個檔案裡輸入 :set number 即可
但是一旦退出,這個功能就沒有了。使用者可以更改 家目錄下面的 .vimrc 檔案,添加一條資訊,則該使用者下所有的文本檔案用vim打開都可以顯示行号了
類似的,如果想讓該功能對所有使用者都生效,可以直接修改 /etc/vimrc檔案
打開 /etc/passwd 看看效果
接下來看看vim有哪些常用的指令。簡單的說,vim 有3種模式,插入模式,指令行模式和末行模式。
模式的切換:
從normal進入insert模式下,可以通過i,o,a 或者i,o,a進入,差別無非在于插入光标的位置有所不同,個人覺得記住i 大部分時候就夠用了
從insert 退出到normal, 按esc即可
從normal進入末行模式,可以輸入:wq! 強制儲存退出 或者/ 進行關鍵字的搜尋
每個模式下都有很多各自的指令組合。下面是一些最最常見的,基本上會用了之後普通的文本編輯應該沒問題了
normal模式下:
删除光标所在的字元,按x即可
複制光标所在的行 yy
複制光标所在的單詞 yw
複制光标以下的3行 y3
剪切所在的行 dd
粘貼 p
替換字元 r然後輸入要替換的字元
替換一堆字元串 r然後輸入替換的字元串
撤銷上一步 u
上面操作都是針對行或者單詞,不夠靈活,如果想複制粘貼一段話怎麼做?可以在視覺模式裡進行操作。
輸入v,然後通過光标標明一大段内容,按y複制,按p即可粘貼
如果想注釋掉一大堆代碼怎麼辦?可以在insert模式下手動改,一個更簡單的方法是ctrl+v, 進入視覺塊模式,然後高亮所有行的第一列,輸入shift+i (insert模式),然後輸入#注釋符号,等待1秒即可
insert 模式下:
這個和普通的文本編輯基本沒啥差別,可以更改,删除,添加資料,如果可以使用滑鼠,複制粘貼更容易可以直接高亮一堆字元之後點選滾輪就行了
末行模式下:
搜尋關鍵字,輸入/ keyword,可以通過按n或者n進行下一個比對
強制儲存 :w!
強制退出 :q!
強制儲存退出 :wq! 或者 x!
另存 :saveas /path
分屏 :split, 然後可以通過ctrl+w進行切換
關閉分屏 :close
跳轉到某一行 :number 就可以跳到對應的行号了
最後,如果想知道更多的指令,可以通過vimtutor 進行學習