Принуждение GNU делает к командам выполнения в порядке

Один мне действительно нравится, должен исказить ls = "sl" (требует установленного sl, который может или не может быть проблемой).

Для не знающих, sl является программой, которая, будучи общей опечаткой ls, была создана для обучения Вас из ввода sl. Это отображает прокрутку choo choo поезд, из которого Вы не можете убежать с C-c или C-d (если -e передается).

Можно даже заставить его сделать разные вещи с некоторыми параметрами. На sl (6):

   OPTIONS

       -a     An accident seems to happen. You'll feel pity for people who cry for help.

       -l     shows little one.

       -F     It flies.

       -e     Allow interrupt by Ctrl+C.

Я не рекомендую использовать-e, если Вы собираетесь смешать со своими коллегами, но у остальных есть некоторый серьезный потенциал смеха.

6
21.06.2016, 15:22
2 ответа

На самом деле у Вас нет проблемы с, делают, но с Вашей командой:

tex dummy.tex &> /dev/null;

Выполнения 'tex' в фоновом режиме. Вы не должны удалять'>/dev/null', но '&' отправляет 'tex' в фон.

Попробуйте это, это должно быть хорошо для Вас:

tex dummy.tex > /dev/null;

или выполненный все в той же подоболочке, как это:

(tex dummy.tex > /dev/null;rm *.log)

или менее нормальный, это:

if test 1 = 1; then tex dummy.tex > /dev/null;rm *.log; fi

PD: и> расширение, обеспеченное некоторыми оболочками (включая удар) для перенаправления и stdout и stderr тому же месту назначения, но это не портативно, необходимо использовать'>/dev/null 2> &1' вместо этого. (Спасибо @Gilles)

Удачи

11
27.01.2020, 20:23
  • 1
    @Bruno: &> расширение, обеспеченное некоторыми оболочками (включая удар) для перенаправления и stdout и stderr тому же месту назначения, но это не портативно. Вероятно, что у автора Make-файла есть удар как его /bin/sh, но у Вас есть пепел или ksh, который не поддерживает этот синтаксис. –  Gilles 'SO- stop being evil' 17.03.2011, 21:50
  • 2
    Да, но затем, необходимо использовать'>/dev/null 2> &1' вместо этого –  D4RIO 17.03.2011, 22:00
  • 3
    @BrunoLeFloch: Проверьте если /bin/sh символьная ссылка. Отметьте это /bin/sh может не быть оболочка, которую Вы используете в интерактивном режиме. Вместо mycommand &>dest (csh/bash/zsh-specific), можно записать mycommand >dest 2>&1, то, которое является портативным к любой оболочке, которые делают, могло бы использовать. –  Gilles 'SO- stop being evil' 17.03.2011, 22:03
  • 4
    @BrunoLeFloch: $SHELL AFAIK является Вашей пользовательской оболочкой, как определено в/etc/passwd, но make-файл попытается использовать/bin/sh. –  D4RIO 17.03.2011, 22:10
  • 5
    @D4RIO: возможно, добавьте > /dev/null 2>&1 версия к Вашему ответу, чтобы заставить его завершиться? –  Bruno Le Floch 17.03.2011, 22:20

Er? make параллелизирует цели (с -j); это никогда не переупорядочивает команды в цели.

1
27.01.2020, 20:23
  • 1
    я согласился бы... Но это делает :-s. –  Bruno Le Floch 17.03.2011, 21:42

Теги

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