Recientemente estaba navegando por la /bin
carpeta de mi Fedora y noté un binario llamado [
. Intenté buscar en Internet más información sobre eso, pero no pude encontrar nada útil. Ejecutarlo strace
no parece producir nada útil para una inspección más cercana también.
¿Que es eso? ¿Debería estar alarmado? ¿Podría ser el resultado de un compromiso del sistema? ¿Debo ejecutarlo? ¿Pertenece a algún paquete?
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
man [
para ver cuál es el[
comando!bash
, y pensé que podría ser otra cosa. No es lo primero que se te viene a la mente cuando ves un binario con un nombre que nunca has visto antes en tu sistema de archivos, o para decirlo de otra manera, tienes que encontrar algo más concreto para despejar las dudas en tu cabeza .rpm -qif /bin/[
para averiguar de dónde viene ...Respuestas:
El
[
binario que reside debajo del/bin
árbol en muchas distribuciones de GNU / Linux no es algo para alarmarse. Al menos en mi Fedora 19 es parte del paquete coreutils, como se demuestra a continuación:y es un sinónimo para
test
permitir expresiones como[ expression ]
escribir en scripts de shell o incluso uso interactivo.fuente
bash
tienen un incorporadotest
y[
no invocan el binario externo.[
Esta especificación requiere un comando de prueba .[
comando incorporado . No Bourne-como aquellos como(t)csh
,rc
,es
por lo general no lo hacen (fish
es una excepción allí).El
[
comando es el mismo que eltest
comando.Le permite escribir declaraciones condicionales más bien concisas en scripts de shell. Desde la página del manual de SunOS:
Si lo elimina, ¡los scripts se romperán!
fuente
[
un comando incorporado se romperán. La mayoría de las conchas lo hacen. Aún así, ciertamente no recomendaría eliminar/bin/[
.[
incorporados, son scripts que ejecutan aplicaciones[
que no son shell que se romperán. Me gustafind ... -exec [ -f {} ] \;
oenv LC_ALL=C [ -f bar ]
[
una función incorporada, pero no creo que haya[
sido una función incorporada en el original Bourne shell. En cualquier caso, eliminar/bin/[
sería una mala idea.test
y[
son casi lo mismo.[
requiere un cierre]
;test
no lo permite (o más bien no trata un argumento de forma]
especial).El [siempre se da como un equivalente a la prueba, pero no había visto el] mencionado explícitamente, aunque siempre está ahí. Acabo de encontrar esto en http://ss64.com/bash/test.html :
lo cual es tranquilizador, por fin tengo finalización como dicen.
fuente