关闭mac中的终端回声?

时间:2016-04-01 18:32:30

标签: macos terminal

我在Mac上编写了一个简单的perl脚本,它在单独的行中将一堆单词打印出来并打印出来:

#!/usr/bin/perl -w
use strict;
select STDERR; $| = 1;
select STDOUT; $| = 1; # auto flushing
my %count;
print "Please type in a series of words in seperate lines and ends with Ctrl+D.\n";
chomp(my @series = <STDIN>);
# print "\n";
foreach my $name (@series){`
    print "$name\n";    
}

这是输入:

a
a
b
(ctrl+D)

我注意到完成输入后按ctrl + D,我在终端看到了这个:

aD
a
b

我之所以认为是因为终端也在没有&#34; \ n&#34;当我的程序正在打印出输入时,它会在我看到的^上留下一个d(你可以通过取消注释打印&#34; \ n&#34;在第8行来检查这一点)所以我想我是什么&#39;问我应该怎么做才能阻止终端回应^ D?

1 个答案:

答案 0 :(得分:1)

一种简单的方法是使用stty暂时关闭该功能。在命令行上

stty -echoctl

关闭,

stty echoctl

开启。如果您对这些内容进行system调用,则会从您的脚本中执行调用。这是一个例子:

#!/usr/bin/env perl
use strict;
select STDERR; $| = 1;
select STDOUT; $| = 1; # auto flushing
system("stty -echoctl");
my %count;
print "Please type in a series of words in separate lines and ends with Ctrl+D.\n";
chomp(my @series = <STDIN> );
print "\n";
foreach my $name (@series){
print "$name\n";
}
system("stty echoctl");
1;