
Tengo un programa Perl que acepta un argumento (la intención es cambiar el directorio "cd") sin generar un proceso secundario.
$FPATH/pcd.pl permite al usuario elegir entre varios posibles candidatos de directorio, etc.
El truco consiste en llegar al directorio deseado sin quedarse en un proceso generado. La siguiente es la invocación que no puedo hacer funcionar (ksh shell):
. $FPATH/pcd.pl $*|leer directorio. cd $directorio
No importa qué directorio real se devuelva a "$dir", el ".cd $dir" nunca llega al directorio deseado. Por favor avise. Gracias.
Respuesta1
No entiendo bien tu línea de código allí; tal vez haya sido confuso.
Mi enfoque sería un poco diferente: primero, crear un alias que tome la salida de un programa y cree un CD para eso:
alias mycd='cd $(select-dir)'
Luego haga que el programa imprima el menú en stderr y la opción en stdout, por ejemplo así:
#!/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[<>]);