Bagaimana cara membuang halaman manual?

46

Bagaimana saya bisa 'cat' halaman manual seperti saya akan 'cat' file untuk mendapatkan hanya dump konten?

LanceBaynes
sumber

Jawaban:

41

Pertama-tama, file man biasanya file teks gziped di suatu tempat di sistem file Anda. Karena jarak tempuh Anda akan berbeda-beda untuk menemukannya dan Anda mungkin menginginkan versi yang diproses dan diformat yang diberikan manusia kepada Anda alih-alih sumbernya, Anda bisa membuangnya dengan manalat. Dengan melihat man man, saya melihat bahwa Anda dapat mengubah program yang digunakan untuk melihat halaman manual dengan -Pbendera seperti ini:

man -P cat command_name

Juga tidak ada nilainya yang mansecara otomatis mendeteksi ketika Anda mem-pipe output-nya daripada melihatnya di layar, jadi jika Anda akan memprosesnya dengan sesuatu yang lain, Anda dapat langsung menuju ke langkah itu seperti:

man command_name | grep search_string

atau untuk membuang file:

man command_name > formatted_man_page.txt
Caleb
sumber
1
menggunakan -P tidak membuat file output terbaca dengan rapi. Ini ditulis dengan semua karakter ctrl-H. Saya biasa melakukan man cmd>! man.cmd dan buka man.cmd dan lakukan '% s / ^ H .// g' untuk menghapus karakter kontrol yang mengganggu untuk mewakili huruf tebal dan miring. Tetapi ini masih memiliki beberapa masalah ketika ada karakter khusus lainnya. Saya masih mencari metode yang baik untuk menghindari pengeditan manual ke output.
Chan Kim
@ChanKim Anda melakukan sesuatu yang salah atau memiliki konfigurasi non-standar menghalangi Anda karena kedua metode di sini sebenarnya menghasilkan keluaran bersih yang diformat dalam teks biasa tanpa karakter kontrol tambahan. Apakah Anda yakin tidak memiliki manalias atau sesuatu yang dipaksa di dalam cangkang Anda yang memisahkan Anda dari fungsi normal man?
Caleb
1
@ Caleb, saya mengkonfirmasi masalah OP. Rilis CentOS 6.7 (Final), / usr / bin / man gcc> j, edit 'j', semua ctrl-H ada di sana. Jawaban terbaik yang saya temukan adalah di commandlinefu.com/commands/view/2417/…
Charles Roth
1
man command_name > formatted_man_page.txtakan menyebabkan duplikat kata.
Zigii Wong
52

Untuk mendapatkan file halaman manual ASCII, tanpa upaya backspace / garis bawah yang mengganggu pada garis bawah, dan urutan aneh untuk dicetak tebal:

man ksh | col -b > ksh.txt
Bruce Ediger
sumber
6
Anda layak mendapatkan lebih banyak suara positif
Labo
2
Hai, mengapa output manusia pip berisi karakter duplikat? dan Bagaimana col -b menghapusnya? Terima kasih sebelumnya.
saurabheights
2
@saurabheights - man mencoba melakukan garis bawah dan teks tebal dan mungkin beberapa hal lainnya dengan backspaces, duplikat karakter, escape sequenc es, dll. Trik yang mungkin berfungsi jika Anda mencetak output man pada dot matrix atau printer lain, atau perlihatkan sebagai teks pada terminal. Saya belum membaca sumber col, tetapi mungkin hanya memeriksa byte stdin demi byte dan tidak melewatkan backspaces, dll ke stdout. Halaman manual col berbunyi seperti seseorang yang menulisnya secara khusus untuk memfilter keluaran man
Bruce Ediger
1
ok, itu masuk akal. Karakter seperti itu (tersembunyi) dapat menyebabkan duplikat karakter. Bruce terima kasih
saurabheights
Anda benar-benar layak menerima upvote mode. Apakah "col" untuk kolom?
Aljabar
24

Halaman manual biasanya merupakan trofffile yang sudah diproses sebelumnya, dan Anda dapat membuka teks biasa dengan,

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

groffadalah pembungkus untuk troff.

Informasi lebih lanjut di sini .

Anda mungkin perlu menggunakan gzip untuk membuka kompresi file halaman manual terlebih dahulu, dan Anda masih akan memiliki banyak informasi pemformatan di output.

EightBitTony
sumber
4
+1 untuk berbicara tentang groff / troff dan pemformatan halaman manual
lgeorget
11

Saya melakukan ini sepanjang waktu. Baris perintah ini membuat saya senang:

man man | col -bx > man.txt

col -b menghapus backspaces.

col -bx juga menggantikan tab dengan spasi yang merupakan preferensi kuat saya.

Jika saya ingin teks diformat ke lebar preferensi saya saat membaca, maka saya mengubah perintah untuk ini:

MANWIDTH=10000 man man | col -bx > man.txt
sotosoc
sumber
man man | col -bx > man.txtbekerja untukku. Terima kasih.
JaredH
6

Cukup gunakan manperintah - Anda dapat menyalurkan output ke hal-hal lain seperti yang Anda bisa dengan catfile.

TomH
sumber
1
Saya suka kesederhanaannya.
Joel Sjögren
3

Jika Anda hanya ingin cathalaman manual, Anda bisa mengirimnya ke cat:

man ls | cat

Jika Anda ingin membuang kontennya ke file:

man ls > ls_manpage_dump.txt
Sheharyar
sumber