GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menggunakan Halaman Man Untuk Mempelajari Cara Menggunakan Perintah?

Saat meneliti masalah lain, saya menemukan perintah,

locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"

yang ingin saya pelajari lebih lanjut. Jadi saya menjalankan man xargs dan dapatkan output berikut:

XARGS(1)                    General Commands Manual                   XARGS(1)

NAME
       xargs - build and execute command lines from standard input

SYNOPSIS
       xargs  [-0prtx]  [-E  eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
       [-d delimiter] [--delimiter delimiter]  [-I  replace-str]  [-i[replace-
       str]]    [--replace[=replace-str]]   [-l[max-lines]]   [-L   max-lines]
       [--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s  max-
       chars]  [--max-chars=max-chars]  [-P max-procs] [--max-procs=max-procs]
       [--interactive]      [--verbose]      [--exit]      [--no-run-if-empty]
       [--arg-file=file]   [--show-limits]   [--version]   [--help]   [command
       [initial-arguments]]

DESCRIPTION
       This manual page documents the GNU version of xargs...

Saya mencoba untuk menjadi lebih baik dalam menggunakan dokumentasi untuk belajar tentang program Linux, tetapi bagian "Sinopsis" itu menakutkan bagi pengguna baru. Ini benar-benar terlihat seperti omong kosong dibandingkan dengan man locate atau man free .

Sejauh ini, saya mengerti bahwa tanda kurung siku berarti opsional dan tanda kurung bersarang berarti opsi dalam opsional. Tapi bagaimana saya bisa membuat perintah yang valid dengan itu?

Saya tidak meminta bantuan dengan xargs di sini. Saya mencari bantuan untuk menafsirkan halaman manual untuk memahami perintah yang rumit. Saya ingin berhenti membuat blog web yang diindeks Google dan bantuan pribadi dari orang lain sebagai pendekatan pertama saya untuk mempelajari perintah Linux.

Jawaban yang Diterima:

Nah, ini adalah cara pribadi saya untuk membaca halaman manual:

Manpager

Saat Anda membuka halaman manual menggunakan man perintah, output akan ditampilkan/dirender oleh less atau more perintah, atau perintah lain yang akan ditetapkan sebagai pager (manpager) Anda.

Jika Anda menggunakan Linux, Anda mungkin dilayani dengan infrastruktur man Anda yang sudah dikonfigurasi untuk menggunakan /usr/bin/less -is (kecuali jika Anda menginstal beberapa distro minimal) sebagai man(1) , jelaskan di bagian Opsi:

-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.

Di FreeBSD dan OpenBSD tinggal mengedit MANPAGER variabel lingkungan karena mereka sebagian besar akan menggunakan more , dan beberapa fitur seperti penelusuran dan sorotan teks mungkin tidak ada.

Ada jawaban yang bagus untuk pertanyaan tentang perbedaan apa more , less dan most ada di sini (tidak pernah menggunakan most ). Kemampuan untuk menggulir mundur dan maju menurut halaman dengan Spasi atau keduanya dengan baris dengan atau (juga, menggunakan vi binding j dan k ) sangat penting saat menjelajahi halaman manual. Tekan h saat menggunakan less untuk melihat ringkasan perintah yang tersedia.

Dan itulah mengapa saya menyarankan Anda untuk menggunakan less sebagai pager manual Anda. less memiliki beberapa fitur penting yang akan digunakan selama jawaban ini.

Bagaimana sebuah perintah diformat?

Konvensi Utilitas:Spesifikasi Basis Grup Terbuka Edisi 7 – IEEE Std 1003.1, Edisi 2013. Anda harus mengunjungi tautan itu sebelum mencoba memahami halaman manual. Referensi online ini menjelaskan 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 memberi Anda informasi terbaru tentang arti sebenarnya dari kata-kata seperti parameter, argumen, opsi argumen…

Kepala halaman manual mana pun akan terlihat kurang samar bagi Anda setelah memahami notasi konvensi utilitas:

utility_name[-a][-b][-c option_argument]
    [-d|-e][-f[option_argument]][operand...]

Pikirkan apa yang ingin Anda lakukan.

Saat melakukan riset tentang xargs Anda melakukannya untuk suatu tujuan, bukan? Anda memiliki kebutuhan khusus yang membaca keluaran standar dan menjalankan perintah berdasarkan keluaran tersebut.

Tapi, ketika saya tidak tahu perintah mana yang saya inginkan?

Gunakan man -k atau apropos (mereka setara). Jika saya tidak tahu cara 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 bekerja dengan ekspresi reguler secara default, (man apropos , baca deskripsi dan cari tahu apa -r tidak), dan pada contoh ini saya mencari setiap halaman manual yang deskripsinya dimulai dengan “laporan”.

Untuk mencari informasi yang 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 perintah pipa ke rantai
  • Perilaku default adalah bertindak seperti /bin/echo . Ini memberi Anda sedikit tip bahwa jika Anda perlu membuat rantai lebih dari satu xargs , Anda tidak perlu menggunakan gema untuk mencetak.
  • Kami juga telah mempelajari bahwa nama file unix dapat berisi baris kosong dan baris baru, bahwa ini bisa menjadi masalah dan argumen -0 adalah cara untuk mencegah hal-hal meledak dengan menggunakan pemisah karakter nol. Deskripsi memperingatkan Anda bahwa perintah yang digunakan sebagai input perlu mendukung fitur ini juga, dan bahwa GNU find mendukungnya. Besar. Kami menggunakan banyak pencarian dengan xargs .
  • xargs akan berhenti jika status keluar 255 tercapai.
Terkait:Belajar bahasa Inggris – Arti meninggalkan seseorang kembali [ dalam bahasa Inggris Amerika ]?

Beberapa deskripsi sangat singkat dan itu umumnya karena perangkat lunak bekerja dengan cara yang sangat sederhana. Jangan pernah berpikir untuk melewatkan bagian halaman manual ini

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 yang membuat atau membantu pembuatan
    perintah.

  • BUGS :daftar cacat yang diketahui. Mungkin 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 penafian tentang perangkat lunak. Semua terkait dengan lisensi perangkat lunak itu sendiri.

  • SEE ALSO :Perintah, alat, atau aspek kerja lain yang terkait dengan perintah ini, dan tidak dapat ditampung di bagian lain mana pun.

Anda kemungkinan besar akan menemukan info menarik tentang aspek yang Anda inginkan dari sebuah alat di bagian contoh/catatan.

Contoh

Pada langkah-langkah berikut saya akan mengambil find sebagai contoh, karena konsepnya “lebih sederhana” daripada xargs untuk menjelaskan (satu perintah menemukan file dan yang lainnya berhubungan dengan stdin dan eksekusi pipelined dari output perintah lainnya). Anggap saja kita tidak tahu apa-apa (atau sangat sedikit) tentang perintah ini.

Saya memiliki masalah khusus yaitu:Saya harus mencari setiap file dengan kode .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 . SYNOPSIS ramping. Mari kita cari 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 menelusuri 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 menekan n . OKE. Menemukan sesuatu yang menarik:find ( -size +100M -fprintf /root/big.txt %-10s %pn ) . 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 halaman manual dan mencari kata lain.

Sekali lagi, mari kita coba kata greater . Menekan g akan membawa kita ke kepala halaman 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 semua n yang dapat ditemukan di halaman manual ini (seperti yang dikatakan frasa:“Argumen numerik dapat ditentukan sebagai”).

Bagus. Mari kita temukan cara untuk memfilter menurut nama:g / insensitive . Mengapa? Tidak peka? apa? Kami memiliki server ftp hipotetis, di mana "OS lain itu" orang dapat memberikan nama file dengan ekstensi sebagai .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 simbolik. Kami ingin file nyata. Entri berikutnya:

   -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.

Besar. Saya bahkan tidak perlu membaca tentang -name untuk melihat -iname adalah versi case-sensitive dari argumen ini. Mari kita susun perintahnya:

Perintah: find /ftp/dir/ -size +500k -iname "*.jpg"

Apa yang tersirat di sini:Pengetahuan bahwa karakter pengganti ? mewakili "karakter apa saja pada satu posisi" dan * mewakili "nol atau lebih dari karakter apa pun". -name parameter akan memberi Anda ringkasan pengetahuan ini.

Tips yang berlaku untuk semua perintah

Beberapa opsi, mnemonik, dan "gaya sintaksis" berjalan melalui semua perintah yang membuat Anda mengulur waktu dengan tidak harus membuka halaman manual sama sekali. Itu dipelajari dengan latihan dan yang paling umum adalah:

  • Umumnya, -v berarti bertele-tele. -vvv adalah variasi “sangat sangat bertele-tele” pada beberapa perangkat lunak.
  • Mengikuti standar POSIX, umumnya satu argumen tanda hubung dapat ditumpuk. Contoh:tar -xzvf , cp -Rv .
  • Umumnya -R dan/atau -r berarti rekursif.
  • Hampir semua perintah memiliki bantuan singkat dengan --help pilihan.
  • --version menunjukkan versi perangkat lunak.
  • -p , pada utilitas salin atau pindahkan berarti "pertahankan izin".
  • -y berarti YA, atau “lanjutkan tanpa konfirmasi” dalam banyak kasus.

Perhatikan bahwa hal di atas tidak selalu benar. Misalnya, -r switch dapat berarti hal yang sangat berbeda untuk perangkat lunak yang berbeda. Itu selalu merupakan ide yang baik untuk memeriksa dan memastikan ketika sebuah perintah bisa berbahaya, tetapi ini adalah default yang umum.

Terkait:Belajar Bahasa Inggris – Apakah “waktu Anda sudah selesai” sering digunakan?

Nilai perintah default.

Pada potongan pager dari jawaban ini, kami melihat bahwa less -is adalah pager man . Perilaku default perintah tidak selalu ditampilkan di bagian terpisah pada halaman manual, atau di bagian yang paling atas.

Anda harus membaca opsi untuk mengetahui default, atau jika Anda beruntung, ketik / 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 opsi tidak
    biner(aktif/nonaktif) seperti -t saat dipasang, yang menentukan jenis sistem file
    (-t iso9660 , -t ext2 ). “Lakukan ini dengan mata tertutup ” atau
    memberi makan hewan, tetapi hanya singa “. Disebut juga argumen.
  • Operan adalah hal-hal yang Anda ingin perintah itu untuk ditindaklanjuti. Jika Anda menggunakan cat file.txt , operan adalah file di dalam direktori
    Anda saat ini, dan isinya akan ditampilkan di 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) pada
    pada waktu yang sama. Anda mungkin memperhatikan bahwa beberapa perintah telah menetapkan jenis
    operan yang akan digunakan. Contoh:cat [OPTION] [FILE]...

Hal-hal sinopsis terkait:

  • Pahami sinopsis di halaman manual

Kapan metode ini tidak berfungsi?

  • Halaman manual yang tidak memiliki contoh
  • Halaman manual di mana opsi memiliki penjelasan singkat
  • Bila Anda menggunakan kata kunci umum seperti and , to , for di dalam halaman manual
  • Halaman manual yang tidak diinstal. Tampaknya sudah jelas tetapi, jika Anda tidak memiliki lftp (dan halaman manualnya) terinstal Anda tidak dapat mengetahui bahwa itu adalah opsi yang cocok sebagai klien ftp yang lebih canggih dengan menjalankan man -k ftp

Dalam beberapa kasus, contohnya akan sangat sederhana, dan Anda harus membuat beberapa eksekusi perintah Anda untuk menguji, atau dalam skenario terburuk, Google.

Lainnya:Bahasa pemrograman dan modulnya:

Jika Anda memprogram atau hanya membuat skrip, perlu diingat bahwa beberapa bahasa memiliki sistem halaman manualnya sendiri, seperti perl (perldocs ), python(pydocs ), dll, menyimpan informasi spesifik tentang metode/fungsi, variabel, perilaku, dan informasi penting lainnya tentang modul yang Anda coba gunakan dan pelajari. Ini berguna bagi saya ketika saya membuat skrip untuk mengunduh email IMAP yang belum dibaca menggunakan perl Mail::IMAPClient modul.

Anda harus mengetahui halaman manual tertentu dengan menggunakan man -k atau mencari secara online. Contoh:

[[email protected] ~]# man -k doc | grep perl
perldoc              (1)  - Look up Perl documentation in Pod format


[[email protected] ~]# 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:

[[email protected] ~]# 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, help() fungsi di dalam python shell jika Anda ingin membaca detail lebih lanjut dari beberapa objek:

[email protected]:~$ 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: wtf perintah dapat membantu Anda dengan akronim dan berfungsi sebagai whatis jika tidak ada akronim pada basis datanya yang ditemukan, tetapi apa yang Anda cari adalah bagian dari basis data man. Di Debian, perintah ini adalah bagian dari bsdgames kemasan. Contoh:

[email protected]:~$ wtf rtfm
RTFM: read the fine/fucking manual
[email protected]:~$ wtf afaik
AFAIK: as far as I know
[email protected]:~$ wtf afak
Gee...  I don't know what afak means...
[email protected]:~$ wtf tcp
tcp: tcp (7)              - TCP protocol.
[email protected]:~$ wtf systemd
systemd: systemd (1)          - systemd system and service manager

Linux
  1. Cara Menggunakan Perintah Grep di Linux atau FreeBSD

  2. Cara efektif menggunakan Halaman Man di Linux

  3. Bagaimana saya bisa menggunakan perintah alias dengan xargs?

  1. Cara menggunakan perintah riwayat Bash

  2. Di Linux, bagaimana cara mendapatkan halaman manual untuk fungsi C daripada untuk perintah bash?

  3. Bagaimana cara membaca halaman manual Linux?

  1. Cara Menggunakan Perintah dan Opsi SFTP

  2. Cara Menggunakan Perintah Linux xargs

  3. Cara Melihat Halaman Man Berwarna di Linux