2012-08-04 6 views
-6

"ls"를 내부적으로 호출하는 Perl 스크립트를 작성하고 출력을 파일에 저장하려고합니다. 화면에 파일을 페이지 단위로 표시하여 사용자가 다음 페이지로 이동하기 위해 키를 누를 수있게합니까?내부적으로 Linux 명령을 호출하고 출력을 파일에 저장하는 Perl 스크립트?

아이디어가 있으십니까? $command 어쩌면, 더 나은

my $command = `ps aux`; 

를 원하거나

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

잘 구조화 된 질문. -1 – miksiii

답변

2

다시 쓰려고하는 것 같습니다. ls | more. 이 작업을 정말로 수행해야합니까?

아래의 프로그램은 temp.txt 파일을 작성합니다. 그런 다음 qx (backticks에 해당)을 사용하여 명령의 출력을 가져 와서 파일에 기록합니다.

동일한 파일을 읽고 다시 열어서 한 번에 20 줄을 STDOUT (으)로 보냅니다.

키보드에서 문자 IO를 허용하려면 읽기 모드가 3으로 설정되고 ReadKey이 호출되어 다음 키 누르기를 가져옵니다. 이 호출을 사용하려면 Term::ReadKey 모듈을 프로그램 상단의 use 문에 지정해야합니다. 그것은 핵심 모듈이므로 설치가 필요하지 않습니다.

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; 
    } 
} 
+0

요즘에는'less'가'more'라고 기억하십시오. – pulven

3

,

my @command = `ps aux`; 

의 후반을 명령의 출력을 저장할 : 감사

는 지금까지이있다 명령의 출력의 각 줄을 t의 개별 요소로 저장합니다. 그는 목록에 올라있다. 그 다음에는 $command 또는 @command으로 할 수 있습니다. 내용을 표시하고, 내용을 파일에 쓰며, 원하는대로 표시하고 쓸 수 있습니다. 파일을 덮어 쓰기보다는에 추가하는 것을 선호하는 경우가 '>' 대신 '>>'을 사용할 수 있습니다

my $filename = "MY_FILENAME"; 
# ... 
open FILE, '>>', $filename; 
print FILE @command; 
close FILE; 

은 파일에 기록합니다. FILE 대신에 모든 단어를 사용할 수 있지만 모든 단어를 대문자로 사용하는 것이 일반적입니다.

+0

도움 주셔서 감사합니다. ps aux 명령의 결과를 파일로 출력하는 데 여전히 문제가 있습니다. 나는 $ command = system ("ps aux"), '> : crlf', $ file;을 시도했다. 열린 파일, '' ', $ 파일; 파일 닫기; –

0

당신은 같은 명령을 system을 사용하여 조사 할 수 있습니다 : 당신이 펄에서 뭔가를 처리 할 경우

ps aux >/tmp/myfile 

또는 :

open (INSTREAM, "ps aux |"); 

을하고 다음을 lile 읽을 수 있습니다 다른 "파일":

while (<INSTREAM>) { ... } 
+0

감사합니다. 시스템 작동 사용. –

관련 문제