command
adalah bash builtin seperti yang bisa kita lihat:
seth@host:~$ type command
command is a shell builtin
Jadi kita tahu command
disediakan oleh shell kita, bash. Menggali man bash
kita dapat melihat apa gunanya:
(dari man bash
):
command [-pVv] command [arg ...]
Run command with args suppressing the normal shell function
lookup. Only builtin commands or commands found in the PATH are
executed. If the -p option is given, the search for command is
performed using a default value for PATH that is guaranteed to
find all of the standard utilities. If either the -V or -v
option is supplied, a description of command is printed. The -v
option causes a single word indicating the command or file name
used to invoke command to be displayed; the -V option produces a
more verbose description. If the -V or -v option is supplied,
the exit status is 0 if command was found, and 1 if not. If
neither option is supplied and an error occurred or command
cannot be found, the exit status is 127. Otherwise, the exit
status of the command builtin is the exit status of command.
Pada dasarnya Anda akan menggunakan command
untuk memotong "pencarian fungsi normal". Misalnya, Anda memiliki fungsi di .bashrc
:
function say_hello() {
echo 'Hello!'
}
Biasanya, ketika Anda menjalankan say_hello
bash terminal Anda akan menemukan fungsi yang dinamai say_hello
di Anda .bashrc
sebelum ditemukan, katakanlah, aplikasi bernama say_hello
. Menggunakan:
command say_hello
membuat bash memintas pencarian fungsi normalnya dan langsung menuju bawaan atau Anda $PATH
. Perhatikan bahwa pencarian fungsi ini juga termasuk alias. Menggunakan command
akan memintas kedua fungsi dan alias.
Jika -p
opsi ini disediakan, bash mem-bypass custom Anda $PATH
dan menggunakan default sendiri.
The -v
atau -V
bendera pesta mencetak deskripsi (singkatan -v
, panjang untuk -V
) dari perintah.
Catatan: Seperti yang ditunjukkan oleh souravc dalam komentar, metode yang lebih mudah untuk menemukan informasi tentang shell builtin dapat ditemukan di sini: Bagaimana membuat `man` berfungsi untuk perintah dan kata kunci builtin shell?
command
di komputer saya.sudo apt-get install manpages-posix
. Ini tidak diinstal secara default. lihat di siniIni adalah perintah bawaan dari Bash shell.
Satu-satunya keuntungan yang saya lihat dengan bawaan ini dirangkum dalam kalimat berikut dari teks bantuan:
Jadi jika Anda ingin menjalankan suatu program (file biner yang disimpan dari beberapa disk Anda), dan fungsi shell internal dengan nama yang sama ada, maka Anda dapat menjalankan program Anda menggunakan built-in ini.
Dan ya,
command -v
akan memberikan hasil yang sama dengantype
.Saya telah menemukannya juga di bawah shell Dash.
sumber
command (name)
mengabaikan fungsi shell,command -v (name)
tidak.command -v (name) >/dev/null
seharusnya menjadi cara portabel untuk memeriksa apakah perintah dengan nama itu ada, terlepas dari apakah itu shell builtin, fungsi, atau utilitas eksternal.command make
untuk menjalankan program make aktual-faktual. Sayangnya, saya memiliki skrip shell lain yang rusak ketika lingkungan AOSP mulai menambahkan apa-apa untukmake
output program dan itu menjengkelkan sekali mencari tahu di mana output tambahan itu secara misterius berasal.Ini memiliki dua kegunaan yang berbeda:
Satu gunanya adalah untuk mengabaikan alias dan fungsi , dan menjalankan file yang dapat dieksekusi yang ditemukan di PATH, bahkan ketika alias atau fungsi dengan nama yang sama ada.
Sebagai contoh, saya akan menggunakan alias untuk
ls
yang menambahkan/
ke nama direktori:Dalam shell interaktif, mungkin lebih nyaman menggunakan backslash sebelum nama perintah sebagai alternatif, sintaksis yang lebih pendek:
Penggunaan lainnya adalah menemukan perintah yang akan dijalankan ketika nama perintah tidak digunakan dengan menggunakan opsi
-v
. Tampaknya menjadi varian paling portabel / POSIX dariwhich
.sumber
command
berguna, misalnya, jika Anda ingin memeriksa keberadaan perintah tertentu.which
menyertakan alias ke dalam pencarian sehingga tidak cocok untuk tujuan ini karena Anda tidak ingin alias acak dianggap sebagai perintah yang dipermasalahkan.Dengan kata lain, Anda dapat memiliki fungsi kecil di skrip shell seperti ini:
Dan kemudian uji untuk perintah yang tersedia (di sini,
dialog
), seperti:sumber
Ini memungkinkan Anda menjalankan perintah shell mengabaikan fungsi shell.
http://ss64.com/bash/command.html
sumber