linux 解决man命令输出到文档打开乱码问题
來源:http://www.th7.cn/system/lin/201406/59466.shtml
為了寫一篇關于linux命令的文章,懶得手動去輸入,就想著把man命令的內容輸出到.txt文檔,然后在Windows直接拷貝粘貼。使用命令:
[root@centos ~]# man command >/home/command.txt結果輸出的文檔在Windows操作系統下打開顯示亂碼(在linux操作系統下用vim命令查看同樣顯示亂碼),在word下采用UTF-8或其它編碼都不行。
解決辦法就是稍微更改一下命令,改為:
再次打開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命令的詳情,請瀏覽:http://myblog.jyc.edu.cn/?p=62。
在這個問題中,將man手冊的內容輸出到文本文件中時會帶有控制字符“H(表示Backspace (退格))”,使用vim編輯器即可以看到。所以使用col命令帶-b參數即可以完成對此控制字符的過濾。
總結
以上是生活随笔為你收集整理的linux 解决man命令输出到文档打开乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝冻结资金什么时候能取出来
- 下一篇: 贷款买车流程