2016-03-31 4 views
1

Bei vielen xterm ist es nett, einen eindeutigen Namen an der Fensterumrandung zu haben, den ich im laufenden Betrieb ändern kann. Also schrieb ich diesen Perl-Code in der Datei header.pl:möglich für Perl, um Escape-Codes zu drucken und Echo nicht zu lassen -n ""

#!/usr/bin/perl 
my $saywhat = $ARGV[0]; 

my $mycmnd = <<"EOLzippo"; 
echo -n "\033]0;XROSS\007" 

EOLzippo 

$mycmnd =~ s!XROSS!$saywhat!g; 

print $mycmnd; 

Dann mit einem Alias:

alias header 'perl ~/perl/header.pl \!* ' 

ich den Text an der Spitze meiner xterms ändern kann.

Wenn der Alias ​​der Code aufgerufen wird, hinterlässt einen Echo-n auf meine Befehlszeile:

163 perl> header test 

echo -n "" 

Gibt es eine Möglichkeit, den Druck ausführen, ohne das echo -n „“?

Antwort

3

Es ist nicht notwendig, Echo zu drucken (haben Sie versucht, Shell und Echo?). print druckt bereits.

#!/usr/bin/perl 
use warnings; 
use strict; 

my $saywhat = shift; 
my $string = "\033]0;$saywhat\007"; 
print $string; 
+0

'" \ 033 "' ist '" \ e "' und '" \ 007 "' ist '" \ a "' – Borodin

+1

Er * ist nicht * Beschuss. Er druckt (auf sehr komplizierte Weise) 'echo -n '" '. Der Xterm interpretiert die Escape-Codes; der Rest sind nur druckbare Zeichen. – cjm

1

es alle in Perl-Do:

#!/usr/bin/perl 
my $saywhat = $ARGV[0]; 

my $mycmnd = "\033]0;${saywhat}\007" 

print $mycmnd; 

Randbemerkung: Während es eine Konvention ist manchmal ein .pl Suffix zu verwenden, ist es keineswegs zwingend. Wenn Sie header.pl in header umbenennen und in ~/bin [oder ~/perl in $PATH] einfügen, können Sie die alias entfernen. Stellen Sie sicher, dass Sie Ausführungsrechte für die Datei festlegen (zB 755)

Verwandte Themen