Что' [' программа, которая находится в / мусорном ведре моей системы?

Просто взгляните на сценарии, существующие в /etc/init.d/. Особенно отметьте README зарегистрируйте там. Это также подсказывает этому разделу Debian Policy Manual по init сценариям.

На самом деле то, что Вы ищете, могло бы быть /etc/init.d/skeleton:

# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.

32
10.02.2014, 02:01
3 ответа

[ двоичный файл, находящийся под /bin дерево во многих GNU/дистрибутивы Linux не является чем-то, чтобы быть предупрежденным прочь. По крайней мере, в моем Fedora 19 это - часть coreutils пакета, как продемонстрировано ниже:

$ rpm -qf /bin/[
coreutils-8.21-13.fc19.x86_64

и синоним для test допускать выражения как [ expression ] быть записанным в сценариях оболочки или даже интерактивном использовании.

37
27.01.2020, 19:37
  • 1
    Обратите внимание что оболочки как bash имейте встроенное test и [ и не вызывайте внешний двоичный файл. –  jordanm 10.02.2014, 02:31
  • 2
    @jordanm, сегодня большинство оболочек имеет их (и много других простых, общих операций) как builtins. Но это было не всегда так (или находится так во всех оболочках). Это могло бы даже получить мандат POSIX. –  vonbrand 10.02.2014, 06:08
  • 3
    @vonbrand pubs.opengroup.org/onlinepubs/009695399/utilities/test.html Вы правы. Тестовая команда [ требуется этой спецификацией. –  yegle 10.02.2014, 09:08
  • 4
    @vonbrand, только подобные Границе оболочки обычно имеют встроенное [ команда. Неподобные границе как (t)csh, rc, es обычно не делайте (fish исключение там). –  Stéphane Chazelas 04.11.2014, 17:29

[Всегда дается как эквивалент тесту, но я had'nt, замеченный] упомянутый явно, хотя это всегда там. Я сейчас нашел это в http://ss64.com/bash/test.html:

When the [ form is used, the last argument to the command must be a ]

который заверяет - наконец, что у меня есть завершение, как они говорят.

2
27.01.2020, 19:37

[ команда совпадает с test команда.

Это позволяет Вам писать довольно краткие условные операторы в сценариях оболочки. Из страницы руководства SunOS:

   if [ "$1" = "pear" ] || [ "$1" = "grape" ] || [ "$1" = "apple" ]
   then
       command
   fi

При удалении его сценарии повредятся!

5
27.01.2020, 19:37
  • 1
    , записанные для оболочек, которые не имеют [ поскольку встроенная команда повредится. Большинство оболочек делает. Однако, я, конечно, не рекомендовал бы удалить /bin/[. –  Keith Thompson 14.02.2014, 01:28
  • 2
    @KeithThompson, все оболочки имеют [ встроенный, это - сценарии, которые имеют приложения необолочки, выполняются [ это повредится. Как find ... -exec [ -f {} ] \; или env LC_ALL=C [ -f bar ] –  Stéphane Chazelas 26.02.2014, 00:05
  • 3
    @StephaneChazelas: Все оболочки? (csh и tcsh не делают, но возможно это не относится к делу.) Я не думаю, что видел, что sh-derived окружает, который не имеет [ как встроенное, но не думают [ было встроенное в исходной Оболочке Bourne. В любом случае, удаление /bin/[ конечно, была бы плохая идея. –  Keith Thompson 26.02.2014, 00:17
  • 4
    Незначительный каламбур: test и [ почти то же. [ требует закрытия ]; test не позволяет его (или скорее не рассматривает аргумент ] особенно). –  Keith Thompson 26.02.2014, 00:22

Теги

Похожие вопросы