línea de comando: generando un proceso

línea de comando: generando un proceso

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

información relacionada