All streams
Search
Write a publication
Pull to refresh
41
0
Павлов Николай Александрович @ZyXI

Инженер

Send message
Что?! Формат [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
Интересно, а почему в разделе «Специальные устройства воспроизведения» нет ни слова про возможность использования обычного ПК? Производители эту возможность как‐то специально зарезали?
xterm такое тоже поддерживает. Подозреваю, что с него и началось.

rxvt-unicode — нет.
Самое интересное, что эта переменная упомянута и в предложении до, и в предложении после процитированного мною ранее.
Эксперимент показывает, что нет.
(zyx-desktop:zyx:~/.vam/powerline) % strace -e 'execve' zsh -c 'export PAGER=/usr/bin/less; < /dev/null'
execve("/bin/zsh", ["zsh", "-c", "export PAGER=/usr/bin/less; < /d"...], [/* 64 vars */]) = 0
execve("/bin/more", ["more"], [/* 64 vars */]) = 0
+++ exited with 0 +++
Вы думаете, у меня не less в $PAGER?
Согласен. Предпочитаю emacs с кучей заимствований из vim (не из vi режима), включая <C-r>+/<C-r>*, <C-o>+некоторые операторы. Теперь жалею, что такого нет в самом vim (командный режим там на редкость убог по сравнению с zsh, но не с bash).
Если иметь
"\C-n": history-search-forward
"\C-p": history-search-backward
в .inputrc то по <C-n>/<C-p> получите абсолютно то же самое в 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 и <).
Нет, не работает. Запускать надо используя zsh scriptname, иначе запуститься bash. Зато в zsh работает
for ((i=0; i<3; i++)) {
    echo $i
}
А в debian, насколько я помню, к /bin/dash. Может уже изменили, но раньше такое точно было. Судя по списку файлов данного пакета — так и не изменили.
Изначально он ориентирован на любые терминалы — не только поддерживающие 256 цветов, поэтому некоторые цвета могут выглядеть не так, как нам нравится, но это можно исправить. Главный файл с настройками цветов располагается по пути:
/usr/share/zsh/plugins/zsh-syntax-highlight/highlighters/main/main-highlighter.zsh
Измените цвета так, как вам нужно.
Пример:

: ${ZSH_HIGHLIGHT_STYLES[hashed-command]:=fg=153}
…


Ни в коем случае не делайте это сами и не никогда рекомендуйте никому изменять файлы, контролируемые пакетным менеджером. Скажите, вы разве никогда не видели раньше : ${VAR:=val}? Эта конструкция буквально означает «записать val в переменную VAR, если последняя пуста или не определена». То есть не надо ничего менять в /usr/share, просто определите эти переменные до строки
source /usr/share/zsh/site-contrib/zsh-syntax-highlighting.zsh
и всё.

Точнее, не переменные, а ассоциативный массив с нужными ключами:
typeset -A ZSH_HIGHLIGHT_STYLES
ZSH_HIGHLIGHT_STYLES=(
        'alias'           'fg=green,bold'
        'builtin'         'fg=yellow'
        'function'        'fg=blue,bold'
        'command'         'fg=green'
        'hashed-commands' 'fg=green,underline'
        'precommand'      'fg=cyan'
        'path'            'underline'
)

Если интересно, у меня есть скрипт, который выдаёт список из #RRGGBB кодов всех цветов для текущего терминала. Для работы требуется Vim, wmctrl (желательно), perl, YAML::XS, imagemagick (консольные команды и perl bindings). Желательно, чтобы окно терминала не имело декораций. Код, определяющий месторасположение таблицы цветов, по идее, должен работать с почти всеми декорациями, но медленно. Для работы также требуется, чтобы чёрный фон отличался от белого. Никаких более требований нету.

Там же — списки цветов для используемых мною терминалов (откуда я взял default-8 уже не помню, у wineconsole цвета другие). Цвета у всех используемых мною эмуляторов (rxvt-unicode USE+=256-color, xterm, konsole) везде одинаковые, первые 16 цветов у konsole отличаются (и настраиваются). Насколько мне известно, как минимум xterm позволяет настраивать вообще все цвета.
Зачем мне if, если можно просто иметь приглашение, которое работает везде?

Как сделать в bash такое же приглашение, как в zsh, я легко могу решить. Но это не добавит возможностей zsh в bash.
Относительно PS1 в других оболочках — я в этом отношении предпочитаю оставить приглашение по‐умолчанию или, в любом случае, отличное от того, что у меня в zsh, чтобы оно всегда напоминало мне о том, что это другая оболочка, в которой недоступны привычные мне возможности zsh.
Накатить для логов — нет. Когда меня попросили добавить в formatvim вывод с помощью ANSI escape последовательностей, мне тоже пришлось с этим разбираться. А вот писать PS1 в таком виде я бы никогда не стал. Точно так же, как не стал бы использовать в PS1 что‐то, кроме первых 16 цветов — мне ещё случается работать во framebuffer.
Ну и PS1, конечно, переписан с нуля.

Не мучайте себя, возьмите zsh. Здесь цвета сокращаются до %F{blue}…%f/%K{blue}…%k (только первые 16, остальные имеют число вместо имени) (Foreground, bacKground), %B…%b для жирного, %U…%u — подчеркнутого и %S…%s — инверсного (похоже zsh не предоставляет возможности сделать текст наклонным с помощью %{char}. Не представляет проблемы, так как konsole и xterm всё равно это не поддерживают, только urxvt).

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity