Ответы пользователя по тегу zsh
  • Почему неправильно считается количество строк глобами?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    myvar=$(find "/tmp/folders" -iname "App *" -type d -maxdepth 1)
    count=${#myvar[@]}
    echo $count


    И в ответ получаю число 120, которое означает количество символов, а не строк

    И это верно.

    2. Почему в моем примере выводится количество символов в переменной, а не количество строк?

    Потому что ${#myvar[@]} -- это длина массива. Если идея была создать в первой строке массив из имён файлов, то там не хватает пары скобок:
    myvar=( $(find "/tmp/folders" -iname "App *" -type d -maxdepth 1) )

    С таким определением myvar становится массивом а ${#myvar[@]} выведет длину этого массива, т.е. количество строк в нём.
    spoiler
    Имена файлов с пробелами, кстати, эту стройную картину малость испортят.
    С вашим определением выводится длинна массива, но в качестве массива выступает одна строка, так что это длина строки в символах.

    1. Реально ли подсчитать количество строк в файле или переменной с помощью глобов, как показано тут - https://stackoverflow.com/a/32727260 ?

    Да. Но использование для этой цели массивов оболочки выглядит странно и расточительно. В shell канонично считать строки командой wc -l.
    Ответ написан
    1 комментарий
  • Как создать в скрипте цикл while-do проверки, не пуст ли файл?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    проверять файл, пока не окажется, что он существует и не пуст

    Можно как-то так сделать:
    while [ ! -s "$file" ] ; do sleep 1 ; done

    While [проверка показывает, что файл или не существует или пуст]
    Do
    Проверить опять, есть ли файл и пуст ли файл
    Done

    это какой-то больно загруженный цикл, не надо так делать.
    Ответ написан
    1 комментарий
  • Как активировать ctrl+r в истории zsh, если я использую сочетание клавиш для vim?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Решил использовать сочетание клавиш для vim в терминале bash. ... Так вот, сочетание клавиш та работает, а вот ctrl+r для истории - нет.

    bind -P покажет все активные комбинации клавиш. Что выводит bind -P | grep 'C-r'? Что выводит bind -P | grep reverse-search-history?
    Ответ написан
  • Как починить регистр * в vim?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Из :help registers:
    8. Selection and drop registers "*, "+ and "~
    Use these registers for storing and retrieving the selected text for the GUI.
    See quotestar and quoteplus. When the clipboard is not available or not
    working, the unnamed register is used instead. For Unix systems the clipboard
    is only available when the +xterm_clipboard feature is present. {not in Vi}


    В debian 9 без vim-gui-common:
    $ vim --version | grep -o .xterm_clipboard
    -xterm_clipboard

    так что и не должно работать. После установки vim-gui-common:
    $ vim --version | grep -o .xterm_clipboard
    +xterm_clipboard
    Ответ написан
    Комментировать
  • Как включить в zsh регулярные выражения?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Такое выражение ls +([0-9]).jpg в zsh не работает, а в bash - да.

    Не работает оно в bash, по крайней мере в дефолтных настройках:
    $ ls +([0-9]).jpg
    bash: syntax error near unexpected token `('

    В bash нет поддержки регулярных выражений, есть extended globbing:
    If the extglob shell option is enabled using the shopt builtin, several extended pattern matching operators are recognized.
    Ответ написан