Bagaimana cara mencari pola yang mengandung tanda hubung di dalam halaman manual?


11

Saya mencoba menemukan perintah untuk mencari pola yang berisi tanda hubung di dalam semua halaman manual.

Saya telah melihat man man, dan menemukan 3 opsi ini:

-K, --global-apropos

Cari teks di semua halaman manual. Ini adalah pencarian kasar, dan kemungkinan akan memakan waktu; jika Anda bisa, Anda harus menentukan bagian untuk mengurangi jumlah halaman yang perlu dicari. Istilah pencarian dapat berupa string sederhana (default), atau ekspresi reguler jika --regexopsi digunakan.

-w, --where, --path,--location

Jangan benar-benar menampilkan halaman buku panduan, tetapi cetak lokasi file sumber nroff yang akan diformat.

-S list, -s list,t--sections=list

Daftar adalah daftar bagian manual khusus pesanan yang dipisahkan dengan tanda koma atau koma untuk dicari. Opsi ini mengabaikan $MANSECTvariabel lingkungan. ( -sEjaan ini untuk kompatibilitas dengan Sistem V.)

Saya sudah mencoba menggabungkannya untuk mencari pola mark-modified-linesyang merupakan opsi readline yang dijelaskan dalam man bash:

$ man -s1 -Kw mark-modified-lines

Tetapi tidak menemukan halaman apa pun:

No manual entry for mark-modified-lines

Dan perintah keluar dengan kode 16.
Saya berpikir bahwa mungkin sintaks dari perintah itu salah, tetapi sepertinya tidak, karena perintah ini dengan benar menemukan 5 halaman manual pada sistem saya yang berisi kata guitar:

$ man -s1 -Kw guitar

  /usr/share/man/man1/ffmpeg-all.1.gz
  /usr/share/man/man1/ffserver-all.1.gz
  /usr/share/man/man1/ffplay-all.1.gz
  /usr/share/man/man1/ffmpeg-filters.1.gz
  /usr/share/man/man1/ffprobe-all.1.gz

Saya pikir mungkin tanda hubung dalam kata menyebabkan masalah. Di man bash, saya menemukan --regexopsi yang dijelaskan sebagai berikut:

--regex

Perlihatkan semua halaman dengan bagian mana pun dari nama mereka atau deskripsi mereka yang cocok dengan setiap argumen halaman sebagai ekspresi reguler, sama dengan apropos(1). Karena biasanya tidak ada cara yang masuk akal untuk memilih halaman "terbaik" ketika mencari ekspresi reguler, opsi ini menyiratkan -a.

Saya mencoba menggunakan opsi ini dan mengganti kata mark-modified-linesdengan regex mark.modified.lines, di mana tanda hubung itu sendiri diganti dengan metacharacter .yang harus cocok dengan karakter apa pun:

$ man -s1 -Kw --regex 'mark.modified.lines'

Masih tidak mencetak halaman apa pun, sementara saya tahu teksnya ditulis di bashhalaman manual.

Metacharacter .di regex tampaknya diuraikan seperti yang diharapkan, karena perintah ini:

$ man -s1 -Kw --regex 'mark.mo'

Cetakan:

  /usr/share/man/man1/x11perfcomp.1.gz
  /usr/share/man/man1/xditview.1.gz

Dan 2 manual ini ( x11perfcomp, xditview) keduanya cocok dengan regex mark.mo. Lebih khusus lagi, man x11perfcompberisi baris ini:

Mark Moraes wrote the original scripts to compare servers.
^^^^^^^

Dan man xditviewberisi baris ini:

    Mark Moraes (University of Toronto)
    ^^^^^^^

Namun, man -s1 -Kw --regex 'mark.mo'jangan cetak halaman bash man:

/usr/share/man/man1/bash.1.gz

Sementara saya mengharapkannya, karena ini berisi baris ini:

mark-modified-lines (Off)
^^^^^^^

Apakah mungkin untuk mencari pola yang berisi tanda hubung di dalam halaman manual?

Jawaban:


15

man -Kmencari kode sumber halaman manual, bukan formulir yang diberikan (seperti yang ditampilkan oleh man). Tanda hubung dikodekan \-, jadi Anda perlu mencarinya:

man -s1 -Kw 'mark\-mo'

Ya, ini agak tidak jelas. The manhalaman manual menyebutkan, dalam deskripsi -Kpilihan, yang

Perhatikan bahwa ini mencari sumber dari halaman buku panduan, bukan teks yang diberikan, dan mungkin termasuk positif palsu karena hal-hal seperti komentar dalam file sumber. Pencarian teks yang diberikan akan jauh lebih lambat.

tetapi menggunakan ini dengan benar melibatkan mengetahui representasi sumber dari teks yang Anda cari.


1
Mengaburkan? Iya. Juga, ini adalah bug.
kubanczyk

@kubanczyk yah, ini cocok dengan speknya, tapi ya, saya setuju speknya buggy ;-).
Stephen Kitt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.