linha de comando: gerando um processo

0

Eu tenho um programa perl que aceita um argumento (a intenção é alterar o diretório "cd") sem gerar um processo filho.

$ FPATH / pcd.pl permite ao usuário escolher entre um número de possíveis candidatos a diretórios, etc.

O truque é chegar ao diretório desejado sem ser deixado em um processo gerado. O seguinte é a invocação que eu não consigo trabalhar (ksh shell):

$ FPATH / pcd.pl $ * | ler dir . cd $ dir

Não importa qual diretório real é retornado em "$ dir", o ". cd $ dir" nunca chega ao diretório desejado. Por favor informar. Obrigado.

    
por Fred Smith 18.07.2014 / 20:09

1 resposta

0

Eu não entendo muito bem sua linha de código; talvez tenha sido confundido.

Minha abordagem seria um pouco diferente: primeiro, crie um alias que receba a saída de um programa e crie um cd para ele:

alias mycd='cd $(select-dir)'

Em seguida, faça o programa imprimir o menu para stderr e a opção stdout, por exemplo, assim:

#!/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[<>]);
    
por 19.07.2014 / 12:51