GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mengetahui Jika Halaman Man yang Saya Lihat Adalah Yang Benar?

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.

Terkait:Mengapa saya tidak bisa mendapatkan output pgrep langsung ke variabel pada skrip bash?
Linux
  1. Bagaimana saya tahu nama file skrip dalam skrip Bash?

  2. Bagaimana cara mengetahui nilai built-in macro di RPM?

  3. Bagaimana saya bisa mengetahui jalur absolut dari proses yang sedang berjalan?

  1. Bagaimana Cara Menambahkan Entri Halaman Man Untuk Power Tools Sendiri?

  2. Bagaimana cara menampilkan isi file secara rekursif?

  3. Bagaimana cara berbagi koneksi internet?

  1. Apa Arti Angka Dalam Halaman Man?

  2. Bagaimana Anda Mencerminkan Stdout Dari Satu Terminal Ke Terminal Lainnya?

  3. Bagaimana Mengetahui Jika Saya Melakukan Booting Menggunakan UEFA?