linux 解決man命令輸出到文件開啟亂碼問題

2021-07-12 05:28:12 字數 1307 閱讀 8666

為了寫一篇關於linux命令的文章,懶得手動去輸入,就想著把man命令的內容輸出到.txt文件,然後在windows直接拷貝貼上。使用命令:

[root@centos ~]# man command >/home/command.txt
結果輸出的文件在windows作業系統下開啟顯示亂碼(在linux作業系統下用vim命令檢視同樣顯示亂碼),在word下採用utf-8或其它編碼都不行。

解決辦法就是稍微更改一下命令,改為:

[root@centos ~]# man command | col -b >/home/command.txt
再次開啟command.txt,一切正常。

在linux下使用vim命令檢視生成的command.txt檔案時我們會發現其實此「亂碼」並非彼亂碼,只是在字元間多了很多^h字元,這些字元在vim下顯示為藍色,一般表示控制字元,在windows下用記事本工具開啟則這些字元顯示為亂碼。

既然我們找到了「亂碼」的規律,接下來就容易解決了。我們可以直接使用vim命令解決,具體方法如下:

在編輯模式下,輸入進入命令模式,在後面輸入%s/^h//g。完整的就是:%s/^h//g。(一定注意輸入^h的方法是先按住ctrl鍵不放手,然後依次鍵入v和h,copy是沒有用的,要手動輸入)輸入完成後按enter鍵執行命令。待命令執行完成之後,我們來檢視結果,發現依然不是我們想要的,因為同時出現了很多重複的字母。這又該怎麼解決呢?也不用著急,我們稍稍修改一下命令即可解決了。具體是將命令修改為:%s/.^h//g。按下回車鍵待命令執行完成,我們再來檢視一下這篇文件會發現已經完全恢復到它本來應該有的樣子了!

這是什麼原理呢?我們回過頭來再觀察一下那些有規律的「亂碼」,其實不僅僅是控制字元^h,在這個字元前面還有乙個字元或者空格,我們需要同時將之刪除。所以對命令進行簡單的調整後問題迎刃而解。

在第乙個解決方法中,其中的關鍵是命令col。col指令是乙個標準的文字輸入過濾器,它從標註輸入裝置讀取文字內容,並把標註內容顯示到標註輸出裝置。在許多unix/linux說明檔案裡,都有rlf控制字元。當我們運用shell特殊字元」>」和」>>」,把說明檔案的內容輸出成純文字檔案時,控制字元會變成亂碼,col指令則能有效濾除這些控制字元。

關於col命令的詳情,:

在這個問題中,將man手冊的內容輸出到文字檔案中時會帶有控制字元「h(表示backspace (退格))」,使用vim編輯器即可以看到。所以使用col命令帶-b引數即可以完成對此控制字元的過濾。

linux命令 使用man, 匯出man

要查乙個命令怎麼使用,使用 man 命令 eg man find,man ls info 命令 貌似也可以看,info find,info ls.通常用man.man和info就像兩個集合,它們有乙個交集部 分,但與man相比,info工具可顯示更完整的最新的gnu工具資訊。若man頁包含的某個工具...

shell命令輸出到變數

今天用指令碼來獲取程序id,並給相應程序傳送乙個訊號,shell命令獲得程序id的方法有三種 1.ps a grep cmdname awk 2.pidof cmdname 3.pgrep cmdname 注意,這裡cmdname的雙引號不要。這三種在bash和busybox ash裡面的執行結果稍...

Linux命令 幫助命令 man

man ls 檢視ls命令的幫助資訊 輸出結果和less命令一樣,需要空格,回車,上箭頭,下箭頭,pgup,pgdn,q等方式瀏覽 注意 由於這個檔案資訊量比較大,需要查詢某乙個字元,輸入 輸入l,查詢所有l字元資訊,然後按n鍵進行翻頁。回車後 按n翻頁 檢視選項可以輸入 l,檢視 l的選項內容是什...