답변:
후행 데이터를 얻는 방법을 알아 냈습니다.
나는 그것이 무겁게 기반으로, 후행 데이터 파일을 생성 펄 스크립트를 생성 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=604617#10 :
#!/usr/bin/perl
use strict;
use warnings;
use IO::Uncompress::Gunzip qw(:all);
use IO::File;
unshift(@ARGV, '-') unless -t STDIN;
my $input_file_name = shift;
my $output_file_name = shift;
if (! defined $input_file_name) {
die <<END;
Usage:
$0 ( GZIP_FILE | - ) [OUTPUT_FILE]
... | $0 [OUTPUT_FILE]
Extracts the trailing data of a gzip archive.
Outputs to stdout if no OUTPUT_FILE is given.
- as input file file causes it to read from stdin.
Examples:
$0 archive.tgz trailing.bin
cat archive.tgz | $0
END
}
my $in = new IO::File "<$input_file_name" or die "Couldn't open gzip file.\n";
gunzip $in => "/dev/null",
TrailingData => my $trailing;
undef $in;
if (! defined $output_file_name) {
print $trailing;
} else {
open(my $fh, ">", $output_file_name) or die "Couldn't open output file.\n";
print $fh $trailing;
close $fh;
print "Output file written.\n";
}
while (<>)
의 루프 perl
(작업 똑같이뿐만 아니라 필터 (즉, 표준 입력, 표준 출력으로 쓰기 읽기) 것을 쓰기 스크립트에 쉽게 그것을 만들고 이름 파일이 .... stdin을하고 파일 @ARGV에 나열된 (들)들 읽 ). 물론 stdout은 항상 파일로 리디렉션 될 수 있습니다. 내 펄 스크립트의 대부분은 이것을 활용하기 위해 필터로 작성됩니다.
push @ARGV,'-' if (!@ARGV);
전에 my $input_file_name = shift;
여기에 필요한 모든 것을입니다. 즉 기본 인수 인 -
$ ARGV [0] == '-h'또는 '--help'인 경우 도움말 메시지가 인쇄 될 수 있습니다. while(<>)
루프의 경우에는 그렇게 할 필요조차 없지만를 위해 쓰는 것보다 더 큰 문제 일 것입니다 IO::Uncompress::Gunzip
.
-o
옵션 또는 무언가. 스크립트가 자동으로 두 개의 입력 중 첫 번째 인수에서 첫 번째 인수로 전환하고 출력되는 인수 만 위험하고 사고가 발생하기 쉬운 것처럼 보입니다 (마법을 시도).
less
또는hd
기타로 파이프 할 수 있습니다hd | less
.