
하위 프로세스를 생성하지 않고 인수("cd" 디렉토리를 변경하려는 의도)를 허용하는 Perl 프로그램이 있습니다.
$FPATH/pcd.pl을 사용하면 사용자가 가능한 여러 디렉터리 후보 중에서 선택할 수 있습니다.
비결은 생성된 프로세스에 남지 않고 원하는 디렉터리에 도달하는 것입니다. 다음은 작업할 수 없는 호출입니다(ksh 쉘).
. $FPATH/pcd.pl $*|디렉터리 읽기 . CD $dir
어떤 실제 디렉토리가 "$dir"로 반환되더라도 ".cd $dir"은 원하는 디렉토리에 도달하지 않습니다. 조언해주세요. 감사해요.
답변1
나는 거기에 있는 코드 줄을 잘 이해하지 못합니다. 아마도 그것은 왜곡되었을 것입니다.
내 접근 방식은 약간 다를 것입니다. 먼저 프로그램의 출력을 가져와서 CD를 만드는 별칭을 만듭니다.
alias mycd='cd $(select-dir)'
그런 다음 프로그램이 메뉴를 stderr로 인쇄하고 선택 항목을 stdout으로 인쇄하도록 합니다. 예를 들면 다음과 같습니다.
#!/usr/bin/perl
use 5.010;
use strict;
use warnings;
my @entries = ('..', grep {-d} glob("*"));
for my $i (0..$#entries) {
printf STDERR (" %2d: $entries[$i]/\n", $i);
}
$| = 1;
print STDERR ("cd to: ");
say($entries[<>]);