Bagaimana cara melompat ke bendera tertentu di halaman Unix?

23

Saat membaca halaman manual Unix di terminal, bagaimana saya bisa melompat dengan mudah ke deskripsi bendera tertentu?

Sebagai contoh, saya perlu tahu arti -obendera untuk mount. Saya berlari man mountdan ingin melompat ke tempat -oyang dijelaskan. Saat ini, saya mencari /-oopsi yang disebutkan di beberapa tempat sebelum bagian yang benar-benar menggambarkannya, jadi saya harus melompat-lompat sedikit.

Terima kasih.

dotancohen
sumber

Jawaban:

27

Yang saya lakukan adalah meletakkan beberapa ruang kosong di depan bendera seperti:

/     -o

Itu tidak 100% dapat diandalkan tetapi Anda melompat melalui lingkaran yang jauh lebih sedikit. Jika Anda ingin tingkat keberhasilan yang lebih baik, coba "/^ +-o". Itu akan menemukan garis dimulai dengan kosong dan diikuti oleh -o. Saya tidak ingin mengetik string aneh itu sering.

akostadinov
sumber
11

Saya telah mendefinisikan fungsi ini di .bashrc

function manswitch () { man $1 | less -p "^ +$2"; }

yang bisa Anda gunakan sebagai berikut

manswitch grep -r

Saya mendapatkannya dari commandlinefu ini .

Catatan: argumen ke -psakelar lessadalah regexp yang mengatakan lebih sedikit untuk mencari garis yang dimulai dengan ( ^) satu atau lebih spasi ( +) diikuti oleh sakelar (argumen kedua. Jadi $2), sehingga memiliki keuntungan bekerja dengan pemformatan yang berbeda.

gg
sumber
5

Anda juga dapat membuka halaman manual pada posisi tertentu dari baris perintah dengan

man -P 'less -p "     -o"' mount
buru-buru
sumber
Terpilih karena dimungkinkan, tetapi itu sedikit lebih banyak untuk diketik daripada untuk mencari dari dalam diri manusia. Terimakasih Meskipun!
dotancohen
Itu cukup berguna untuk mengirim seseorang ke tempat yang tepat di halaman manual :)
buru
Ya, saya hanya berpikir bahwa jika saya harus membuka halaman manual dalam suatu skrip untuk beberapa alasan itu akan berguna juga. Terima kasih!
dotancohen
3

@ piccobello jawabannya bagus, tapi itu memakan warna di halaman manual saya. Alih-alih melakukan piping ke less(karena biasanya mansudah digunakan lesssecara default), saya cukup meneruskan lessperintah yang dimodifikasi ke man:

function manswitch() { man -P "less -p \"^ +$2\"" $1 }

Ini mempertahankan fungsionalitas @piccobello dalam fungsinya, tetapi tetap mempertahankan warna.

Jorge Israel Peña
sumber
1

Solusi lain cukup baik, tetapi juga ingat bahwa halaman manual hanyalah data dan Anda dapat dengan mudah melakukan hampir semua hal dengan mereka di Linux.

man some-command> file.txt

mengubah halaman menjadi file teks biasa yang dapat Anda manipulasi. Saya menyimpan salinan manual bash sebagai teks di direktori bin saya sehingga saya bisa memuatnya ke editor teks saya untuk mencari sesuatu dan menyalin dan menempelkan sementara saya mengedit skrip.

Atau Anda dapat menyalurkannya ke filter seperti

man some-command | grep -A lines-after "some pattern"

Meskipun tidak akan bekerja untuk Anda di terminal, saya (dengan bantuan seorang teman) bahkan menulis sebuah skrip yang mengambil halaman manual dan menampilkannya di browser web sehingga saya dapat menggunakan fitur navigasi / pencarian yang jauh lebih baik dari kurang. Agak tergantung kde, tapi mudah dimodifikasi.

http://dl.dropbox.com/u/54584985/kman

Joe
sumber
3
Anda mungkin ingin mencoba man://di Konqueror. KDE memiliki halaman manual KIOSLAVE!
dotancohen
@dotancohen - Cool. Tidak tahu tentang itu.
Joe
@dotancohen -Saya baru mencobanya di lumba-lumba dan itu juga berfungsi, tetapi menampilkan halaman manual sebagai direktori dan file dan meluncurkan browser default Anda ketika Anda mengklik file. Saya tidak mengerti bagian tentang KIOSLAVE. Saya mencoba man: // kioslave dan itu sama dengan man: //.
Joe
@dotancohen - Sudahlah - Saya mencari kios di wikipedia. en.wikipedia.org/wiki/KIO
Joe
Ya, KDE memiliki segalanya. Nikmati!
dotancohen
1

Saya menulis alat yang melakukan hal ini, yang disebut flagman . Masih dalam pengembangan tetapi sudah dapat digunakan. Sebagai contoh:

$ ./flagman mount -o
       -o, --options opts
              Use the specified mount options.  The opts argument is a comma-separated list.  For example:

                     mount LABEL=mydisk -o noatime,nodev,nosuid


              For more details, see the FILESYSTEM-INDEPENDENT MOUNT OPTIONS and FILESYSTEM-SPECIFIC MOUNT OPTIONS sections.
sayap kanan
sumber