3 poin oleh GN⁺ 2023-11-24 | 1 komentar | Bagikan ke WhatsApp

Berkas biner menarik di sistem Unix

  • Di sistem Unix, ada berkas biner yang namanya berupa satu simbol tunggal.
  • Jika menjalankan perintah /bin/[, Anda bisa melihat program bernama [.
  • [ dan test menunjuk ke berkas biner yang sama, dan kedua perintah itu sebenarnya menjalankan fungsi yang sama.

Penggunaan program test dan [

  • Program test digunakan untuk mengevaluasi ekspresi di shell.
  • Digunakan untuk perbandingan string, perbandingan angka, pemeriksaan kondisi file, dan sebagainya.
  • test menerima argumen untuk mengevaluasi ekspresi, lalu mengembalikan 0 jika benar dan 1 jika salah.

Alasan keberadaan dua perintah

  • Alasan adanya dua perintah, test dan [, tidak sepenuhnya jelas, tetapi diduga untuk meningkatkan keterbacaan.
  • Dengan memakai perintah [, kondisi dapat ditulis lebih rapi dibandingkan test.
  • Saat menggunakan [, argumen terakhir perintah harus diakhiri dengan ].

Perbedaan perintah bawaan dan berkas biner eksternal

  • Karena test dan [ sering dipakai dalam skrip shell, keduanya diimplementasikan sebagai perintah bawaan di sebagian besar shell.
  • Saat memakai perintah bawaan dan berkas biner eksternal, perilakunya bisa berbeda, dan perbedaannya juga dapat muncul tergantung shell yang digunakan.

Penggunaan dan perbedaan [[

  • [[ adalah ekstensi Bash yang menggantikan penggunaan [.
  • Sebagai perintah bawaan, [[ dapat mengubah aturan dasar bahasa di dalam ekspresi.
  • Saat membandingkan string, [[ dapat memperlakukan pola glob sebagai literal sehingga menghasilkan hasil yang berbeda.

Pilihan saat menulis skrip shell

  • Saat menulis skrip shell yang portabel, lebih baik menggunakan [.
  • Jika menulis skrip khusus Bash, menggunakan [[ memberi lebih banyak fitur.

Menggabungkan ekspresi shell dan ekspresi test

  • Shell memiliki ekspresinya sendiri melalui operator !, &&, dan ||.
  • Ekspresi test dan ekspresi shell dapat digabungkan menjadi satu perintah.

Pendapat GN⁺

Poin terpenting dalam tulisan ini adalah bahwa di sistem Unix, [ dan test hadir sebagai dua perintah berbeda yang menjalankan fungsi yang sama, dan hal ini diduga untuk meningkatkan keterbacaan serta efisiensi skrip shell. Informasi ini dapat berguna bagi insinyur perangkat lunak pemula saat menulis atau memahami skrip shell, serta membantu memahami cara kerja skrip shell dan perbedaan di antara berbagai shell. Tulisan ini menarik karena menunjukkan bagaimana alat-alat dasar dalam skrip shell dapat digunakan dalam berbagai bentuk, sekaligus menampilkan kompleksitas dan fleksibilitas pemrograman shell dengan baik.

1 komentar

 
GN⁺ 2023-11-24
Komentar Hacker News
  • Ucapan terima kasih dari penulis asli dan usulan revisi judul

    Penulis asli menyampaikan terima kasih karena tulisannya menjadi populer, serta mengusulkan agar tahun ditambahkan ke judul dan menghindari penggunaan huruf kapital pada kata "test". Alasannya, "test" merujuk pada perintah yang sebenarnya.

  • Sejarah perintah "test" di shell Bourne dan preferensi pribadi

    Dijelaskan bahwa shell Bourne dibuat pada masa belum ada IDE, sehingga perintah "test" digunakan tanpa tanda kurung atau tanda kurung siku. Secara pribadi, ia mengatakan lebih menyukai bentuk "test" daripada bentuk tanda kurung siku.

  • Contoh ekspresi kondisional tanpa menggunakan blok if

    Diperkenalkan cara menulis ekspresi kondisional secara ringkas tanpa blok if, disertai contoh keluaran debug yang dicetak secara kondisional ke stderr.

  • Cara menggabungkan blok if dengan perintah biasa

    Ditunjukkan bahwa blok if dapat menguji perintah biasa, dengan contoh pencarian log menggunakan perintah grep.

  • Pertimbangan penggunaan operasi logika dalam perintah test

    Disampaikan pertimbangan apakah akan memakai operasi logika di dalam perintah test atau menggunakan ekspresi kondisional terpisah. Jika tidak ada masalah performa, keduanya dinilai sama-sama punya alasan yang masuk akal.

  • Kelebihan memakai perintah "test" dan kemudahan "man test"

    Disebutkan bahwa sejak beberapa tahun lalu ia berpendapat lebih baik menggunakan perintah "test" tanpa tanda kurung siku. Ini menegaskan bahwa "test" hanyalah perintah sederhana, dan menggunakan "man test" lebih praktis daripada mencari "man bash".

  • Perhatian pada perilaku argumen tunggal [ dan test

    Diperingatkan bahwa saat memeriksa apakah variabel tidak kosong, tidak membungkus variabel dengan tanda kutip dapat menimbulkan hasil yang tak terduga. Ditekankan bahwa variabel harus dibungkus dengan tanda kutip.

  • Perbedaan /bin/[ dan /bin/test di Linux dan NetBSD

    Dibagikan fakta bahwa di Linux, /bin/[ dan /bin/test berbeda, tetapi di NetBSD keduanya sama.

  • Berbagi tautan blog untuk eksplorasi lebih dalam tentang test/[/[[ dan berbagai keanehan shell

    Dibagikan tautan ke dokumen yang membantu memahami test, [, dan [[ lebih dalam, serta blog yang menjelaskan berbagai karakteristik shell.

  • Menunjukkan bahwa [[ khusus bash, dan merekomendasikan [[ bila pasti menggunakan bash

    Disebutkan bahwa [[ adalah perintah khusus bash, dan disarankan menggunakan [[ jika memang pasti memakai bash.

  • Kebingungan tentang anggapan bahwa [ bukan bagian dari bahasa scripting bash

    Diungkapkan adanya kebingungan dalam memahami bahwa [ bukan bagian dari bahasa scripting bash, melainkan hanya program biasa, serta diminta penjelasan mengenai hal itu.

  • Pendapat keras tentang shell dan penolakan terhadap penggunaan [

    Disampaikan pendapat tegas bahwa sebaiknya tidak memakai [, dan hanya menggunakan "test". Ditekankan bahwa [ tampak seperti sintaks bahasa, padahal sebenarnya adalah program, serta diklaim bahwa evaluasi string seharusnya menggunakan pernyataan case.