在特定终端中通过Perl运行shell命令

时间:2013-09-23 22:45:20

标签: linux perl shell command-line

首先,我对Perl很新,所以我可能会遗漏一些明显的东西。这不是典型的“我想通过Perl运行shell命令”的问题。

我不想捕获所有的shell输出。我有一个智能写入终端的程序/脚本。我没有写它并且不知道它是如何工作的,但它似乎在打印一些初始化之后将视图移动到适当的位置,然后擦除先前的终端输出并将其写入(更新)直到它最终完成。我想从我的perl脚本中调用它,而不是将所有内容打印到文件中以获取它,因为打印到文件不能保持打印输出的智能。

我需要做的就是:

  1. 在我的perl脚本中打开一个xterm
  2. 终端
  3. 中进行系统调用
  4. 让终端保持不动,直到我手动退出
  5. 我可以在perl中执行此操作吗?

    感谢。

2 个答案:

答案 0 :(得分:2)

尝试通过示例执行此操作:

#!/usr/bin/env perl

use strict; use warnings;
use autodie;

open my $term, '| xterm -hold -e $(</dev/stdin)';
foreach my $dir (qw|/etc /usr /home|) {
    print $term "ls $dir\n"; # do anything else you'd like than "ls $dir" here
}
close $term;

答案 1 :(得分:2)

system 'xterm', '-hold', '-e', $program;

其中$program是您要运行的终端感知程序。

-hold 会导致xterm在程序退出后保持打开状态,等待您手动关闭它。

-e 指定要运行的程序或命令行。它及其参数必须出现在xterm命令行的最后。