Je parcourais récemment le /bin
dossier de mon Fedora et ai remarqué un binaire nommé [
. J'ai essayé de chercher plus d'informations à ce sujet sur Internet, mais je n'ai rien trouvé d'utile. Son exécution strace
ne semble produire aucun élément utile pour une inspection plus minutieuse également.
Qu'est-ce que c'est? Devrais-je être alarmé? Serait-ce le résultat d'un compromis du système? Dois-je le lancer? Est-ce qu'il appartient à un paquet?
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
man [
pour voir quelle est la[
commande!bash
, et j'ai pensé que cela pourrait être autre chose. Ce n'est pas la première chose qui vous vient à l'esprit lorsque vous voyez un fichier binaire avec un nom que vous n'avez jamais vu auparavant dans votre système de fichiers. En d'autres termes, vous devez trouver quelque chose de plus concret pour dissiper les doutes qui se cachent dans votre tête. .rpm -qif /bin/[
pour savoir d'où ça vient ...Réponses:
Le
[
binaire résidant sous l’/bin
arborescence dans de nombreuses distributions GNU / Linux n’est pas une chose à alarmer. Au moins dans mon Fedora 19, il fait partie du paquet coreutils, comme illustré ci-dessous:et est un synonyme pour
test
permettre des expressions comme[ expression ]
être écrites dans des scripts shell ou même une utilisation interactive.la source
bash
un builtintest
et[
et ne pas invoquer le binaire externe.[
est requise par cette spécification.[
commande intégrée . Non-Bourne comme ceux comme(t)csh
,rc
, enes
général ne le font pas (fish
une exception là).La
[
commande est la même que latest
commande.Il vous permet d’écrire des instructions conditionnelles plutôt succinctes dans des scripts shell. À partir de la page de manuel SunOS:
Si vous le supprimez, les scripts vont casser!
la source
[
de commande intégrée vont se rompre. La plupart des coquillages font. Néanmoins, je ne recommanderais certainement pas de retirer/bin/[
.[
intégrés, ce sont ses scripts qui ont des applications non-shell qui s'exécutent et[
qui vont casser. Commefind ... -exec [ -f {} ] \;
ouenv LC_ALL=C [ -f bar ]
[
intégrée, mais ne pense pas qu'elle[
était intégrée à l'original. Bourne shell. Dans tous les cas, supprimer/bin/[
serait certainement une mauvaise idée.test
et[
sont presque les mêmes.[
nécessite une fermeture]
;test
ne le permet pas (ou plutôt ne traite pas un argument de]
spécialement).Le [est toujours donné comme équivalent à tester, mais je n'avais pas vu le] mentionné explicitement, même s'il est toujours là. Je viens de trouver ceci dans http://ss64.com/bash/test.html :
ce qui est rassurant - j'ai enfin terminé comme on dit.
la source