本文是 i 春秋作家「xiehudie」表哥分享的技術文章,公衆号旨在為大家提供更多的學習方法與技能技巧,文章僅供學習參考。本套Linux進階教程共分為14章,歡迎大家前來系統學習。
前期回顧>>
第1章:訪問命令行
第2章:從命令行管理文件
第3章:編輯、查看和編輯文本文件
一、标準輸入、标準輸出和标準錯誤
一個運行的程序(或稱為進程)需要從某位置讀取輸入并輸出寫入某位置。從shell提示符運行的命令通常從鍵盤讀取其輸入,并将輸出發送到其終端端口。
進程使用稱為文件描述符的編号通道來獲取輸入并發送輸出。所有進程在開始時至少要有三個文件描述符。标準輸入(通道0)從鍵盤通道讀取輸入。标準輸出(通道1)将正常輸出發送到終端。标準錯誤(通道2)将錯誤消息發送到終端。如果程序打開連接至其他文件的單獨連接,則可能要使用更大編号的文件描述符。(進程1/0通道,如下圖所示)
通道(文件描述符)如下圖所示。
二、将輸出重定向到文件
1/0重定向可更改進程獲取其輸入或輸出的方式。該進程并不是從鍵盤獲取輸入,也不是将輸出和錯誤發送到終端,而是執行文件讀取或寫入。重定向允許我們将消息保存到通常發送給終端窗口的文件中。或者我們也可以使用重定向來丢棄輸出或錯誤,這樣它們就不會顯示在終端上或保存下來。
重定向stdout可以阻止進程輸出顯示在終端上。僅重定向stdout不會組織sderr錯誤消息顯示在終端上。如果文件不存在,則會創建文件。如果文件确實存在,但是所需的重定向沒有附加到文件,則該文件的内容将被覆蓋。
如果想丢棄消息,特殊文件/del/null以靜默方式重定向到其自身的通道輸出,并且始終是空文件。(輸出重定向操作符,如下圖所示)
輸出重定向示例:
1. 保存時間戳
2. 将日志的最後一百行複制到另一個文件
3. 将四個文件連接成一個文件
4. 将主目錄的隐藏文件名和常規文件名列出到文件中
5.将輸出和生成的錯誤消息存儲在一起
6.将輸出和生成的錯誤附加到現有文件
三、構建管道
管道是一個或多個命令的序列,用豎線字符(|)分隔。管道将第一個命令的标準輸出下一個命令的标準輸入。(如下圖所示,進程1/0傳送)
在某個進程輸出到終端之前,管道允許另一個進程操作和格式化該進程的輸出。為便于理解,可以這樣想象一下:數據正在通過管道從另一個進程“流”向另一個進程,并且在其流動的管道中每個命令都會略微對其做些改動。
1.管道示例:
2. ls命令的輸出傳送到wc -l,用于統計從1s收到的行數并将該行數顯示在終端
3. 在此管道中,head将輸出ls -t輸出内容的前10行,并且最終結果會重定向到一個文件。
四、管道、重定向和tee命令
當重定向與管道組合時,shell會首先設置整個管道,然後重定向輸入/輸出。如果在管道的中間用了輸出重定向,則輸出将轉至文件,而不是前往管道中的下一個命令。
tee命令客服了這個限制。在管道中,tee将其标準輸入複制到其标準輸出中,并且還将标準輸出重定向到指定為命令參數的文件。如果我們将數據想象成流管道的水,那麼可将tee視覺化為管道中的T性接頭,它負責輸出在兩個方向上的流向。(如下圖所示,利用tee處理1/0傳送)
使用tee命令的管理示例:
1. 将ls命令的輸出重定向到文件,并且将輸出傳遞到less以便在終端以一次一屏的方式顯示
2. 在管道末尾使用tee,則可以保存命令的最終輸出并且同時輸出到終端。
五、使用vim編輯文件
Linux的一個重要設計原則是信息和配置設置通常都存儲在基于文本的文件中。這些文件可以采用各種結構方式,如設置列表、類似INI的格式、結構化XML或YAML等等。但是,文本文件的優點在于能用任何簡單的文件編輯器進行查看和編輯。
Vim管理模式:
Vim的一個不同尋常之處是它有幾個運行模式,包括命令模式、擴展模式、編輯模式和可視模式。根據具體的模式,我們可以發出命令、編輯文本或處理文本塊。
第一次打開vim時,它會以命令模式啟動,可用于導航、剪切和粘貼,以及其他文本操作。通過單字符擊鍵操作進入各個其他模式,訪問特定的編輯功能:
1. 按i鍵進入插入模式,其中鍵入的所有文本将變為文件内容。按Esc鍵返回命令模式。
2. 按v鍵可選擇文本塊。用于進入可視模式的擊鍵操作(v、shift v或ctrl v)也可用于退出。
3. 按:鍵啟動擴展命令模式,可以執行的任務包括寫入文件(進行保存),以及退出vim編輯器等。
最低程度的基本vim工作流:
Vim具有高效的組合擊鍵操作,可進行高級編輯任務。I鍵可使vim進入插入模式。在此之後輸入的所有文本内容,直到我們退出插入模式;Esc鍵可退出插入模式,并讓vim返回命令模式;u鍵可撤銷最近的編輯;按x鍵可删除單個字符;:w命令可寫入(保存)文件,并保留在命令行模式中以進行更多編輯;:wq命令可寫入(保存)文件并退出vim;:q!命令了退出vim,同時放棄上次寫入以來進行的所有更改。
重排現有文本:
在vim中,複制和粘貼稱為拖拉和放置,使用的命令字符是y和p,首先将光标定位到要選擇的第一個字符,然後進入可視模式。使用箭頭鍵拓展可視選擇,準備好時,按y将所選内容拖拉到内存中。将光标定位到新位置上,然後按p将所選内容放置到光标處。
Vim中的可視模式:
可視模式是一種突出顯示和操作文本的絕佳方式,他有三種擊鍵模式:
字符模式:v
行模式:shirt v
塊模式:ctrl v
字符模式可突出顯示文本塊中的句子,屏幕的底部會出現visual一詞;按v可進入可視字符模式;按shirt v可進入行模式,屏幕底部會出現visual line一詞;可視塊模式非常适合于操作數據文件,從光标位置,按ctrl v可進入視覺塊,屏幕的底部會出現visual block一詞,使用箭頭可突出顯示要更改的部分。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!