Befehlszeile: Erstellen eines Prozesses

Befehlszeile: Erstellen eines Prozesses

Ich habe ein Perl-Programm, das ein Argument akzeptiert (Absicht ist, das Verzeichnis „cd“ zu ändern), ohne einen untergeordneten Prozess zu erzeugen.

$FPATH/pcd.pl ermöglicht dem Benutzer die Auswahl aus einer Reihe möglicher Verzeichniskandidaten usw.

Der Trick besteht darin, in das gewünschte Verzeichnis zu gelangen, ohne in einem gestarteten Prozess zurückgelassen zu werden. Folgendes ist der Aufruf, den ich nicht zum Laufen bekomme (ksh-Shell):

. $FPATH/pcd.pl $*|Verzeichnis lesen . cd $Verzeichnis

Egal welches reale Verzeichnis in "$dir" zurückgegeben wird, mit ".cd $dir" gelangt man nie zum gewünschten Verzeichnis. Bitte um Rat. Danke.

Antwort1

Ich verstehe deine Codezeile da nicht ganz, vielleicht ist sie entstellt.

Mein Ansatz wäre ein wenig anders: Erstellen Sie zunächst einen Alias, der die Ausgabe eines Programms übernimmt und eine CD dorthin erstellt:

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

Lassen Sie das Programm dann das Menü auf stderr und die Auswahl auf stdout ausgeben, beispielsweise folgendermaßen:

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

verwandte Informationen