Я недавно просматривал /bin
папку моей Fedora и заметил двоичный файл с именем [
. Я пытался найти в Интернете дополнительную информацию об этом, но не смог найти ничего полезного. Прохождение этого, strace
кажется, не дает ничего полезного для более тщательного изучения.
Что это? Должен ли я быть встревожен? Может ли это быть результатом системного компромисса? Должен ли я запустить это? Это относится к какой-либо упаковке?
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
man [
чтобы увидеть, что это за[
команда!bash
, и решил, что это может быть что-то еще. Это не первое, что приходит вам в голову, когда вы видите двоичный файл с именем, которого вы никогда не видели в своей файловой системе - или, другими словами, вам нужно найти что-то более конкретное, чтобы прояснить сомнения в вашей голове. ,rpm -qif /bin/[
чтобы выяснить, откуда онОтветы:
[
Двоичные проживания под/bin
деревом во многих дистрибутивах GNU / Linux не то , чтобы быть встревожены прочь. По крайней мере, в моей Fedora 19 это часть пакета coreutils, как показано ниже:и является синонимом для
test
разрешения выражений, подобных[ expression ]
написанным в сценариях оболочки или даже интерактивного использования.источник
bash
иметь встроенную командуtest
и[
и не вызывает внешний двоичный файл.[
требуется этой спецификацией.[
команду. Non-Борна-как из них , как(t)csh
,rc
, какes
правило , нет (fish
исключение там).Команда
[
такая же, какtest
команда.Это позволяет вам писать довольно краткие условные выражения в скриптах оболочки. Со страницы руководства SunOS:
Если вы удалите его, сценарии сломаются!
источник
[
встроенной команды, сломаются. Большинство снарядов делают. Тем не менее, я, конечно, не рекомендовал бы удалять/bin/[
.[
встроенные функции, это скрипты, которые выполняются не-оболочечными приложениями[
, которые сломаются. Нравитсяfind ... -exec [ -f {} ] \;
илиenv LC_ALL=C [ -f bar ]
[
встроенной функции, но не думаю, что она[
была встроенной в оригинальной Оболочка Борна. В любом случае удаление/bin/[
, безусловно, будет плохой идеей.test
и[
это почти то же самое.[
требует закрытия]
;test
не позволяет этого (или, скорее, не обрабатывает аргумент]
специально).[Всегда дается как эквивалент теста, но я не видел], упомянутого явно, хотя оно всегда там. Я только что нашел это в http://ss64.com/bash/test.html :
что обнадеживает - наконец, у меня есть завершение, как они говорят.
источник