内部调用Linux命令并将输出保存到文件的Perl脚本?

内部调用Linux命令并将输出保存到文件的Perl脚本?,linux,perl,Linux,Perl,我试图编写一个Perl脚本,在内部调用ls并将输出保存到文件中。以页面形式在屏幕上显示文件,允许用户按键进入下一页 有什么想法吗? 谢谢 到目前为止,我有: #!/usr/bin/perl $command = system("ls /bin/usr/account\ users/"); 要将命令的输出保存为$command,请执行以下操作: 或者,也许更好 my @command = `ps aux`; 后者将命令输出的每一行存储为列表中的一个单独元素。之后,您可以根据需要使用$comma

我试图编写一个Perl脚本,在内部调用ls并将输出保存到文件中。以页面形式在屏幕上显示文件,允许用户按键进入下一页

有什么想法吗? 谢谢

到目前为止,我有:

#!/usr/bin/perl
$command = system("ls /bin/usr/account\ users/");

要将命令的输出保存为$command,请执行以下操作:

或者,也许更好

my @command = `ps aux`;
后者将命令输出的每一行存储为列表中的一个单独元素。之后,您可以根据需要使用$command或@command—显示其内容、将其内容写入文件、显示和写入,无论您喜欢什么

要写入文件

my $filename = "MY_FILENAME";
# ...
open FILE, '>>', $filename;
print FILE @command;
close FILE;
如果您希望覆盖文件而不是附加到文件,则可以使用'>'而不是'>>'。您可以使用任何单词来代替文件,但在任何情况下,将此类单词全部大写都是常规做法。

您可以通过以下命令来研究如何使用系统:

ps aux >/tmp/myfile
或者,如果您想在Perl中处理它,可以执行以下操作:

open (INSTREAM, "ps aux |");
然后,您可以在任何其他文件中读取它:

while (<INSTREAM>) { ... }

听起来你在试图重写ls | more。你真的需要这样做吗

下面的程序打开文件temp.txt进行写入。然后,它使用相当于backticks的sqx从命令获取输出并将其写入文件

然后重新打开同一个文件进行读取,每次将20行发送到标准输出

要允许从键盘输入字符IO,读取模式设置为3,并调用ReadKey获取下一个按键。这些调用要求在程序顶部的use语句中指定Term::ReadKey模块。它是一个核心模块,因此不需要安装

use strict;
use warnings;

use Term::ReadKey;

open my $fh, '>', 'temp.txt' or die $!;
print $fh qx(ls /bin/usr/account/users/);

open $fh, '<', 'temp.txt' or die $!;

ReadMode(3);

my $n = 20;
while (<$fh>) {

  print;

  if (--$n == 0) {
    print "-- More  --";
    ReadKey(0);
    $n += 20;
  }
}

谢谢你的帮助。尝试将命令ps aux的结果输出到文件时仍然存在问题。我试过$command=systemps aux,'>:crlf',$file;打开文件“>>”,$FILE;关闭文件;记住,现在越少越好,这是一个结构不好的问题-1.
use strict;
use warnings;

use Term::ReadKey;

open my $fh, '>', 'temp.txt' or die $!;
print $fh qx(ls /bin/usr/account/users/);

open $fh, '<', 'temp.txt' or die $!;

ReadMode(3);

my $n = 20;
while (<$fh>) {

  print;

  if (--$n == 0) {
    print "-- More  --";
    ReadKey(0);
    $n += 20;
  }
}