當我執行 man ls > temp.txt
時,輸出文本文件已損壞。損壞是指某些單詞的首字母和尾字母重複過多。
temp.txt
中的前幾行:
LS( 1)BSD通用命令手冊LS(1)NNAAMMEE llss-列出目錄內容。沒有重定向, man ls
是完全正常的。發生什麼事了?
當我執行 man ls > temp.txt
時,輸出文本文件已損壞。損壞是指某些單詞的首字母和尾字母重複過多。
temp.txt
中的前幾行:
LS( 1)BSD通用命令手冊LS(1)NNAAMMEE llss-列出目錄內容。沒有重定向, man ls
是完全正常的。發生什麼事了?
從 man man
:
要獲取手冊頁的純文本版本(不包含空格和下劃線),請嘗試
#man foo | col -b > foo.mantxt
man
打印格式化的手冊頁版本,下劃線和雙字母被分析 s>
不是要對其進行“解析”,而是“如果沒有終端,則將粗體格式顯示為重複字符”。一旦將其連接到終端(vt100,xterm,終端等),男人就會識別出該終端並發送適當的控制代碼以進行彩色,加粗,下劃線等操作。可以正確解析它-僅用於空終端類型。
評論由MichaelT sup>
很久以前,計算機通常被連接到電傳打字機(電傳打字機),該電傳打字機將在接收到文字後實時將所有文字打印在紙上。儘管電傳打字員沒有任何用於帶下劃線或粗體文本的功能,但輸出下劃線,退格和打印其他內容會導致其他內容帶有下劃線。同樣,輸出一個字符,退格並輸出相同的字符會趨於使該字符看起來更暗,儘管效果會因所安裝色帶的質量而異(如果色帶又舊又弱,則兩次鍵入相同的字符會使它明顯變暗;用新的色帶鍵入字符,即使一次也將達到接近最大的黑度)。此外,即使用戶沒有連接到打印機,將 man
的輸出重定向到打印後台處理程序也很常見,這可能解釋了為什麼 man
會表現出來
BTW,在某些打印機(甚至是電傳打印機)上, _←U_←N_←D_←E_←R_←L_←I_←N_的性能←I_←N_←G
會明顯比 ___________←←←←←←←←←←←←上←
差,因為前者需要打印頭反復反轉方向(通常是過衝)其兩端的目標)。當使用多擊黑體字時也是如此,但是這種行為實際上可能是有利的,因為第一次打印每個字符將立即跟隨退格字符,而第二次則不會。如果在打印第一個字符時打印頭加速,則將導致它相對於第二個字符稍微錯位,從而使黑體效果更有效。
Mateusz的答案是正確的,但值得指出的是,與剝離tty的格式相比,您可以使用不同的man格式。
例如,您可以獲取格式正確的pdf
man -t ls | pstopdf -i -o〜/ ls.pdf
或者,我定義了以下shell函數(從 Oh-my-ZSH的OS X插件調用):
man-preview( ){man -t“ $ @” | open -f -a /Applications/Preview.app}
這將導致在預覽中打開所需的手冊頁,其中包含所有可能需要的漂亮格式。將這個別名添加到您的〜/ .profile
中很容易(我認為 pman
比 man-preview
容易,所以我已經在我的〜/ .zshrc
中設置 alias pman ='man-preview
)。
P.S。我已經在互聯網上的各種點文件中看到了 pman
函數,Oh-my-ZSH恰好是定義我的位置。
或者您可以使用Carl Lindberg的ManOpen查找和打印任何手冊頁。 ManOpen最初是為NeXtStep開發的,但由於Carl的支持,仍然可以使用。