Misalnya,
[fakename]$ type echo
echo is a shell builtin
Tapi man echo
memberi saya versi GNU coreutils dari echo
. Apa cara termudah untuk mengetahui apakah halaman manual yang saya lihat adalah halaman yang benar, yaitu halaman untuk utilitas yang akan saya dapatkan jika saya langsung menjalankannya?
Jawaban yang Diterima:
Anda tidak, sungguh. Bukan tanpa pengetahuan di luar halaman manual.
Dalam kasus echo
(dan printf
, dan test
, ...), ini sering kali merupakan shell bawaan, jadi Anda harus mengetahuinya dan membaca dokumentasi shell. (Dan echo
terkenal berbeda dalam implementasi yang berbeda, gunakan printf
sebagai gantinya.)
Di sebagian besar, jika tidak semua shell, Anda dapat menemukan apakah ada sesuatu yang bawaan dengan type command
, misalnya type echo
akan mencetak echo is a shell builtin
. (type
ditentukan oleh POSIX tetapi mis. ikan juga mendukungnya, seperti non-POSIXy.) Di Bash, Anda kemudian akan membaca man bash
, dokumentasi online, atau gunakan perintah bawaan help
(yang khusus untuk Bash, dan yang perlu Anda ketahui keberadaannya).
Meskipun perintahnya tidak builtin, kemungkinan ada beberapa perintah dengan nama yang sama, rename
menjadi contoh terkenal (lihat Mengapa utilitas rename di Debian/Ubuntu berbeda dari yang ada di distribusi lain, seperti CentOS?). Sekarang, OS Anda harus memiliki halaman manual yang benar untuk utilitas yang benar-benar terinstal, dan mis. di Debian, sistem "alternatif" memperbarui halaman manual yang sesuai juga ketika alternatif perintah diubah. Tetapi jika Anda membaca halaman manual online, Anda harus menyadarinya.
Banyak utilitas memiliki opsi baris perintah seperti --version
yang mungkin memberi tahu Anda apa implementasi perintah itu. (Tetapi tidak hampir semua utilitas memilikinya. Saya pikir itu adalah GNUisme awalnya, jadi utilitas GNU memilikinya, serta yang kebetulan menyalin kebiasaan.) Dalam kasus rename
, itu berhasil membedakan dua implementasi yang berbeda:
debian$ rename --version
/usr/bin/rename using File::Rename version 0.20
centos$ rename --version
rename (util-linux-ng 2.17.2)
Selain itu, sistem Anda mungkin memiliki alias atau fungsi dengan nama utilitas yang sama, biasanya untuk mengubah perilaku utilitas. Dalam hal ini, default yang disajikan di halaman manual mungkin tidak berlaku. Alias untuk ls
adalah umum, seperti juga alias menambahkan -i
ke rm
atau mv
. Tapi type foo
juga akan memberi tahu Anda jika foo
adalah alias atau fungsi.