Nah, ini cara saya yang sangat pribadi untuk membaca halaman manual:
Manpager itu
Ketika Anda membuka halaman manual dengan menggunakan man
perintah, output akan ditampilkan / diberikan oleh less
atau more
perintah, atau perintah lain yang akan ditetapkan sebagai pager Anda (MANPAGER).
Jika Anda menggunakan Linux Anda mungkin dilayani dengan infrastruktur manusia Anda yang sudah dikonfigurasi untuk digunakan /usr/bin/less -is
(kecuali jika Anda menginstal beberapa distro minimal) man(1)
, jelaskan pada bagian Opsi itu:
-P pager
Specify which pager to use. This option overrides the MANPAGER environment variable,
which in turn overrides the PAGER variable. By default, man uses /usr/bin/less -is.
Pada FreeBSD dan OpenBSD hanya masalah mengedit MANPAGER
variabel lingkungan karena mereka sebagian besar akan digunakan more
, dan beberapa fitur seperti pencarian dan sorotan teks bisa hilang.
Ada jawaban yang bagus untuk pertanyaan perbedaan apa more
, less
dan most
ada di sini (tidak pernah digunakan most
). Kemampuan untuk menggulir mundur dan menggulir maju berdasarkan halaman dengan Spaceatau kedua cara menurut garis dengan ↓atau ↑(juga, menggunakan vi
binding jdan k) sangat penting saat menelusuri halaman manual. Tekan hsaat menggunakan less
untuk melihat ringkasan perintah yang tersedia.
Dan itu sebabnya saya menyarankan Anda untuk menggunakan less
pager pria Anda. less
memiliki beberapa fitur penting yang akan digunakan selama jawaban ini.
Bagaimana perintah diformat?
Konvensi Utilitas : Spesifikasi Basis Grup Terbuka Edisi 7 - IEEE Std 1003.1, 2013 Edisi. Anda harus mengunjungi tautan itu sebelum mencoba memahami halaman manual. Referensi online ini menguraikan sintaks argumen utilitas standar dan memperkenalkan terminologi yang digunakan di seluruh POSIX.1-2017 untuk menjelaskan argumen yang diproses oleh utilitas. Ini juga secara tidak langsung akan membuat Anda diperbarui tentang arti sebenarnya dari kata-kata seperti parameter, argumen, opsi argumen ...
Kepala setiap halaman manual akan terlihat lebih samar bagi Anda setelah memahami notasi dari konvensi utilitas:
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
Ingat apa yang ingin Anda lakukan.
Ketika melakukan riset tentang xargs
Anda, Anda melakukannya untuk tujuan, bukan? Anda memiliki kebutuhan khusus yang membaca output standar dan menjalankan perintah berdasarkan output itu.
Tetapi, ketika saya tidak tahu perintah mana yang saya inginkan?
Gunakan man -k
atau apropos
(mereka setara). Jika saya tidak tahu bagaimana menemukan file: man -k file | grep search
. Baca deskripsi dan temukan yang lebih sesuai dengan kebutuhan Anda. Contoh:
apropos -r '^report'
bashbug (1) - report a bug in bash
df (1) - report file system disk space usage
e2freefrag (8) - report free space fragmentation information
filefrag (8) - report on file fragmentation
iwgetid (8) - Report ESSID, NWID or AP/Cell Address of wireless network
kbd_mode (1) - report or set the keyboard mode
lastlog (8) - reports the most recent login of all users or of a given user
pmap (1) - report memory map of a process
ps (1) - report a snapshot of the current processes.
pwdx (1) - report current working directory of a process
uniq (1) - report or omit repeated lines
vmstat (8) - Report virtual memory statistics
Apropos berfungsi dengan ekspresi reguler secara default, ( man apropos
, baca deskripsi, dan cari tahu apa -r
fungsinya), dan pada contoh ini saya mencari setiap halaman manual di mana deskripsi dimulai dengan "laporan".
Untuk mencari informasi terkait dengan membaca pemrosesan input / output standar dan mencapai xargs
sebagai opsi yang memungkinkan:
man -k command| grep input
xargs (1) - build and execute command lines from standard input
Selalu baca DESCRIPTION
sebelum memulai
Luangkan waktu dan baca deskripsi. Dengan hanya membaca deskripsi xargs
perintah kita akan belajar bahwa:
xargs
membaca dari STDIN dan menjalankan perintah yang diperlukan. Ini juga berarti bahwa Anda perlu memiliki pengetahuan tentang cara kerja input standar, dan cara memanipulasinya melalui pipa ke perintah berantai
- Perilaku default adalah bertindak seperti
/bin/echo
. Ini memberi Anda sedikit tip bahwa jika Anda perlu rantai lebih dari satu xargs
, Anda tidak perlu menggunakan gema untuk mencetak.
- Kami juga telah belajar bahwa nama file unix dapat berisi baris kosong dan baru, bahwa ini bisa menjadi masalah dan argumen
-0
adalah cara untuk mencegah hal-hal meledak dengan menggunakan pemisah karakter nol. Deskripsi ini memperingatkan Anda bahwa perintah yang digunakan sebagai input perlu mendukung fitur ini juga, dan GNU find
mendukungnya. Bagus. Kami menggunakan banyak temuan dengan xargs
.
xargs
akan berhenti jika status keluar 255 tercapai.
Beberapa deskripsi sangat singkat dan itu umumnya karena perangkat lunak bekerja dengan cara yang sangat sederhana. Jangan pernah berpikir untuk melewatkan bagian manual ini ;)
Hal-hal lain yang perlu diperhatikan ...
Anda tahu bahwa Anda dapat mencari file menggunakan find
. Ada banyak pilihan dan jika Anda hanya melihat SYNOPSIS
, Anda akan kewalahan oleh mereka. Itu hanya puncak gunung es. Tidak termasuk NAME
,, SYNOPSIS
dan DESCRIPTION
, Anda akan memiliki bagian berikut:
AUTHORS
: orang-orang yang membuat atau membantu dalam penciptaan perintah.
BUGS
: daftar semua cacat yang dikenal. Bisa jadi hanya batasan implementasi.
ENVIRONMENT
: Aspek shell Anda yang dapat dipengaruhi oleh perintah, atau variabel yang akan digunakan.
EXAMPLES
atau NOTES
: Cukup jelas.
REPORTING BUGS
: Siapa yang harus Anda hubungi jika Anda menemukan bug pada alat ini atau dalam dokumentasinya.
COPYRIGHT
: Orang yang membuat dan menafikan tentang perangkat lunak. Semua terkait dengan lisensi perangkat lunak itu sendiri.
SEE ALSO
: Perintah lain, alat, atau aspek kerja yang terkait dengan perintah ini, dan tidak dapat ditampung di bagian mana pun lainnya.
Anda kemungkinan besar akan menemukan info menarik tentang aspek yang Anda inginkan dari alat pada bagian contoh / catatan.
Contoh
Pada langkah-langkah berikut saya akan ambil find
sebagai contoh, karena konsepnya "lebih sederhana" daripada xargs
menjelaskan (satu perintah menemukan file dan lainnya berurusan dengan stdin dan pipelined eksekusi dari output perintah lainnya). Mari kita berpura-pura tidak tahu apa-apa (atau sedikit) tentang perintah ini.
Saya memiliki masalah khusus yaitu: Saya harus mencari setiap file dengan .jpg
ekstensi, dan dengan 500KiB (KiB = 1024 byte, biasa disebut kibibyte), atau lebih dalam ukuran di dalam folder server ftp.
Pertama, buka manual: man find
. Itu SYNOPSIS
ramping. Mari mencari hal-hal di dalam manual: Ketik /ditambah kata yang Anda inginkan ( size
). Ini akan mengindeks banyak entri -size
yang akan menghitung ukuran tertentu. Terjebak. Tidak tahu cara mencari dengan "lebih dari" atau "kurang dari" ukuran tertentu, dan pria itu tidak menunjukkannya kepada saya.
Mari kita coba, dan cari entri berikutnya yang ditemukan dengan memukul n. BAIK. Menemukan sesuatu yang menarik: find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Mungkin contoh ini menunjukkan kepada kita bahwa dengan -size +100M
itu akan menemukan file dengan 100MB atau lebih. Bagaimana saya bisa mengonfirmasi? Pergi ke kepala manual dan mencari kata-kata lain.
Sekali lagi, mari kita coba kata itu greater
. Menekan gakan membawa kita ke kepala manual. /greater
, dan entri pertama adalah:
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
Kedengarannya bagus. Tampaknya blok manual ini mengkonfirmasi apa yang kami duga. Namun, ini tidak hanya berlaku untuk ukuran file. Ini akan berlaku untuk apa pun n
yang dapat ditemukan di halaman manual ini (seperti ungkapan: "Argumen numerik dapat ditentukan sebagai").
Baik. Mari kita menemukan cara untuk menyaring dengan nama: g /insensitive
. Mengapa? Tidak peka? Wtf? Kami memiliki server ftp hipotetis, di mana "yang lain OS" orang bisa memberikan nama file dengan ekstensi seperti .jpg
, .JPG
, .JpG
. Ini akan membawa kita ke:
-ilname pattern
Like -lname, but the match is case insensitive. If the -L
option or the -follow option is in effect, this test returns
false unless the symbolic link is broken.
Namun, setelah Anda mencari, lname
Anda akan melihat bahwa ini hanya akan mencari tautan simbolis. Kami ingin file nyata. Entri selanjutnya:
-iname pattern
Like -name, but the match is case insensitive. For example, the
patterns `fo*' and `F??' match the file names `Foo', `FOO',
`foo', `fOo', etc. In these patterns, unlike filename expan‐
sion by the shell, an initial '.' can be matched by `*'. That
is, find -name *bar will match the file `.foobar'. Please note
that you should quote patterns as a matter of course, otherwise
the shell will expand any wildcard characters in them.
Bagus. Saya bahkan tidak perlu membaca tentang -name
untuk melihat bahwa -iname
ini adalah versi case-sensitive dari argumen ini. Mari kita kumpulkan perintah:
Perintah: find /ftp/dir/ -size +500k -iname "*.jpg"
Apa yang tersirat di sini: Pengetahuan bahwa wildcard ?
mewakili "karakter apa pun pada posisi tunggal" dan *
mewakili "nol atau lebih karakter apa pun". The -name
parameter akan memberikan ringkasan pengetahuan ini.
Kiat yang berlaku untuk semua perintah
Beberapa opsi, mnemonik, dan "gaya sintaksis" berjalan melalui semua perintah yang membuat Anda membeli waktu dengan tidak harus membuka halaman manual sama sekali. Itu dipelajari dengan praktik dan yang paling umum adalah:
- Secara umum,
-v
berarti verbose. -vvv
adalah variasi "sangat sangat bertele-tele" pada beberapa perangkat lunak.
- Mengikuti standar POSIX, umumnya satu argumen dasbor dapat ditumpuk. Contoh:
tar -xzvf
, cp -Rv
.
- Secara umum
-R
dan / atau -r
berarti rekursif.
- Hampir semua perintah memiliki bantuan singkat dengan
--help
opsi.
--version
menunjukkan versi suatu perangkat lunak.
-p
, pada salin atau pindahkan utilitas berarti "pertahankan izin".
-y
berarti YA, atau "lanjutkan tanpa konfirmasi" dalam banyak kasus.
Perhatikan bahwa hal di atas tidak selalu benar. Sebagai contoh, -r
saklar dapat berarti hal yang sangat berbeda untuk perangkat lunak yang berbeda. Itu selalu merupakan ide yang baik untuk memeriksa dan memastikan kapan suatu perintah bisa berbahaya, tetapi ini adalah standar umum.
Nilai default dari perintah.
Pada bagian pager dari jawaban ini, kami melihat bahwa itu less -is
adalah pager man
. Perilaku default dari perintah tidak selalu ditampilkan di bagian yang terpisah pada halaman manual, atau pada bagian yang paling banyak ditempatkan.
Anda harus membaca opsi untuk mengetahui default, atau jika Anda beruntung, mengetik /pager
akan membawa Anda ke info itu. Ini juga mengharuskan Anda untuk mengetahui konsep pager (perangkat lunak yang menggulir halaman manual), dan ini adalah hal yang hanya akan Anda peroleh setelah membaca banyak halaman manual.
Mengapa itu penting? Ini akan membuka persepsi Anda jika Anda menemukan perbedaan pada scroll dan perilaku warna saat membaca man(1)
di Linux ( less -is
pager) atau FreeBSD man(1)
misalnya.
Dan bagaimana dengan SYNOPSIS
sintaks?
Setelah mendapatkan semua informasi yang diperlukan untuk menjalankan perintah, Anda dapat menggabungkan opsi, argumen-opsi, dan operan sebaris untuk menyelesaikan pekerjaan Anda. Ikhtisar konsep:
- Opsi adalah sakelar yang menentukan perilaku perintah. " Lakukan ini " " jangan lakukan ini " atau " bertindak seperti ini ". Sering disebut sakelar.
- Argumen-opsi digunakan pada sebagian besar kasus ketika suatu opsi bukan biner (on / off) seperti
-t
pada mount, yang menentukan jenis sistem file ( -t iso9660
, -t ext2
). " Lakukan ini dengan mata tertutup " atau " beri makan hewan, tetapi hanya singa ". Disebut juga argumen.
- Operan adalah hal-hal yang Anda inginkan untuk ditindaklanjuti perintah itu. Jika Anda menggunakan
cat file.txt
, operan adalah file di dalam direktori Anda saat ini, dan isinya akan ditampilkan pada STDOUT
. ls
adalah perintah di mana operan adalah opsional. Tiga titik setelah operan secara implisit memberi tahu Anda bahwa cat
dapat bertindak pada beberapa operan (file) secara bersamaan. Anda mungkin memperhatikan bahwa beberapa perintah telah mengatur jenis operan apa yang akan digunakan. Contoh:cat [OPTION] [FILE]...
Hal-hal sinopsis terkait:
Kapan metode ini tidak berhasil?
- Halaman manual yang tidak memiliki contoh
- Halaman manual di mana opsi memiliki penjelasan singkat
- Bila Anda menggunakan kata kunci generik seperti
and
, to
, for
di dalam halaman manual
- Halaman manual yang tidak diinstal. Tampaknya sudah jelas tetapi, jika Anda belum menginstal
lftp
(dan halaman manualnya) Anda tidak dapat mengetahui bahwa itu adalah opsi yang cocok sebagai klien ftp yang lebih canggih dengan menjalankanman -k ftp
Dalam beberapa kasus, contohnya akan sangat sederhana, dan Anda harus melakukan beberapa eksekusi perintah Anda untuk menguji, atau dalam skenario kasus terburuk, Google itu.
Lainnya: Bahasa pemrograman dan modul-modulnya:
Jika Anda memprogram atau hanya membuat skrip, perlu diingat bahwa beberapa bahasa memiliki sistem manualnya sendiri, seperti perl
( perldocs
), python ( pydocs
), dll., Menyimpan informasi spesifik tentang metode / fungsi, variabel, perilaku, dan informasi penting lainnya tentang modul Anda mencoba menggunakan dan belajar. Ini bermanfaat bagi saya ketika saya membuat skrip untuk mengunduh email IMAP yang belum dibaca menggunakan perl Mail::IMAPClient
modul.
Anda harus mencari tahu halaman manual tersebut dengan menggunakan man -k
atau mencari secara online. Contoh:
[root@host ~]# man -k doc | grep perl
perldoc (1) - Look up Perl documentation in Pod format
[root@host ~]# perldoc Mail::IMAPClient
IMAPCLIENT(1) User Contributed Perl Documentation IMAPCLIENT(1)
NAME
Mail::IMAPClient - An IMAP Client API
SYNOPSIS
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => ’localhost’,
User => ’username’,
Password => ’password’,
Ssl => 1,
Uid => 1,
);
... banyak hal lain di sini, dengan bagian seperti halaman manual biasa ...
Dengan python:
[root@host ~]# pydoc sys
Help on built-in module sys:
NAME
sys
FILE
(built-in)
MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html
DESCRIPTION
This module provides access to some objects used or maintained by the
interpreter and to functions that interact strongly with the interpreter.
...again, another full-featured manpage with interesting info...
Atau, fungsi help()
di dalam kulit python jika Anda ingin membaca detail lebih lanjut dari beberapa objek:
nwildner@host:~$ python3.6
Python 3.6.7 (default, Oct 21 2018, 08:08:16)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(round)
Help on built-in function round in module builtins:
round(...)
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
Bonus: The wtf
perintah dapat membantu Anda dengan akronim dan bekerja sebagai whatis
jika tidak ada singkatan dari database itu ditemukan, tetapi apa yang Anda cari adalah bagian dari database manusia. Pada Debian, perintah ini adalah bagian dari bsdgames
paket. Contoh:
nwildner@host:~$ wtf rtfm
RTFM: read the fine/fucking manual
nwildner@host:~$ wtf afaik
AFAIK: as far as I know
nwildner@host:~$ wtf afak
Gee... I don't know what afak means...
nwildner@host:~$ wtf tcp
tcp: tcp (7) - TCP protocol.
nwildner@host:~$ wtf systemd
systemd: systemd (1) - systemd system and service manager