pick - Select one entry from stdin and/or argv
Pick will take stdin and all command line arguments and display a ksh-like selection menu will all input lines/arguments.
This commit is contained in:
parent
34cfc3cf12
commit
3e32f1b04e
35
pick
Executable file
35
pick
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use Scalar::Util qw{looks_like_number};
|
||||||
|
|
||||||
|
my @choices;
|
||||||
|
|
||||||
|
for (@ARGV) {
|
||||||
|
if (/^--$/) {
|
||||||
|
push(@choices, <STDIN>);
|
||||||
|
} elsif (/^@(.+)$/) {
|
||||||
|
open(my $fh, '<', $1);
|
||||||
|
push(@choices, <$fh>);
|
||||||
|
close($fh);
|
||||||
|
} else {
|
||||||
|
push(@choices, "$_\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open(my $tty, '<', '/dev/tty');
|
||||||
|
|
||||||
|
my $sel;
|
||||||
|
until (looks_like_number($sel) && $sel > 0 && $sel <= @choices) {
|
||||||
|
while (my ($i, $c) = each @choices) {
|
||||||
|
print $i+1 . ') ' . $choices[$i];
|
||||||
|
}
|
||||||
|
print $ENV{'PS3'} || '#? ';
|
||||||
|
exit(1) unless defined($sel = <$tty>);
|
||||||
|
}
|
||||||
|
|
||||||
|
close($tty);
|
||||||
|
|
||||||
|
print $choices[$sel - 1];
|
25
pick.1
Normal file
25
pick.1
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
.Dd Sep 13, 2023
|
||||||
|
.Dt TS 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm pick
|
||||||
|
.Nd Choose interactively from the set of arguments and input lines
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm
|
||||||
|
.Ar arg ...
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Nm
|
||||||
|
will display a Korn shell style selection menu with stdin contents and
|
||||||
|
arguments as options.
|
||||||
|
.Pp
|
||||||
|
When a selection is made, the command will print its value to stdout.
|
||||||
|
If the selection is aborted, nothing will be printed.
|
||||||
|
.Sh ENVIRONMENT
|
||||||
|
.Bl -tag -width PS3
|
||||||
|
.It Ev PS3
|
||||||
|
Prompt string displayed to the user (default: #?).
|
||||||
|
.El
|
||||||
|
.Sh EXIT STATUS
|
||||||
|
.Ex -std
|
||||||
|
.Sh AUTHORS
|
||||||
|
.An Adolfo Perez Alvarez Aq Mt adolfopa@sdf.org
|
Loading…
Reference in New Issue
Block a user