Это довольно просто использовать perl
, поскольку он имеет в ядре парсер Text :: ParseWords
:
#!/usr/bin/env perl
use strict;
use warnings;
use Text::ParseWords;
use Data::Dumper;
my $q = '"Something, variable", another part, third one';
my @words = parse_line ( ',', 0, $q );
#dump words:
print Dumper \@words;
#just output first one:
print $words[0];
Или сделать его однострочным, чтобы вы могли использовать его встроенным в оболочку:
echo $q | perl -MText::ParseWords -e '@w=parse_line(',',0,<>);print $w[0]'
Это будет читать его из STDIN и печатать проанализированное первое «слово» в STDOUT.
(Или вы можете ввести его через $ ENV {q}
или аналогичный).
Что-то вроде этого (почти помогает, потому что <cr>
все еще нужно нажать для выполнения):
map H feedkeys ":exec sh -c \"cat ~/.local/share/zathura/history | grep -Po '\[\K[^\]]*' | dmenu | xargs zathura\""
#!/bin/sh
options='-columns 6 -width 100 -lines 15 -bw 2 -yoffset -2 -location 1'
selected=$(\
cat ~/.local/share/zathura/history | grep -Po '\[\K[^\]]*' \
| rofi -dmenu -i -markup-rows \
${options}
)
# exit if nothing is selected
[[ -z $selected ]] && exit
zathura "$selected"
exit 0
Для меня последние файлы работают со встроенной командой "открыть".
Попробуйте ввести :open /
и нажмите Tab. Он должен отображать «Последние файлы»