командная строка: создание процесса

командная строка: создание процесса

У меня есть программа на Perl, которая принимает аргумент (намерение — сменить каталог «cd»), не порождая дочерний процесс.

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

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

. $FPATH/pcd.pl $*|read dir . 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[<>]);

Связанный контент