Saya baru-baru ini browsing /bin
folder Fedora saya dan melihat biner bernama [
. Saya memang mencoba mencari di internet untuk informasi lebih lanjut tentang itu, tetapi saya tidak menemukan sesuatu yang berguna. Menjalankannya strace
sepertinya tidak menghasilkan sesuatu yang berguna untuk pemeriksaan lebih dekat juga.
Apa itu? Haruskah saya khawatir? Mungkinkah itu hasil dari kompromi sistem? Haruskah saya menjalankannya? Apakah itu milik paket apa pun?
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
man [
untuk melihat apa[
perintahnya!bash
, dan berpikir itu mungkin sesuatu yang lain. Ini bukan hal pertama yang terlintas dalam pikiran Anda ketika Anda melihat biner dengan nama yang belum pernah Anda lihat di sistem file Anda - atau dengan kata lain, Anda harus menemukan sesuatu yang lebih konkret untuk menghapus keraguan di kepala Anda. .rpm -qif /bin/[
untuk mencari tahu dari mana asalnya ...Jawaban:
The
[
biner yang berada di bawah/bin
pohon di banyak distribusi GNU / Linux bukanlah sesuatu yang khawatir off. Setidaknya dalam Fedora 19 saya, ini adalah bagian dari paket coreutils, seperti yang ditunjukkan di bawah ini:dan merupakan sinonim untuk
test
memungkinkan ekspresi ingin[ expression ]
ditulis dalam skrip shell atau bahkan penggunaan interaktif.sumber
bash
memiliki builtintest
dan[
dan tidak memanggil biner eksternal.[
diperlukan oleh spesifikasi ini.[
perintah builtin . Non-Bourne-seperti yang seperti(t)csh
,rc
,es
umumnya tidak (fish
adalah pengecualian di sana).The
[
perintah sama dengantest
perintah.Ini memungkinkan Anda untuk menulis pernyataan kondisional yang agak singkat dalam skrip shell. Dari halaman manual SunOS:
Jika Anda menghapusnya, skrip akan rusak!
sumber
[
perintah bawaan akan pecah. Kebanyakan kerang melakukannya. Tetap saja, saya pasti tidak akan merekomendasikan menghapus/bin/[
.[
skrip-skripnya yang menjalankan aplikasi non-shell[
yang akan rusak. Sukafind ... -exec [ -f {} ] \;
atauenv LC_ALL=C [ -f bar ]
[
sebagai builtin, tapi jangan berpikir[
itu builtin pada aslinya Shell Bourne. Bagaimanapun, menghapus/bin/[
tentu saja merupakan ide yang buruk.test
dan[
yang hampir sama.[
membutuhkan penutupan]
;test
tidak mengizinkannya (atau lebih tepatnya tidak memperlakukan argumen]
secara khusus).[Selalu diberikan sebagai setara dengan tes, tetapi saya belum pernah melihat] yang disebutkan secara eksplisit, meskipun selalu ada. Saya baru saja menemukan ini di http://ss64.com/bash/test.html :
yang meyakinkan - akhirnya saya memiliki penyelesaian seperti yang mereka katakan.
sumber