Di mana perintah yang tersedia di jendela halaman manual didokumentasikan, dan apakah perintah ini bergantung pada sistem?

9

Setelah menggunakan Linux selama bertahun-tahun, saya tiba-tiba menemukan bahwa saya tidak tahu bagaimana menggunakan manperintah dengan benar. Diketahui bahwa seseorang dapat mengetik quntuk keluar dari halaman manual, /untuk mencari, dan lainnya. Saya tidak tahu, di mana ini didokumentasikan. Saya mencoba man man man -a man info mandan Googling, tanpa hasil.

Tolong tunjukkan saya ke posisi yang tepat untuk mencari informasi ini, bahkan jika itu benar man mandan saya telah mengabaikannya, itu baik-baik saja, beri tahu saya.

Apakah perintah ini berbeda untuk OS yang berbeda atau untuk distribusi Linux yang berbeda?

Weijun Zhou
sumber
Bukankah halaman manual hanya dilihat less? (Setidaknya ini adalah distribusi saya, dan hmenunjukkan ringkasan lessperintah)
Rastapopoulos
@Rastapopoulos Bukankah halaman manual baru saja dilihat less? Tidak. Karena lessitu bukan utilitas standar.
Andrew Henle
Saya kira Anda dapat menggunakan readlink -f /usr/bin/pageratau readlink -f $(which pager)untuk mengetahui pager yang Anda miliki (secara default /bin/less) dari manpager yang digunakan. Ini mungkin (harus) bekerja secara langsungman pager
Hastur
2
Jika Anda membaca halaman manual menggunakan moreatau less, Anda bisa mengetikkan hbantuan. (atau Anda bisa menggunakan emacs...)
Alex Vong
1
Jika Anda mengetik ?atau hpada prompt pager, itu akan memberi Anda daftar perintah.
Barmar

Jawaban:

11

Memang benar di halaman buku panduan untuk man, di bawah subjudul "Mengontrol hasil keluaran" dan diulang kemudian di bagian "LINGKUNGAN" untuk ukuran yang baik:

Secara default, manusia menggunakan pager -s.
Halaman manual menjelaskan bagaimana ada hirarki dari variabel lingkungan dan opsi baris perintah ( PAGER, MANPAGER, dan --pager) untuk override default.

Beginilah bunyinya pada sistem seperti Debian Linux. Sebaliknya, pada sistem seperti Oracle Linux, man-dbpaket telah dibangun dengan standar yang berbeda, yang masih tercermin di sana di halaman manual di tempat yang sama:

Secara default, manusia menggunakan less -s.

The man-dbpaket upaya untuk auto-mendeteksi, pada waktu kompilasi, yang standar pager untuk ke perintah build-in, dan dokumen manual page-nya, dari less, more, dan pager.

Pada sistem seperti Debian Linux, pagerperintah adalah bagian dari sistem "alternatif" dan dapat memetakan ke salah satu dari beberapa perintah aktual:

jdebp% pembaruan-alternatif --daftar pager
/ bin / kurang
/ bin / lebih
/ usr / bin / pg
/ usr / bin / w3m
jdebp%

Jadi seseorang berkonsultasi halaman manual masing - masing untuk cara mengusir mereka dari keyboard, sesuai dengan alternatif yang telah dipilih. Berguna, sistem alternatif Debian menjaga halaman manual selaras dengan perintah yang dipilih, jadi membaca halaman manual ini cukup mudah:

pager pria

JdeBP
sumber
5

Man menggunakan pager untuk menampilkan konten.

Detail yang tepat tergantung pada versi yang manAnda gunakan.

Untuk versi yang digunakan pada banyak sistem:

  • Jika opsi -p pagerdiberikan maka pager itu digunakan.
  • Kalau tidak, jika variabel lingkungan MANPAGERdiatur itu digunakan.
  • Kalau tidak, jika PAGERdiatur itu digunakan.
  • Kalau tidak, defaultnya adalah menggunakan /usr/bin/less

Jika halaman manual dalam format HTML maka BROWSERdigunakan sebagai ganti MANPAGER/PAGER

Penggunaan Debian man-dbyang memiliki standar berbeda.

Baca man mandetailnya

PiedPiper
sumber
Terima kasih atas jawaban Anda. Sementara jawabannya menjelaskan bagaimana cara mankerjanya, saya ingin bertanya apakah Anda dapat melakukan kebaikan untuk mengarahkan saya ke tempat yang tepat di mana perilaku ini didokumentasikan. Terima kasih.
Weijun Zhou
Dalam man manoutput saya (sekali lagi, manversi: 2.6.3) menyatakan bahwa "secara default, less -s digunakan.", Jadi saya berharap ini tergantung pada versi dan sistem?
Weijun Zhou
1
Ini hanyalah contoh dari filosofi Unix standar: perintah kecil dan sederhana yang beroperasi pada stream teks dan melakukan tepat satu hal dan melakukannya dengan baik. Memformat manual, dan paginasi adalah dua hal yang karenanya dilakukan oleh dua alat yang berbeda. Dengan cara ini, alat pagination dapat digunakan kembali untuk tugas-tugas lain, tidak hanya untuk menampilkan halaman manual.
Jörg W Mittag
2

Berkat @Rastapopoulos, saya menemukan garis yang terkait lessdi dalam man manpada kotak Linux lama ( manversi: 1.6f) di bagian LINGKUNGAN yang menyatakan,

BROWSER Nama browser yang digunakan untuk menampilkan halaman manual HTML. Jika tidak disetel, /usr/bin/lessdigunakan.

Namun pada kotak yang lebih baru ( manversi: 2.6.3) baris ini telah diganti oleh

BROWSER Jika $ BROWSER diset, nilainya adalah daftar perintah yang dipisahkan dengan titik dua, yang masing-masing digunakan untuk mencoba memulai browser web untuk man --html. Di setiap perintah,% s digantikan oleh file? nama yang berisi output HTML dari groff, %% diganti dengan tanda persen tunggal (%), dan% c diganti oleh titik dua (:).

Berdasarkan informasi ini saya percaya itu diformat lesssecara default (setidaknya untuk kasus pertama). Namun, bahkan jika ini masalahnya, itu didokumentasikan dengan cara yang tampaknya tidak jelas bagi saya (atau saya telah mempelajari manperintah dengan cara yang salah).

Weijun Zhou
sumber
2

Tidak ada cara nyata untuk sepenuhnya menjawab pertanyaan Anda secara umum untuk berbagai sistem operasi, karena manimplementasinya tidak sepenuhnya ditentukan.

Jawaban POSIX-standar, non-Linux-spesifik dapat ditemukan dalam dokumentasi POSIXman :

NAMA

man - display system documentation

RINGKASAN

man [-k] name...

...

VARIABEL LINGKUNGAN

Variabel lingkungan berikut akan mempengaruhi eksekusi manusia:

LANG

Berikan nilai default untuk variabel internasionalisasi yang tidak disetel atau nol. (Lihat XBD Internationalisasi Variabel untuk didahulukan dari variabel internasionalisasi yang digunakan untuk menentukan nilai-nilai kategori lokal.)

LC_ALL

Jika diatur ke nilai string yang tidak kosong, timpa nilai semua variabel internasionalisasi lainnya.

LC_CTYPE

Tentukan lokal untuk interpretasi urutan byte dari data teks sebagai karakter (misalnya, byte tunggal yang bertentangan dengan karakter multi-byte dalam argumen dan dalam database ringkasan). Nilai LC_CTYPE tidak perlu memengaruhi format informasi yang ditulis tentang nama operan.

LC_MESSAGES

Tentukan lokal yang harus digunakan untuk memengaruhi format dan isi pesan diagnostik yang ditulis untuk kesalahan standar dan pesan informatif yang ditulis ke keluaran standar.

NLSPATH

Tentukan lokasi katalog pesan untuk pemrosesan LC_MESSAGES.

PAGER

Tentukan perintah pemfilteran keluaran untuk menulis keluaran ke terminal. Setiap string yang dapat diterima sebagai operan command_string ke perintah harus valid. Ketika output standar adalah perangkat terminal, output halaman referensi harus disalurkan melalui perintah. Jika variabel PAGER adalah nol atau tidak disetel, perintah harus berupa salah satu atau utilitas paginator lain yang didokumentasikan dalam dokumentasi sistem.sh-cmore

Perhatikan bagian RATIONALE, yang menjelaskan mengapa mantidak ditentukan secara lengkap:

ALASAN

Diakui bahwa utilitas manusia hanya kegunaan minimal seperti yang ditentukan. Pendapat pengembang standar sangat terbagi atas berapa banyak atau sedikit informasi yang harus disediakan oleh manusia. Mereka menganggap, bagaimanapun, bahwa penyediaan beberapa cara portabel untuk mengakses dokumentasi akan membantu portabilitas pengguna. Argumen terhadap spesifikasi yang lebih lengkap adalah:

  • Dokumentasi dalam jumlah besar tidak diperlukan pada sistem yang tidak memiliki ruang disk berlebih.

  • Sistem manual saat ini tidak menyajikan informasi dengan cara yang sangat membantu portabilitas pengguna.

  • "Sistem bantuan yang lebih baik" saat ini merupakan area di mana vendor merasa bahwa mereka dapat menambah nilai pada implementasi POSIX mereka.

Opsi -f dipertimbangkan, tetapi karena perbedaan implementasi, itu tidak termasuk dalam volume POSIX.1-2008 ini.

Deskripsi diubah menjadi lebih spesifik tentang apa yang harus ditampilkan untuk utilitas. Pengembang standar menganggap itu tidak cukup untuk memungkinkan tampilan hanya sinopsis tanpa memberikan deskripsi singkat tentang apa yang dilakukan setiap opsi dan operan.

Entri "tujuan" yang akan dimasukkan dalam database dapat mirip dengan judul bagian (kurang dari awalan numerik) dari volume POSIX.1-2008 ini untuk setiap utilitas. Judul-judul ini mirip dengan yang digunakan dalam sistem historis untuk tujuan ini.

Lihat mailx untuk alasan tentang paginator default.

Peringatan dalam deskripsi LC_CTYPE telah ditambahkan karena itu bukan persyaratan bahwa suatu implementasi menyediakan halaman referensi untuk semua lokal yang didukung pada setiap sistem; mengubah LC_CTYPE tidak harus menerjemahkan halaman referensi ke bahasa lain. Ini sama dengan keadaan LC_MESSAGES saat ini di POSIX.1-2008-pesan khusus lokal belum menjadi persyaratan.

Variabel MANPATH historis tidak termasuk dalam POSIX karena tidak ada upaya yang dilakukan untuk menentukan konvensi penamaan untuk file halaman referensi, atau bahkan untuk mengamanatkan bahwa mereka adalah file sama sekali. Pada beberapa implementasi mereka bisa menjadi database yang benar, file hypertext, atau bahkan string tetap di dalam executable man. Pengembang standar menganggap portabilitas halaman referensi berada di luar lingkup pekerjaan mereka. Namun, pengguna harus menyadari bahwa MANPATH diimplementasikan pada sejumlah sistem historis dan dapat digunakan untuk menyesuaikan pola pencarian untuk halaman referensi dari berbagai kategori (utilitas, fungsi, format file, dan sebagainya) ketika administrator sistem mengungkapkan lokasi dan konvensi untuk halaman referensi pada sistem.

...

Diskusi alasan paginator dari halaman mailx :

Paginator dipilih ketika PAGER adalah nol atau tidak disetel sebagian tidak ditentukan untuk memungkinkan praktik historis Sistem V menggunakan pg sebagai default. Melewati fungsi pagination, seperti dengan menyatakan bahwa kucing adalah paginator, tidak akan bertemu dengan makna yang dimaksudkan dari deskripsi ini. Namun, "pengguna portabel" apa pun harus menetapkan PAGER secara eksplisit untuk mendapatkan paginator pilihannya di semua sistem. Pilihan paginator dibuat sebagian tidak ditentukan, tidak seperti pilihan editor VISUAL (diamanatkan untuk menjadi vi) karena sebagian besar pager historis mengikuti tema umum input pengguna, sedangkan editor berbeda secara dramatis.

Andrew Henle
sumber