Tujuan dari pertanyaan ini adalah untuk menjawab rasa ingin tahu, bukan untuk memecahkan masalah komputasi tertentu. Pertanyaannya adalah: Mengapa utilitas wajib POSIX tidak umum dibangun ke dalam implementasi shell?
Sebagai contoh, saya memiliki skrip yang pada dasarnya membaca beberapa file teks kecil dan memeriksa apakah mereka diformat dengan benar, tetapi butuh 27 detik untuk menjalankan, pada mesin saya, karena sejumlah besar manipulasi string. Manipulasi string ini membuat ribuan proses baru dengan memanggil berbagai utilitas, karenanya lambat. Saya cukup yakin bahwa jika beberapa utilitas dibangun di, yaitu grep
, sed
, cut
, tr
, dan expr
, maka script akan berjalan dalam satu detik atau kurang (berdasarkan pengalaman saya di C).
Tampaknya akan ada banyak situasi di mana membangun utilitas ini akan membuat perbedaan antara apakah solusi dalam skrip shell memiliki kinerja yang dapat diterima.
Jelas, ada alasan mengapa itu tidak membuat utilitas ini terintegrasi. Mungkin memiliki satu versi utilitas pada tingkat sistem menghindari memiliki beberapa versi yang tidak sama dari utilitas yang digunakan oleh berbagai shell. Saya benar-benar tidak dapat memikirkan banyak alasan lain untuk menjaga overhead menciptakan begitu banyak proses baru, dan POSIX mendefinisikan cukup tentang utilitas sehingga sepertinya tidak banyak masalah untuk memiliki implementasi yang berbeda, asalkan mereka masing-masing POSIX sesuai. Setidaknya tidak sebesar masalah seperti inefisiensi memiliki begitu banyak proses.
printf
, dll) telah dimasukkan ke dalam shell ketika mereka dianggap cukup berguna.
awk
adalah utilitas wajib di POSIX, dan terutama juga cocok (yaitu, sangat cepat) untuk menerapkan skrip yang mungkin Anda menerapkan menggunakan sed
, cut
, tr
, grep
, dan expr
dalam shell script.