Đã `người đàn ông ls> temp.txt`. Textfile đầu ra bị hỏng


27

Khi tôi thực hiện man ls > temp.txtcác tập tin văn bản đầu ra bị hỏng. Do bị hỏng tôi có nghĩa là các chữ cái đầu tiên và cuối cùng trong một số từ được lặp lại quá mức.

Một số dòng đầu tiên trong temp.txt:

LS(1)                     BSD General Commands Manual                    LS(1)

NNAAMMEE
     llss -- list directory contents

SSYYNNOOPPSSIISS
     llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]

DDEESSCCRRIIPPTTIIOONN

Và như vậy. Không có chuyển hướng man lslà hoàn toàn bình thường. Chuyện gì đang xảy ra vậy?


Thật thú vị, xem tệp bằng cách sử dụng lesshoặc morehiển thị định dạng chính xác. Nếu bạn sử dụng vim, nó sẽ hiển thị các khoảng trống thô ( ^H) với các chữ cái phụ.
Kelvin

2
Các tập tin của bạn bị trục trặc.
Cthulhu

Thật thú vị, lệnh man trên máy tính Linux của tôi không hoạt động như thế này khi đầu ra được chuyển hướng.
David Bailey

Câu trả lời:


30

Từ man man:

Để có phiên bản văn bản đơn giản của trang nam, không có dấu cách và dấu gạch dưới, hãy thử

    # man foo | col -b > foo.mantxt

manin phiên bản được định dạng của trang man, dấu gạch dưới và chữ kép được phân tích cú pháp

Nó không quá nhiều đến nỗi chúng được 'phân tích cú pháp' mà là "nếu bạn không có thiết bị đầu cuối, định dạng in đậm sẽ được hiển thị dưới dạng ký tự lặp lại". Khi bạn nối nó với một thiết bị đầu cuối (vt100, xterm, Terminal, v.v.), người đàn ông nhận ra thiết bị đầu cuối và gửi các mã điều khiển thích hợp để làm màu, đậm, gạch chân và tương tự. Nó được phân tích cú pháp chính xác - chỉ cho một loại thiết bị đầu cuối null.

bình luận của MichaelT


21

Ngày xửa ngày xưa, các máy tính thường được nối với các loại điện báo (máy điện báo) sẽ in tất cả văn bản trên giấy theo thời gian thực khi nhận được. Mặc dù các nhà xuất bản từ xa không có bất kỳ cơ sở nào cho văn bản được gạch chân hoặc in đậm, việc xuất ra một gạch chân, gạch chân và in một cái gì đó khác sẽ khiến một cái gì đó khác xuất hiện được gạch chân. Tương tự như vậy, xuất ra một ký tự, khoảng cách giữa và xuất ra cùng một ký tự sẽ có xu hướng làm cho ký tự đó trông tối hơn, mặc dù hiệu quả của nó sẽ thay đổi tùy theo chất lượng của dải băng được cài đặt (nếu dải băng cũ và yếu, gõ hai ký tự đó sẽ làm cho nó tối hơn đáng kể, với một dải ruy băng mới gõ nhân vật thậm chí một lần sẽ đạt được độ đen tối đa). Hơn nữa, ngay cả khi người dùng không được gắn vào máy in,manđối với bộ đệm in sẽ khá phổ biến, điều này có thể giải thích tại sao mansẽ hành xử theo cách đó ngay cả khi đầu ra được chuyển hướng.

BTW, trên một số máy in (và thậm chí cả máy in từ xa), hiệu suất của _←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←Gnó sẽ kém hơn đáng kể ___________←←←←←←←←←←←UNDERLINING, vì trước đây đòi hỏi đầu in phải lặp lại hướng ngược lại (và thường làm lu mờ mục tiêu của nó ở cả hai đầu). Điều tương tự cũng sẽ đúng khi sử dụng in đậm nhiều lần tấn công, nhưng hành vi đó thực sự có thể có lợi vì lần đầu tiên mỗi ký tự được in sẽ ngay lập tức đi theo một ký tự lùi và lần thứ hai thì không. Nếu đầu in đang tăng tốc trong khi in ký tự đầu tiên, điều đó sẽ khiến nó bị lệch một chút so với đầu thứ hai, làm cho hiệu ứng mặt đậm có hiệu quả hơn.


Càng tìm hiểu về Unix, tôi càng thấy nó bị vướng với khả năng tương thích ngược, giống như Windows.
Siyuan Ren

Bài học lịch sử gọn gàng! Tuyệt vời để xem tại sao các phương pháp nhất định có thể được ưa thích hơn các phương pháp khác.
Dustin Wheeler

15

Câu trả lời của Mateusz là chính xác, nhưng đáng để chỉ ra rằng thay vì tước bỏ định dạng dành cho một tty, bạn có thể có định dạng người đàn ông khác.

Ví dụ: bạn có thể nhận bản pdf được định dạng độc đáo thay vì:

man -t ls | pstopdf -i -o ~/ls.pdf

Tôi đã sử dụng OnyX trong nhiều năm nay chủ yếu để có được các trang người đàn ông của tôi được in như thế này. Không còn nữa! Tôi sẽ viết điều này thành một kịch bản sẽ thực hiện tất cả các trang man trên hệ thống của tôi. Cảm ơn rất nhiều vì điều này vì tôi đã từ bỏ tìm kiếm từ lâu bất kỳ lý do tại sao tôi đang sử dụng OnyX. Tôi rất thích làm những việc như thế này từ Terminal và bây giờ tôi có thể.
dùng3439894

Tính năng tốt đẹp. Có cách nào đơn giản để xuất html ngoài cái này không? gzip -dc $(man -w ls) | groff -Thtml -mandoc -c > /tmp/man-ls.html
Kelvin

Trang dành cho người đàn ông nói rằng -tcác định dạng có groff -Tps ...và từ chạy chuỗi trên / usr / bin / man, dường như được mã hóa cứng. Và vì -Tpsghi đè GROFF_TYPESETTER, giải pháp của bạn có thể khả thi nhất. Mặc dù bạn đang thiếu một bước trong đường ống của bạn. Bạn muốn tbl rồi. Hãy thử man -d lsxem đường ống mà nó sử dụng.
Tim B

6

Để thay thế, tôi có hàm shell sau được xác định (được gọi từ plugin OS X của Oh-my-ZSH ):

man-preview () {
    man -t "$@" | open -f -a /Applications/Preview.app
}

Điều này dẫn đến trang man mong muốn được mở trong Bản xem trước với tất cả các định dạng đẹp mà người ta có thể mong muốn. Thật dễ dàng để thêm bí danh duy nhất này vào ~/.profile(Tôi nghĩ pmanlà dễ hơn man-preview, vì vậy tôi đã đặt alias pman='man-previewtrong tôi ~/.zshrc).

PS Tôi đã thấy pmanchức năng được xác định trong các tệp chấm khác nhau trên internet, Oh-my-ZSH chỉ là nơi tôi xác định.


2

Hoặc bạn có thể sử dụng ManOpen của Carl Lindberg để tra cứu và in bất kỳ trang nam nào. ManOpen được phát triển đầu tiên cho NeXtStep và vẫn hoạt động nhờ Carl.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.