Что?! Формат [word, word2, word3] или ['word', 'word2', 'word3'], конечно, не является идеалом (если надо сравнивать их между собой, то удобнее просто
word
word1
word2
: то, что можно скормить sort, а затем diff). Но это дело исправляется двумя заменами на sed. Сделать такое со снимком окна, да ещё и пожатом (habrastorage оставляет только 800px по ширине), гораздо сложнее.
У меня, кстати, есть сильное подозрение, что результаты реально не проверялись за исключением беглого просмотра: скрипт на perl выдаёт очевидную чушь, потому и отмечен как неправильный, остальные выдают несортированный список, да ещё и в разных форматах. Если бы результаты проверялись полностью, автор наверняка бы выбрал более удобный формат представления.
Интересно, как вы представляете себе проверку результата при использовании данного снимка окна? Точнее, процедуру проверки я представляю, а вот человека, желающего ей заняться — нет.
Кстати, ни одно из представленных решений не выдаст такого результата, все пишут в stdout. Это вообще как получено?
import sys
import re
from collections import defaultdict
n = int(sys.argv[1])
fname = sys.argv[2]
d = defaultdict(int)
regex = re.compile(r'\w+')
with open(fname, 'rb') as f:
for line in f:
for match in regex.finditer(line):
d[match.group()] += 1
print '\n'.join((k for k, v in d.iteritems() if v == n))
Моё: 0,65s user 0,01s system 99% cpu 0,663 total
test3: 0,37s user 0,02s system 97% cpu 0,401 total
Интересно, а почему в разделе «Специальные устройства воспроизведения» нет ни слова про возможность использования обычного ПК? Производители эту возможность как‐то специально зарезали?
Согласен. Предпочитаю emacs с кучей заимствований из vim (не из vi режима), включая <C-r>+/<C-r>*, <C-o>+некоторые операторы. Теперь жалею, что такого нет в самом vim (командный режим там на редкость убог по сравнению с zsh, но не с bash).
У меня пускает more. Причём даже на /dev/null, который имеет нулевой размер. В документации это описано как «shows the contents of file on standard output, with paging if that is a terminal.», ни слова о том, какая программа делает paging или как это настроить.
Вводить меньше всего на одну клавишу («Shift»+«<» vs «c», «a», «t»). Проще настроить alias, особенно учитывая, что в dvorak «a» единственная находится под левой рукой (то есть имеем оптимальную последовательность правая‐левая‐правая, причём две клавиши в основном ряду, в отличие от Shift и <).
Изначально он ориентирован на любые терминалы — не только поддерживающие 256 цветов, поэтому некоторые цвета могут выглядеть не так, как нам нравится, но это можно исправить. Главный файл с настройками цветов располагается по пути:
/usr/share/zsh/plugins/zsh-syntax-highlight/highlighters/main/main-highlighter.zsh
Измените цвета так, как вам нужно.
Пример:
Ни в коем случае не делайте это сами и не никогда рекомендуйте никому изменять файлы, контролируемые пакетным менеджером. Скажите, вы разве никогда не видели раньше : ${VAR:=val}? Эта конструкция буквально означает «записать val в переменную VAR, если последняя пуста или не определена». То есть не надо ничего менять в /usr/share, просто определите эти переменные до строки
Если интересно, у меня есть скрипт, который выдаёт список из #RRGGBB кодов всех цветов для текущего терминала. Для работы требуется Vim, wmctrl (желательно), perl, YAML::XS, imagemagick (консольные команды и perl bindings). Желательно, чтобы окно терминала не имело декораций. Код, определяющий месторасположение таблицы цветов, по идее, должен работать с почти всеми декорациями, но медленно. Для работы также требуется, чтобы чёрный фон отличался от белого. Никаких более требований нету.
Там же — списки цветов для используемых мною терминалов (откуда я взял default-8 уже не помню, у wineconsole цвета другие). Цвета у всех используемых мною эмуляторов (rxvt-unicode USE+=256-color, xterm, konsole) везде одинаковые, первые 16 цветов у konsole отличаются (и настраиваются). Насколько мне известно, как минимум xterm позволяет настраивать вообще все цвета.
Относительно PS1 в других оболочках — я в этом отношении предпочитаю оставить приглашение по‐умолчанию или, в любом случае, отличное от того, что у меня в zsh, чтобы оно всегда напоминало мне о том, что это другая оболочка, в которой недоступны привычные мне возможности zsh.
Накатить для логов — нет. Когда меня попросили добавить в formatvim вывод с помощью ANSI escape последовательностей, мне тоже пришлось с этим разбираться. А вот писать PS1 в таком виде я бы никогда не стал. Точно так же, как не стал бы использовать в PS1 что‐то, кроме первых 16 цветов — мне ещё случается работать во framebuffer.
Не мучайте себя, возьмите zsh. Здесь цвета сокращаются до %F{blue}…%f/%K{blue}…%k (только первые 16, остальные имеют число вместо имени) (Foreground, bacKground), %B…%b для жирного, %U…%u — подчеркнутого и %S…%s — инверсного (похоже zsh не предоставляет возможности сделать текст наклонным с помощью %{char}. Не представляет проблемы, так как konsole и xterm всё равно это не поддерживают, только urxvt).
[word, word2, word3]
или['word', 'word2', 'word3']
, конечно, не является идеалом (если надо сравнивать их между собой, то удобнее просто : то, что можно скормитьsort
, а затем diff). Но это дело исправляется двумя заменами на sed. Сделать такое со снимком окна, да ещё и пожатом (habrastorage оставляет только 800px по ширине), гораздо сложнее.У меня, кстати, есть сильное подозрение, что результаты реально не проверялись за исключением беглого просмотра: скрипт на perl выдаёт очевидную чушь, потому и отмечен как неправильный, остальные выдают несортированный список, да ещё и в разных форматах. Если бы результаты проверялись полностью, автор наверняка бы выбрал более удобный формат представления.
Кстати, ни одно из представленных решений не выдаст такого результата, все пишут в stdout. Это вообще как получено?
rxvt-unicode — нет.
<C-r>+/<C-r>*
,<C-o>
+некоторые операторы. Теперь жалею, что такого нет в самом vim (командный режим там на редкость убог по сравнению с zsh, но не с bash).<C-n>
/<C-p>
получите абсолютно то же самое в bash. Стрелки — зло.Второе же существенно.
zsh scriptname
, иначе запуститься bash. Зато в zsh работаетНи в коем случае не делайте это сами и не никогда рекомендуйте никому изменять файлы, контролируемые пакетным менеджером. Скажите, вы разве никогда не видели раньше
: ${VAR:=val}
? Эта конструкция буквально означает «записатьval
в переменнуюVAR
, если последняя пуста или не определена». То есть не надо ничего менять в/usr/share
, просто определите эти переменные до строки и всё.Точнее, не переменные, а ассоциативный массив с нужными ключами:
Там же — списки цветов для используемых мною терминалов (откуда я взял default-8 уже не помню, у wineconsole цвета другие). Цвета у всех используемых мною эмуляторов (rxvt-unicode USE+=256-color, xterm, konsole) везде одинаковые, первые 16 цветов у konsole отличаются (и настраиваются). Насколько мне известно, как минимум xterm позволяет настраивать вообще все цвета.
Как сделать в bash такое же приглашение, как в zsh, я легко могу решить. Но это не добавит возможностей zsh в bash.
Не мучайте себя, возьмите zsh. Здесь цвета сокращаются до
%F{blue}…%f
/%K{blue}…%k
(только первые 16, остальные имеют число вместо имени) (Foreground, bacKground),%B…%b
для жирного,%U…%u
— подчеркнутого и%S…%s
— инверсного (похоже zsh не предоставляет возможности сделать текст наклонным с помощью%{char}
. Не представляет проблемы, так как konsole и xterm всё равно это не поддерживают, только urxvt).