Saat meneliti masalah lain, saya menemukan sebuah perintah ,
locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"
yang ingin saya pelajari lebih lanjut. Jadi saya berlari man xargs
dan mendapatkan 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 menjadi lebih baik dalam menggunakan dokumentasi untuk belajar tentang program-program Linux, tetapi bagian "Sinopsis" itu mengintimidasi pengguna baru. Secara harfiah ini terlihat seperti omong kosong dibandingkan dengan man locate
atau man free
.
Sejauh ini, saya mengerti bahwa tanda kurung siku berarti opsi dan tanda kurung bersarang di opsi opsional. Tapi bagaimana saya bisa mendorong perintah yang valid dengan itu?
Saya tidak meminta bantuan dengan xargs di sini. Saya mencari bantuan menafsirkan halaman manual untuk memahami perintah yang rumit. Saya ingin berhenti membuat blog web yang diindeks Google dan bantuan pribadi dari orang lain pendekatan pertama saya untuk mempelajari perintah-perintah Linux.
man man
man man
dibacaman intro
.Jawaban:
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 olehless
ataumore
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:Pada FreeBSD dan OpenBSD hanya masalah mengedit
MANPAGER
variabel lingkungan karena mereka sebagian besar akan digunakanmore
, dan beberapa fitur seperti pencarian dan sorotan teks bisa hilang.Ada jawaban yang bagus untuk pertanyaan perbedaan apa
more
,less
danmost
ada di sini (tidak pernah digunakanmost
). Kemampuan untuk menggulir mundur dan menggulir maju berdasarkan halaman dengan Spaceatau kedua cara menurut garis dengan ↓atau ↑(juga, menggunakanvi
binding jdan k) sangat penting saat menelusuri halaman manual. Tekan hsaat menggunakanless
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:
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
atauapropos
(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 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:Selalu baca
DESCRIPTION
sebelum memulaiLuangkan 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/bin/echo
. Ini memberi Anda sedikit tip bahwa jika Anda perlu rantai lebih dari satuxargs
, Anda tidak perlu menggunakan gema untuk mencetak.-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 GNUfind
mendukungnya. Bagus. Kami menggunakan banyak temuan denganxargs
.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 melihatSYNOPSIS
, Anda akan kewalahan oleh mereka. Itu hanya puncak gunung es. Tidak termasukNAME
,,SYNOPSIS
danDESCRIPTION
, 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
atauNOTES
: 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" daripadaxargs
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
. ItuSYNOPSIS
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: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:Namun, setelah Anda mencari,
lname
Anda akan melihat bahwa ini hanya akan mencari tautan simbolis. Kami ingin file nyata. Entri selanjutnya: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:
-v
berarti verbose.-vvv
adalah variasi "sangat sangat bertele-tele" pada beberapa perangkat lunak.tar -xzvf
,cp -Rv
.-R
dan / atau-r
berarti rekursif.--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 pagerman
. 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 FreeBSDman(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:
-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.cat file.txt
, operan adalah file di dalam direktori Anda saat ini, dan isinya akan ditampilkan padaSTDOUT
.ls
adalah perintah di mana operan adalah opsional. Tiga titik setelah operan secara implisit memberi tahu Anda bahwacat
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?
and
,to
,for
di dalam halaman manuallftp
(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 menggunakanperl Mail::IMAPClient
modul.Anda harus mencari tahu halaman manual tersebut dengan menggunakan
man -k
atau mencari secara online. Contoh:... banyak hal lain di sini, dengan bagian seperti halaman manual biasa ...
Dengan python:
Atau, fungsi
help()
di dalam kulit python jika Anda ingin membaca detail lebih lanjut dari beberapa objek:Bonus: The
wtf
perintah dapat membantu Anda dengan akronim dan bekerja sebagaiwhatis
jika tidak ada singkatan dari database itu ditemukan, tetapi apa yang Anda cari adalah bagian dari database manusia. Pada Debian, perintah ini adalah bagian daribsdgames
paket. Contoh:sumber
man find | grep ...
. Saya sukaman command | sed -n '/^[[:space:]]*-/,/^$/p'
man
?" Terima kasih dan dilakukan dengan baik.man
halaman tentunya.Ini dijelaskan dengan sangat baik di
man man
:Adapun bagaimana Anda seharusnya menulis perintah yang valid dari itu, ya, Anda tidak. Sinopsis berguna setelah Anda tahu cara kerja suatu perintah. Ini dapat membantu Anda menyegarkan ingatan Anda. Untuk memahami cara kerja perintah, Anda harus membaca halaman manual. Terutama uraian opsi dan bagian contoh.
Terkadang sinopsis sudah cukup. Misalnya, di
man ls
:Di lain waktu, tidak ada gunanya kecuali Anda sudah tahu cara menggunakan perintah yang dimaksud. Sebagai contoh,
man dd
:Jadi, sebagai kesimpulan, jangan khawatir jika Anda tidak mendapatkan sinopsisnya. Itu normal. Baca halaman manual itu sendiri.
sumber
Beberapa dasar untuk memahami sinopsis
[foo]
mewakili argumen atau parameter opsional.[foo [ bar ] ]
sintaks digunakan, Anda dapat menggunakan foo, dan Anda dapat menambahkan bilah.[ -S size ]
, yang mengatakan bahwa argumen -S sedang menunggu ukuran wajib.Misalnya :
foo [-S size ] filename ...
cara
foo
-S
dapat digunakan, Anda harus memberi tahusize
(nama memberi Anda petunjuk)filename
(ini memberi Anda petunjuk juga, lihatman mkdir
)...
memberi tahu Anda bahwa Anda dapat menggunakan banyak file.Anda masih harus masuk ke halaman manual untuk memahami opsi (dalam contoh kasus saya di atas, tentang apa
-S size
)sumber
man
halaman biasanya ditampilkan denganless
saat ini. Itu memungkinkan untuk mencari melalui mereka. Saya tidak akan repot dengan sinopsis, terutama bukan karena Anda memiliki perintah tertentu yang ingin Anda pahami.Tekan /dan mulai mengetik
-I
lalu Enter. Hit pertama akan ada di sinopsis, yang kedua (gunakan nuntuk selanjutnya) memberi Anda penjelasan terperinci untuk-I
.sumber
Satu hal penting yang perlu diingat adalah bahwa Anda tidak bisa hanya melihat manual untuk satu perintah, dalam hal perintah yang mengeksekusi perintah lain.
Sebagai contoh perintah Anda
Anda memerlukan informasi tentang tidak hanya
xargs
tetapi jugabash
dan[
(ini mungkin ada di halamantest
manual). Anda juga mungkin memerlukan informasi tentang shell Anda (mungkin juga bash) untuk aturan kutip, karena perintah Anda menyertakan string yang dikutip kompleks. Saya sudah bisa memberi tahu Anda bahwa argumen yang dikutip salah (dan salah dengan cara yang hanya akan muncul ketika Anda menemukan file dengan spasi di namanya); batin"{}"
seharusnya'{}'
.Jadi pertama-tama Anda akan merujuk ke halaman manual xargs dan melihat
[-I replace-str]
apa-I {}
artinya, dan[command [initial-arguments]]
untuk apabash
dan segala sesuatu setelah artinya. Maka Anda akan merujuk ke halamanbash
manual untuk apa-c
, dll.sumber
Menambahkan jawaban hebat yang sudah diberikan:
1) Jika Anda tertarik dengan utilitas gnu, terutama yang suka
sed
dangrep
, kadang-kadang, menggunakaninfo
perintah akan memunculkan versi informasi perintah yang sangat diperluas.sed
, misalnya, memiliki bagian rinci tentang cara menulis ekspresi reguler dan bagian lain dengan beberapa contoh penggunaan yang sangat kompleks.2) Ini adalah "manual". Manual terutama dirancang untuk membantu Anda mengingat detail dari sesuatu yang sudah Anda pahami. Ini dirancang agar Anda bisa mendapatkan detail yang Anda butuhkan dengan cepat dan keluar. (Dan terlalu banyak yang tidak memiliki contoh penggunaan atau hanya yang sepele.)
Ketika saya perlu belajar sesuatu yang baru, bahkan fitur kecil dari perintah yang tidak jelas bagi saya, saya pergi ke web dan pencarian menggunakan kata kunci yang terbaik yang bisa saya pikirkan (misalnya
Linux
xargs
) dan menambahkan katahowto
,examples
ataututorial
. Ini sangat sering sangat produktif.Saya biasanya menggunakan duckduckgo karena menjaga privasi saya, tetapi jika saya membutuhkan kontrol lebih besar dari pencarian saya, saya menggunakan Google karena saya dapat mengatakannya hanya untuk mencari dalam satu situs web atau hanya mengembalikan hasil dari tahun lalu. (Ini memiliki banyak opsi Pencarian Lanjutan lainnya. Anda dapat Google mereka.;))
Kiat lain:
Untuk perintah yang sering saya referensi, saya menyimpan halaman manual dalam file teks
dan memuat file itu ke jendela lain di editor teks saya sehingga saya bisa membalik-balik, salin dan tempel, dll. Saya biasanya membuat file hanya baca, jadi saya tidak mengacaukannya secara tidak sengaja, tetapi karena itu milik saya salinan pribadi, saya dapat mengeditnya dengan cara apa pun yang saya inginkan, menambahkan tag sehingga saya dapat menemukan bagian lebih mudah atau bahkan menambahkan catatan atau contoh saya sendiri.
Satu-satunya kelemahan dari ini adalah bahwa halaman manual asli dapat diperbarui dan salinan saya statis.
sumber
Untuk mendapatkan bantuan cepat dengan perintah spesifik Anda, Anda dapat menggunakan Explain Shell . Misalnya perintahmu . Setelah mendapatkan pemahaman tingkat tinggi pertama tentang cara kerjanya, Anda harus melanjutkan dengan halaman manual seperti yang direkomendasikan oleh jawaban lain.
sumber
Ada beberapa alat yang berguna untuk mempelajari lebih lanjut tentang perintah linux:
cheat
akan menampilkan opsi yang sering digunakan untuk baris perintah. Anda juga dapat menambahkan sendiricommand + option
untuk ditampilkan melaluicheat
untuk perintah tertentu.bropages
alat memberikan beberapa contoh untuk baris perintah, dimungkinkan untuk menambahkan contoh Anda sendiri atau menaikkan / menurunkan contoh yang diberikan setelah mendapatkan kode verifikasibro thanks
. Perintah harus memilih akan muncul di bagian atasbro
halaman.sumber
Saya sarankan
tldr
untuk alat serupa manusia yang komprehensif. Halaman manual yang disederhanakan dan digerakkan oleh komunitas. Di Ubuntu Anda dapat menginstalnya melalui snap, tetapi ia juga memiliki versi untuk distribusi lain. Ini juga memberi Anda beberapa contoh penggunaan umum. 100% direkomendasikan.sumber
> Saya mencari bantuan menafsirkan halaman manual untuk memahami perintah yang rumit.
Saya pikir itu kesalahpahaman di sini. Apa yang membuat Linux / UNIX begitu kuat adalah bahwa Anda dapat membangun perintah yang sangat panjang dan efektif dengan misalnya mengarahkan ulang stdout dari satu perintah (di sini,
locate
) ke stdin dari perintah lain (di sini,xargs
) melalui pipa (|
). Oleh karena itu, seperti yang dikatakan Random832 dengan benar, Anda tidak akan menemukan satu halaman manual yang menjelaskan apa yang dilakukan oleh perintah contoh Anda.Saya sarankan Anda membaca panduan skrip shell Linux; yang Lanjutan Bash-Scripting Guide adalah dokumen yang sangat baik. Tolong jangan diintimidasi olehnya; menguasai Linux membutuhkan waktu bertahun-tahun dan merupakan proses yang tidak pernah berakhir, tetapi Anda dapat mempelajari dasar-dasarnya dalam jumlah waktu yang wajar.
Kemudian, lihat halaman manual ketika Anda perlu mengetahui detail dari perintah tertentu.
Setelah Anda mendapatkan intinya, Commandlinefu dan Bash One-Liners juga layak dibaca untuk mendapatkan contoh yang baik.
sumber
Untuk mencari sesuatu yang khusus dalam perintah di halaman manual, Anda dapat menggunakan:
Tetapi untuk mencari sakelar (misalnya
-n
), Anda harus menggunakannya dengan cara ini:sumber