命令列:生成進程

命令列:生成進程

我有一個 perl 程序,它接受一個參數(目的是更改目錄“cd”)而不產生子進程。

$FPATH/pcd.pl 允許使用者在許多可能的候選目錄等中進行選擇。

訣竅是到達所需的目錄而不留在生成的進程中。以下是我無法開始工作的呼叫(ksh shell):

。 $FPATH/pcd.pl $*|讀取目錄。 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[<>]);

相關內容