удар: отключите новый процесс сообщение PID

У меня есть умный сценарий жемчуга, который делает задание:

#!/usr/bin/perl -w

use warnings;
use strict;
use Date::Parse;

my $out = "";
while (<>)
{
    chomp (my $line = $_);
    $out .= $1 if ($line =~ m/^commit ([a-z0-9]+)$/);
    $out .= "\t" . str2time($1) if ($line =~ m/^Date: (.+)$/);
    if ($line =~ m/ (\d+) files changed, (\d+) insertions\(\+\), (\d+) deletions\(-\)/)
    {
        print $out . "\t" . $1 . "\t" . $2 . "\t" . $3 . "\n";
        $out = "";
    }
}

print $out."\n";

Просто измените полномочия сделать это исполняемым файлом и передать вывод по каналу git log --shortstat к этому сценарию (здесь сценарий хранится /tmp/gitstats.pl):

user@srv % git log --shortstat | /tmp/gitstats.pl
d56d496ac70f6c441d624413f54aeba1dfb805d7        1303393788      104     51420   12081
98c4b66af7a0c7e6b8155bb2a538f7ca77c1243a        1303285305      234     34756   35022
6e33280279d5bd83ea8d0fde95b08394a297b159        1303251405      6       341     0
[...]

Первый столбец является идентификатором фиксации, вторая запись является меткой времени Unix, followd количеством измененных файлов, вставки и удаления.

Это также отслеживает Ваши двоичные файлы, но это - конечно, проблема Вашего дизайна repo...

3
06.06.2012, 01:08
2 ответа

Первое число является индексом задания; связанные с заданием команды (jobs, fg, и т.д.), используют их. Так, например, если Вы получаете вывод [2] 2847, Вы могли работать fg 2 к переднему плану то задание.

Насколько я мог сказать от просматривания источника, нет способа отключить сообщение. Одна проверка, которую это действительно делает, должна гарантировать, что оболочка является интерактивной, поэтому при выполнении команды в неинтерактивной оболочке, Вы не получите тот вывод. Например, Вы могли выполнить его в подоболочке:

$ (your_command &)

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

Если Вы готовы исправить bash, можно просто избавиться от который особый вывод. В ударе 4.2 это находится в jobs.c на строке 1428:

fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid);

Это называют при других обстоятельствах; если Вы просто хотите, который уводят для этого конкретного случая, можно прокомментировать execute_cmd.c, строка 762:

DESCRIBE_PID (last_made_pid);
5
27.01.2020, 21:17
  • 1
    Гм, это было бы одним путем: alias skype="(skype &)" - это работает, и Вы не должны вводить дополнительный материал - но 1) Вы хотели бы общее решение, поскольку Вы никогда не знаете, какие инструменты Вы будете использовать и 2) Это повредит те инструменты для любого другого использования, скажет, что требуется добавить, что флаг опции, таким образом исправляя намного лучше. Я доберусь до него, Средства управления :) –  Emanuel Berg 06.06.2012, 01:45

Первое число является индексом задания; связанные с заданием команды (jobs, fg, и т.д.), используют их. Так, например, если Вы получаете вывод [2] 2847, Вы могли работать fg 2 к переднему плану то задание.

Насколько я мог сказать от просматривания источника, нет способа отключить сообщение. Одна проверка, которую это действительно делает, должна гарантировать, что оболочка является интерактивной, поэтому при выполнении команды в неинтерактивной оболочке, Вы не получите тот вывод. Например, Вы могли выполнить его в подоболочке:

$ (your_command &)

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

Если Вы готовы исправить bash, можно просто избавиться от который особый вывод. В ударе 4.2 это находится в jobs.c на строке 1428:

fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid);

Это называют при других обстоятельствах; если Вы просто хотите, который уводят для этого конкретного случая, можно прокомментировать execute_cmd.c, строка 762:

DESCRIBE_PID (last_made_pid);
5
27.01.2020, 21:17

Теги

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