命令行:生成一个进程

命令行:生成一个进程

我有一个 perl 程序,它接受一个参数(意图是改变目录“cd”)而不产生子进程。

$FPATH/pcd.pl 允许用户在多个可能的目录候选中进行选择,等等。

诀窍是到达所需目录而不留在生成的进程中。以下是我无法运行的调用(ksh shell):

.$FPATH/pcd.pl $*|读取目录 .cd $dir

无论将哪个实际目录返回到“$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[<>]);

相关内容