Код: Выделить всё
apt-file -l search filename | select --list | xargs apt-cache showСам искал неоднократно, но может я как-то не так ищу… А то уже даже возникают мысли самому начать что-то такое писать, но велосипедов изобретать не хочется.
Модераторы: /dev/random, Модераторы разделов
Код: Выделить всё
apt-file -l search filename | select --list | xargs apt-cache showShell
ls | sed 's/$/\n.\non/' | xargs dialog --stdout --separate-output --checklist title 0 0 0 > /tmp/list/dev/random писал(а): ↑17.12.2010 23:40Shell
ls | sed 's/$/\n.\non/' | xargs dialog --stdout --separate-output --checklist title 0 0 0 > /tmp/list
zyx@zyx-desktop
dialog --stdout --separate-output --checklist title 0 0 0 *(oNe:'reply=( $REPLY . on )':)
ZyX писал(а): ↑18.12.2010 00:19Как всегда, не поддерживает пробелы в именах файлов (не говоря уж о новых строках, для которых пришлось бы удалять --separate-output). Решение на zsh, не имеющее таких проблем:
zyx@zyx-desktop
dialog --stdout --separate-output --checklist title 0 0 0 *(oNe:'reply=( $REPLY . on )':)
Делает то же самое, но не имеет проблем с пробелами, только с «\n» внутри имени выбранного файла (впрочем, в отличие от пробелов, это в живой природе не встречается).
Shell
ls | sed 's/$/\n.\non/' | xargs -d$'\n' dialog --stdout --separate-output --checklist title 0 0 0 > /tmp/listСпасибо, посмотрю. Хотя на предмет «с чего начать» у меня уже кое-какие мысли появились.sash-kan писал(а): ↑18.12.2010 15:23t.t
я бы в такой ситуации (редактирование потока данных в промежутке между программами), воспользовался бы vipe-м из moreutils.
да, большинству озвученных требований не удовлетворяет. но, возможно, сгодится хотя бы в качестве варианта, с чего можно начинать делать что-то своё уникальное.
p.s. это коротенький perl-скрипт. ничего «военного».
Код: Выделить всё
f=$(mktemp)
tee $f &>/dev/null && $EDITOR $f && cat $f
rm -f $fSYNOPSIS
command1 | vipe | command2
DESCRIPTION
vipe allows you to run your editor in the middle of a unix pipeline and edit the data that is being piped between
programs.
Так ведь снова dialog… Уж очень у него интерфейс аляповатый и перегруженный. Зачем все эти рамочки, фончики-разноцветности? Куда интереснее возможность сделать разноцветным сам список (уж отфильтровать потом цветовые коды из вывода — дело техники). Впрочем, я уже смирился, что нет такого.Portnov писал(а): ↑22.12.2010 12:16Я уже упоминал тут свой скрипт для похожих целей... достойный аналог Total commander
Вот, ты тоже интерактивность с назойливостью путаешь. Интерактивность — это когда система тебя спрашивает о чём-то когда ты её сам об это попросил, а не когда ей вздумается. Я говорю о несколько даже более частном случае: когда ты наперёд даже не догадываешься, какие будут промежуточные результаты. Причём чаще всего предшествующее действие при этом не особо долгое, а вот последующее может затянуться. Т.е. сформировал список автоматически, выбрал нужное вручную и тогда уже пошёл пить чай. Грубый пример: cat sitelist | wget -r -l1 -i- -O- | grep -o 'http://[^<]*\.tgz' | select | wget -i-/dev/random писал(а): ↑23.12.2010 01:52Потому что юниксвейность - это когда для выполнения большой и длительной задачи дал одну команду и ушёл пить чай. А гуёвость - это когда дал команду и сидишь целый час, отвечаешь да/нет.
Код:
#!/usr/bin/perl
use Curses::UI;
use Getopt::Long;
#{{{опции
GetOptions (
"c|checkall" => \$checkall,
"s|separator=s" =>\$/,
);
#}}}
#{{{чтение и дескрипторы
#читаем список
my $counter = 0;
while(<>) {
push @vals, $_ unless (/\A\s\Z/);
%labs = (%labs,$counter++,$_) unless (/\A\s\Z/) ;
}
#нет ничего вообще
exit 0 unless @vals;
if ($checkall){
#только одна отмеченная опция
if(@vals == 1){
print $vals[0];
exit 0;
}
%sel_labs = %labs;
}
close STDIN;
#теперь STDIN для curses
open(STDIN,"</dev/tty") || die "$0: reopen stdin: $?\n";
#сюда пошлем результаты
open(TEXTOUT,">&STDOUT");
close STDOUT;
#вывод curses в терминал
open(STDOUT,">/dev/tty") || die "$0: reopen stdin: $?\n";
#}}}
#{{{curses
my $cui = new Curses::UI(
-clear_on_exit => 1,
);
my $win = $cui->add('window','Window');
my $list = $win->add(
'list','Listbox',
-values => \@vals,
-labels => \%labs,
-selected => \%sel_labs,
-multi => 1,
);
$list->focus();
#}}}
#{{{привязки клавиш
sub done() {
$cui->leave_curses();
@results = $list->id();
close STDOUT;
foreach $key (sort {$a <=> $b} @results) {
print TEXTOUT $labs{$key};
}
exit 0;
}
$cui->set_binding(sub {exit(130);},"\cC");
$cui->set_binding(\&done,Curses->KEY_ENTER());
#}}}
$cui->mainloop();
# vim: foldmethod=markerКод:
ls --color=always -1 | ./dia.plКод:
^[[01;34mDesktop^[[0mЭто в listbox реализуемо, вроде бы.
t.t писал(а): ↑17.12.2010 23:23Не первый уже раз возникает нужда в такой программе. Чтобы можно было написать что-то вроде (простейший пример, только что пришедший в голову)и в промежутке выбрать вручную один или несколько файлов в каком-нибудь простеньком ncurses-интерфейсе; а не копировать-вставлять или перебивать руками пункты из списка, который и в экран может не влезть.Код: Выделить всё
apt-file -l search filename | select --list | xargs apt-cache show
Сам искал неоднократно, но может я как-то не так ищу… А то уже даже возникают мысли самому начать что-то такое писать, но велосипедов изобретать не хочется.
Код: Выделить всё
if (use_default_colors() == 0) {
$dfg = -1; $dbg = -1;
}
else {
pair_content(0,$dfg,$dbg);
}То же самое.
Нет, ничего не изменилось.liaonau писал(а): ↑10.09.2011 00:25Это такой standend() по идее. Значит такая нулевая пара цветов, наверное. Замените вот это, пожалуйста:
Код: Выделить всё
if (use_default_colors() == 0) { $dfg = -1; $dbg = -1; } else { pair_content(0,$dfg,$dbg); }
просто на
pair_content(0,$dfg,$dbg);
Изменится ли что-нибудь?