help
menampilkan informasi tentang perintah builtin. Apa sumber bantuannya? Apakah ia memelihara database untuk perintah builtin, atau apakah ia membaca beberapa file dari setiap perintah builtin (mirip dengan halaman manual masing-masing utilitas)?
Kadang-kadang saya menemukan informasinya tampaknya memperluas dengan --help
$ cd --help
bash: cd: --: invalid option
cd: usage: cd [-L|[-P [-e]]] [dir]
$ help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars' is set,
the word is assumed to be a variable name. If that variable has a value,
its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links
-e if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L' were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
Saya pikir help
ekstrak bagian bantuan yang dapat dieksekusi, tetapi untuk skrip python pdf-merge.py , tidak
$ help ./pdf-merge.py
bash: help: no help topics match `./pdf-merge.py'. Try `help help' or `man -k ./pdf-merge.py' or `info ./pdf-merge.py'.
$ ./pdf-merge.py --help
usage: pdf-merge.py [-h] [-v] [--ask] [--output OUTPUT] [--title TITLE]
[--author AUTHOR] [--keyword KEYWORD] [--pdftk PDFTK]
[--gs GS] [--pdfmarks PDFMARKS] [--unicode]
PDF [PDF ...]
Merge PDFs preserving bookmarks. Thanks to Larry Cai for suggesting that
Unicode be supported and for discussion about the `--pdfmarks` option.
positional arguments:
PDF an input PDF to merge
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
--ask pause for manual pdfmark tweaking
--output OUTPUT name of the output PDF
--title TITLE title of output PDF
--author AUTHOR author of output PDF
--keyword KEYWORD keywords for the output PDF
--pdftk PDFTK path to the pdftk executable
--gs GS path to the gs (Ghostscript) executable
--pdfmarks PDFMARKS path to pdfmarks file. If not given, a temporary file
is used. If given and the file is missing, execution
will stop after the file is created (before the
Ghostscript run). If given and the file exists, no
attempt will be make to use pdftk to generate the mark
file (I assume your input file is what you want).
--unicode instead of merging PDFs, convert PDF-formatted unicode
strings. For example `--unicode '<FEFF03B103B203B3>'
\u03b1\u03b2\u03b3`
cd
tidak memiliki--help
opsi. Apa yang Anda lihat adalah pesan penggunaan dasar yang Anda dapatkan ketika mencoba menggunakan bendera opsi yang tidak valid.man
perintah, dan dalam sistem yang mendukungnyainfo
perintah.Jawaban:
help
adalah bash builtin dan hanya memberi Anda detail bash builtin lain dari buildtime.Sumber untuk
help
dihasilkan pada waktu kompilasi daridef
file di direktori builtin dari pohon sumber bash. Jika Anda melihat kode sumber bantuan dancd
Anda akan melihat bahwa informasi tersebut adalah bagian dari$SHORT_DOC
.help
menggunakan array yang dipanggilshell_builtins
untuk mengakses informasi.sumber
strings /bin/bash | grep 'Change the current directory to DIR'
help cd
dancd --help
pada dasarnya berbeda.help
adalah perintah yang dibangun ke dalam shell, dan itu memberikan informasi tentang perintah lain yang dibangun ke dalam shell , artinya, mereka tidak dapat dieksekusi sendiri, mereka adalah fitur, misalnyabash
,. Ini bisa sedikit membingungkan karena beberapa perintah bawaan juga memiliki versi yang dapat dieksekusi mandiri. Dalam hal ini, mereka biasanya memiliki halaman manual sendiri, dan akan memaparkan jalur yang dapat dieksekusi jika Anda bertanyawhich [command]
. Informasi di halaman manual, atau dari[command] --help
adalah untuk dieksekusi; info darihelp [command]
untuk built-in, tapi semoga semuanya kurang lebih sama. Jika Anda mencari halaman manual untuk perintah yang hanya built-in, Anda mungkin akan mendapatkan halaman untuk shell yang mencantumkan semua perintah bawaannya.--help
(termasuk formulir pendek-h
) hanyalah label konvensional untuk opsi baris perintah ke file yang dapat dieksekusi. Banyak, tetapi tidak semua, alat CLI mengimplementasikan ini, tetapi mereka tidak terikat dan informasi yang diberikan tergantung sepenuhnya pada implementasi. Jika Anda menjalankan--help
shell built-in, Anda kemungkinan mendapat "opsi tidak valid" dan pesan "penggunaan" singkat. Jika Anda memintanya pada standalone yang tidak mengimplementasikannya, Anda juga bisa mendapatkan "opsi tidak valid", tetapi apa yang terjadi lagi tergantung pada aplikasi.Jika ada versi built-in dan standalone dari sebuah perintah yang tersedia dan Anda ingin tahu mana yang digunakan ketika Anda memintanya, Anda bisa menggunakan
type
, shell lain built-in.Di sini kita dapat melihat bahwa meskipun ada eksekusi mandiri
echo
,echo
shell Anda memanggil built-in.sumber
type
dua kali:type -a echo
mengembalikan semua panggilan keecho
dalam jangkauan Anda (sebagaimana didefinisikan oleh $ PATH), termasuk bawaan, fungsi shell dan alias. Lihathelp type
untuk referensi.Anda sudah menjawab pertanyaan Anda sendiri:
Bantuan adalah perintah BUILTIN (artinya, bash perintah internal) untuk mendapatkan informasi dari perintah bawaan lainnya. Karena skrip bagian ketiga ini bukan merupakan perintah bash. Jika Anda menjalankan
bash
, panggil builtinhelp
suatu penggunaanstrace
yang akan Anda dapatkan:Cukup banyak berarti bahwa informasi ini dihasilkan saat membangun di dalam biner bash.
sumber
cd
?strace
adalah alat untuk melihat apa yang dilakukan perintah yang ditentukan saat dalam eksekusi (pustaka, panggilan sistem, file dibuka, dll). Metode iniwrite
menunjukkan bahwa informasi bantuan berasal dari dalam biner (bash) saat menggunakan perintah bantuan builtin, dan bukan dari membuka file (seperti halaman manual).Saya percaya --help adalah bagian dari executable, itu harus diimplementasikan di sana. Itu sebabnya Anda melihat versi yang berbeda dari --help, kadang-kadang -h singkatan diperbolehkan, yang lain itu adalah "bantuan" yang tidak diawali ...
Edit
Saya salah membaca bagian dari pertanyaan Anda. Saya tidak terbiasa dengan pekerjaan dalam dari perintah "bantuan" itu sendiri.
sumber
help
menemukan informasi dari perintah lain?