gugus hat geschrieben: 14.12.2020 10:20:07
Woher der Doppelpunkt und die 12 davor kommen kann ich nicht sagen, es tauchte auf nachdem ich bei inxi den Parameter verändert habe. Vorher (vor dem -S) hatte ich einfach nur den inxi Aufruf drin.
Das Seltsame war dass sich inxi teilweise unterschiedlich verhalten hat, eben mal mit oder ohne 12.
Ich vermute, dass wir an dieser Stelle weiter kommen:
https://sources.debian.org/data/main/i/ ... 2-1-1/inxi
Code: Alles auswählen
103 # these will assign a separator to non irc states. Important! Using ':' can
104 # trigger stupid emoticon. Note: SEP1/SEP2 from short form not used anymore.
105 # behaviors in output on IRC, so do not use those.
106 my %sep = (
107 's1-irc' => ':',
108 's1-console' => ':',
109 's2-irc' => '',
110 's2-console' => ':',
111 );
Code: Alles auswählen
476 sub set_sep {
477 if ( $b_irc ){
478 # too hard to read if no colors, so force that for users on irc
479 if ($colors{'scheme'} == 0 ){
480 $sep{'s1'} = $sep{'s1-console'};
481 $sep{'s2'} = $sep{'s2-console'};
482 }
483 else {
484 $sep{'s1'} = $sep{'s1-irc'};
485 $sep{'s2'} = $sep{'s2-irc'};
486 }
487 }
488 else {
489 $sep{'s1'} = $sep{'s1-console'};
490 $sep{'s2'} = $sep{'s2-console'};
491 }
492 }
Es gibt den Unterschied, ob die Shell eine Console/tty hat oder nicht. Wenn nicht (also in cron), dann denkt inxi wohl, es sei im IRC-Modus, und laut Kommentar in Zeile 478 werden dann Farben erzwungen (wenngleich ich das mit dem folgenden Code nicht in Uebereinstimmung bringen konnte -- entweder ich habe einfach keine Ahnung von Perl, oder der Code ist nicht der lesbarste).
Wenn man Farben hat, muss man Key und Value nicht mehr mit einem Doppelpunkt abgrenzen, darum faellt der dann wohl weg. Der ANSI-Farbescape erzeugt dann wohl die 12.
Code: Alles auswählen
5681 sub print_data {
...
5702 foreach my $key1 (sort { substr($a,0,3) <=> substr($b,0,3) } keys %data) {
...
5706 $start = sprintf("$colors{'c1'}%-${indent}s$colors{'cn'}","$key$sep{'s1'}");
(Den folgenden Code, der 10(!) Ebenen tief geschachtelt war, hab ich mir dann erspart ... da beginnt die Zeile erst am rechten Ende meines Terminals.
)
Dann noch das:
Code: Alles auswählen
657 sub set_color_scheme {
...
661 my $index = ( $b_irc ) ? 1 : 0; # defaults to non irc
...
675 'BLUE' => [ "\e[1;34m", "\x0312" ],
...
685 my @scheme = get_color_scheme($colors{'scheme'});
686 $colors{'c1'} = $color_palette{$scheme[0]}[$index];
687 $colors{'c2'} = $color_palette{$scheme[1]}[$index];
688 $colors{'cn'} = $color_palette{$scheme[2]}[$index];
Sieht so aus, wie wenn der erste Wert ein ANSI-Escape fuer das Terminal ist und der zweite fuer IRC (Zeile 661). Wenn inxi keine Konsole hat (in cron), dann nimmt es wohl den zweiten Wert, von dem dann das `\x03' verschwindet und die `12' stehen bleibt ... mal wild spekuliert.
Weiss jemand wie das mit Farben in IRC geht? Nutzt man da `\x03'-Escapes?
So, das soll's an der Stelle mal von mir gewesen sein. Genug Perl-Code angeschaut.