У меня есть Perl-программа, которая принимает аргумент (намерение изменить каталог "cd") без порождения дочернего процесса.

$ FPATH/pcd.pl позволяет пользователю выбирать из множества возможных кандидатов в каталоги и т.д.

Хитрость заключается в том, чтобы добраться до нужного каталога, не оставаясь в порожденном процессе. Ниже приведен вызов, который я не могу заставить работать (оболочка ksh):

, $ FPATH/pcd.pl $ * | читать каталог. CD $ DIR

Независимо от того, какой реальный каталог возвращается в «$ dir», «.cd $ dir» никогда не попадает в нужный каталог. Пожалуйста, порекомендуйте. Благодарю.

1 ответ1

0

Я не совсем понимаю вашу строку кода там; возможно это было искажено.

Мой подход был бы немного другим: во-первых, создайте псевдоним, который принимает выходные данные программы и создает для этого компакт-диск:

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[<>]);

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .