コマンドライン: プロセスの生成

コマンドライン: プロセスの生成

子プロセスを生成せずに引数(ディレクトリ「cd」を変更することを意図)を受け入れる Perl プログラムがあります。

$FPATH/pcd.pl を使用すると、ユーザーはいくつかのディレクトリ候補などから選択できます。

秘訣は、生成されたプロセスに残されることなく、目的のディレクトリに到達することです。以下は、動作しない呼び出しです (ksh シェル)。

. $FPATH/pcd.pl $*|ディレクトリを読み込む . $dirをcdする

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

関連情報