Làm thế nào để đổ một trang người đàn ông?


45

Làm thế nào tôi có thể 'mèo' một trang người đàn ông như tôi sẽ 'mèo' một tập tin để chỉ nhận một đống nội dung?

Câu trả lời:


40

Trước hết, các tệp man thường chỉ là các tệp văn bản được nén ở đâu đó trong hệ thống tệp của bạn. Vì milage của bạn sẽ thay đổi việc tìm kiếm chúng và bạn có thể muốn phiên bản được xử lý và định dạng mà người đàn ông cung cấp cho bạn thay vì nguồn, bạn chỉ có thể kết xuất chúng bằng mancông cụ. Bằng cách nhìn vào man man, tôi thấy rằng bạn có thể thay đổi chương trình được sử dụng để xem các trang man với -Pcờ như thế này:

man -P cat command_name

Nó cũng không có giá trị gì mantự động phát hiện khi bạn chuyển đầu ra thay vì xem nó trên màn hình, vì vậy nếu bạn sẽ xử lý nó bằng một cái gì đó khác, bạn có thể bỏ qua bước đó như sau:

man command_name | grep search_string

hoặc để đổ vào một tệp:

man command_name > formatted_man_page.txt

1
sử dụng -P không làm cho tệp đầu ra có thể đọc được gọn gàng. Nó được viết nguệch ngoạc với tất cả các ký tự ctrl-H. Tôi đã từng làm người đàn ông cmd>! man.cmd và mở man.cmd và thực hiện '% s / ^ H .// g' để xóa các ký tự điều khiển gây phiền nhiễu để thể hiện chữ in đậm và chữ nghiêng. Nhưng điều này vẫn có một số vấn đề khi có các nhân vật đặc biệt khác. Tôi vẫn đang tìm kiếm một phương pháp tốt để tránh chỉnh sửa thủ công cho đầu ra.
Chân Kim

@ChanKim Bạn đang làm gì đó sai hoặc có một số cấu hình không chuẩn theo cách của bạn bởi vì cả hai phương pháp ở đây thực tế đều tạo ra đầu ra sạch được định dạng trong văn bản thuần túy không có ký tự điều khiển bổ sung. Bạn có chắc chắn rằng bạn không có manbí danh cho một cái gì đó hoặc cờ buộc trong vỏ của bạn đang tách bạn ra khỏi chức năng bình thường của man?
Caleb

1
@Caleb, tôi xác nhận vấn đề của OP. CentOS phát hành 6.7 (Final), / usr / bin / man gcc> j, chỉnh sửa 'j', tất cả các ctrl-H đều ở trong đó. Câu trả lời hay nhất tôi tìm thấy là tại Commandlinefu.com/commands/view/2417/ trên
Charles Roth

1
man command_name > formatted_man_page.txtsẽ gây ra một số từ trùng lặp.
Zigii Wong

52

Để có được một tệp trang người đàn ông ASCII, không có các nỗ lực backspace / gạch dưới khó chịu ở phần gạch chân và các chuỗi kỳ lạ để thực hiện phép ẩn:

man ksh | col -b > ksh.txt

6
Bạn xứng đáng nhận được nhiều sự ủng hộ hơn
Labo

2
Xin chào, tại sao đầu ra của người đàn ông chứa các ký tự trùng lặp? và làm thế nào col -b loại bỏ nó? Cảm ơn trước.
saurabheights

2
@saurabheights - Người đàn ông cố gắng thực hiện gạch chân và in đậm văn bản và có thể một số thứ khác có dấu cách, ký tự trùng lặp, thoát sequenc es, v.v. như văn bản trên một thiết bị đầu cuối. Tôi chưa đọc nguồn col, nhưng có lẽ nó chỉ kiểm tra stdin byte theo byte và không truyền các khoảng trống, v.v. đến thiết bị xuất chuẩn. Trang người đàn ông của col đọc giống như ai đó đã viết nó đặc biệt để lọc đầu ra của người đàn ông.
Bruce Ediger

1
được rồi, cái đó có lý. Những ký tự như vậy (ẩn) có thể gây ra các ký tự trùng lặp. Cảm ơn Bruce.
saurabheights

Bạn thực sự thực sự xứng đáng upvotes chế độ. Có "col" cho cột không?
Đại số

24

Các trang man thường là troffcác tệp được xử lý trước và bạn có thể chuyển đến văn bản đơn giản với,

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt

grofflà một gói cho troff.

Thêm thông tin ở đây .

Trước tiên, bạn có thể cần sử dụng gzip để giải nén các tệp trang man và bạn vẫn sẽ có nhiều thông tin định dạng trong đầu ra.


4
+1 để nói về groff / troff và định dạng của trang man
lgeorget

11

Tôi làm điều này tất cả các thời gian. Dòng lệnh này làm cho tôi hạnh phúc:

man man | col -bx > man.txt

col -b loại bỏ không gian.

col -bx cũng thay thế các tab bằng dấu cách là sở thích mạnh mẽ của tôi.

Nếu tôi muốn văn bản được định dạng theo chiều rộng của sở thích của mình trong khi đọc, thì tôi thay đổi lệnh này thành:

MANWIDTH=10000 man man | col -bx > man.txt

man man | col -bx > man.txtđã làm cho tôi. Cảm ơn bạn.
JaredH

6

Chỉ cần sử dụng manlệnh - bạn có thể chuyển đầu ra thành những thứ khác giống như bạn có thể làm với catmột tệp.


1
Tôi thích sự đơn giản.
Joel Sjögren

3

Nếu bạn chỉ muốn catmột trang, bạn có thể chỉ cần đặt nó vào cat:

man ls | cat

Nếu bạn muốn chuyển nội dung của nó vào một tệp:

man ls > ls_manpage_dump.txt
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.