我正在尝试编写一个内部调用“ls”并将输出保存到文件的Perl脚本。在页面上显示屏幕上的文件,允许用户点击一个键进入下一页?内部调用Linux命令并将输出保存到文件的Perl脚本?
任何想法? 感谢
到目前为止,我有这样的:
#!/usr/bin/perl
$command = system("ls /bin/usr/account\ users/");
我正在尝试编写一个内部调用“ls”并将输出保存到文件的Perl脚本。在页面上显示屏幕上的文件,允许用户点击一个键进入下一页?内部调用Linux命令并将输出保存到文件的Perl脚本?
任何想法? 感谢
到目前为止,我有这样的:
#!/usr/bin/perl
$command = system("ls /bin/usr/account\ users/");
这听起来像你正在尝试重写ls | more
。你真的需要这样做吗?
下面的程序打开文件temp.txt
进行书写。然后它使用qx
(相当于反引号)从命令获取输出并将其写入文件。
然后重新打开同一个文件进行读取,每次发送20行文件到STDOUT
。
要允许来自键盘的字符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;
}
}
现在记住'less'就是'more' – pulven 2012-08-05 07:51:02
保存命令的输出$command
希望
my $command = `ps aux`;
或者,也许更好,
my @command = `ps aux`;
后者会将命令输出的每一行存储为t的单独元素他列出。之后,您可以随意使用$command
或@command
- 显示其内容,将其内容写入文件,无论您是否喜欢显示和写入。
要写入文件,
my $filename = "MY_FILENAME";
# ...
open FILE, '>>', $filename;
print FILE @command;
close FILE;
可以使用'>'
而不是'>>'
如果你喜欢覆盖该文件,而不是追加到它。您可以使用任何词语代替FILE
,尽管在任何情况下全部使用这样的词是常规的。
感谢您的帮助。尝试将命令ps aux的结果输出到文件时仍有问题。我试过$ command = system(“ps aux”),'>:crlf',$ file;打开FILE,'>>',$ file;关闭FILE; – 2012-08-04 13:52:11
你可以考虑使用system
用以下命令:
ps aux >/tmp/myfile
,或者,如果你想在Perl来处理它,像:
open (INSTREAM, "ps aux |");
,然后你可以阅读LILE任何其他“文件”:
while (<INSTREAM>) { ... }
谢谢。使用系统工程。 – 2012-08-04 13:49:06
不好结构的问题。 -1 – miksiii 2015-01-11 15:23:17