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