POSIX sh Перенаправление - PullRequest
       47

POSIX sh Перенаправление

0 голосов
/ 27 сентября 2011

Возможно, я упускаю что-то маленькое, но возможно ли достичь этого синтаксиса в соответствии с POSIX (тире):

$ ./myApp 2> stderr.txt 1> stdout.txt

Я знаю, что в тире нельзя использовать >&, но нужно использовать2>&1 но я не хочу этого делать.У меня есть куча данных, поступающих в stdout, и я не хочу анализировать их, чтобы получить мой stderr.Я чувствую, что упускаю что-то чрезвычайно простое, но я не могу указать на это ...

Прямо сейчас, когда я запускаю вышеуказанную команду, я получаю только несколько строк моего стандартного вывода (3), но это показываетв файле stderr, и stdout пуст.Я также пробовал различные способы группировки, но все же мне не повезло.Не уверен, что происходит ...

ОБНОВЛЕНИЕ

Это формат текущей команды, которую я выполняю, чтобы вы могли видетьполный эффект того, что я пытаюсь достичь:

$ LD_PRELOAD=/usr/lib/libtcmalloc.so /usr/bin/time -p myApp -c -f inputFile 2> stderr 1> stdout

Здесь я упомянул, что пробовал несколько вариантов группирования с ().Кроме того, исполняемый файл myApp не разветвляется.

Я думал, что эта команда будет работать, но я нашел иначе:

$ LD_PRELOAD=/usr/lib/libtcmalloc.so /usr/bin/time -p (myApp -c -f inputFile) 2> stderr 1> stdout

1 Ответ

0 голосов
/ 28 сентября 2011

Публикация с тех пор как я ответил в комментариях:

Синтаксис, который вы опубликовали, является правильным синтаксисом, но вы можете получать некоторые помехи от вывода команды time. Попробуйте

time -p sh -c 'LD_PRELOAD=/usr/lib/libtcmalloc.so command >stdout.txt 2>stderr.txt'
...