Eu estava recentemente navegando na /bin
pasta do Fedora e notei um binário chamado [
. Tentei pesquisar na internet para obter mais informações sobre isso, mas não consegui encontrar nada útil. Executá-lo strace
também não parece produzir algo útil para uma inspeção mais detalhada.
O que é isso? Eu deveria estar alarmado? Poderia ser o resultado de um comprometimento do sistema? Devo executá-lo? Pertence a algum pacote?
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
man [
para ver qual é o[
comando!bash
, e achei que poderia ser outra coisa. Não é a primeira coisa que vem à sua mente quando você vê um binário com um nome que você nunca viu antes em seu sistema de arquivos - ou, em outras palavras, precisa encontrar algo mais concreto para esclarecer as dúvidas em sua cabeça .rpm -qif /bin/[
para descobrir de onde vem ...Respostas:
O
[
binário localizado sob a/bin
árvore em muitas distribuições GNU / Linux não é algo para se alarmar. Pelo menos no meu Fedora 19, ele faz parte do pacote coreutils, como demonstrado abaixo:e é um sinônimo para
test
permitir que expressões como[ expression ]
sejam escritas em scripts de shell ou mesmo uso interativo.fonte
bash
ter um builtintest
e[
e não invocar o binário externo.[
é requerido por esta especificação.[
comando embutido . Non-Bourne-like queridos como(t)csh
,rc
,es
geralmente não (fish
é uma exceção lá).O
[
comando é o mesmo que otest
comando.Ele permite que você escreva instruções condicionais bastante concisas em scripts de shell. Na página de manual do SunOS:
Se você removê-lo, os scripts serão quebrados!
fonte
[
como comando interno serão interrompidos. A maioria das conchas faz. Ainda assim, eu certamente não recomendaria a remoção/bin/[
.[
criados, são os scripts que executam aplicativos não-shell[
que quebram. Comofind ... -exec [ -f {} ] \;
ouenv LC_ALL=C [ -f bar ]
[
um builtin, mas não acho que tenha[
sido um builtin no original Casca de Bourne. De qualquer forma, remover/bin/[
seria certamente uma má ideia.test
e[
são quase os mesmos.[
requer um fechamento]
;test
não permite (ou melhor, não trata um argumento de]
especial).O [é sempre dado como equivalente ao teste, mas eu não tinha visto o] mencionado explicitamente, embora esteja sempre lá. Acabei de encontrar isso em http://ss64.com/bash/test.html :
o que é reconfortante - finalmente tenho a conclusão como eles dizem.
fonte