Экономим время при работе с командной строкой

    Инструменты для автоматизации работы с операторами и повышения читабельности кода.


    Фото — Kevin Ku — Unsplash


    Navi



    Это — инструмент, предназначенный для просмотра и хранения шпаргалок с операциями командной строки. Отображает списки операторов UNIX/Linux и подсказывает необходимые аргументы. Шаблоны можно или создавать самостоятельно, или скачивать:

    $ navi search <cmd>


    / Как работает navi: gif-изображение из официального репозитория

    По словам разработчика, теперь не нужно копировать результат выполнения одной команды в буфер обмена, чтобы вставить его в следующую. Также navi действует в качестве виджета для shell. Однако пока что он доступен только для оболочки zsh и bash. Вопрос о поддержке других решают в специальном треде на GitHub — подключиться могут все желающие.

    У navi много аналогов — например, broegcheat.shtldrcmdmenu и cheat. Резидент Hacker News также отметил, что подобная функциональность уже встроена в Linux. В частности, они имел в виду директорию ~/bin, куда помещаются самописные скрипты. Однако автор navi говорит, что альтернативы не обладают понятным UI и не умеют автоматически подставлять необходимые аргументы.

    Инструмент можно опробовать онлайн на katacoda. Платформа запустит docker-контейнер и предоставит все инструкции для запуска navi, правда, нужна регистрация.


    Z



    Этот shell-скрипт упрощает навигацию по директориям в командной строке. С ним можно не использовать cd и ls (dir), чтобы переходить между директориями. Инструмент запоминает, какие директории вы посещаете, и назначает им особый весовой коэффициент — frecency (от англ. «recent» и «frequency»). Когда вы открываете папку, её частотная характеристика увеличивается на единицу, при этом она получает флаг — «недавно посещалось». После этого достаточно передать утилите название папки, и та откроет её автоматически.

    // Чтобы перейти в /var/www/staging/wp-content/themes напишите:
    $ z themes
    
    // В этом случае будет аналогичный результат:
    $ z staging themes
    

    Когда сумма частотных коэффициентов директорий превышает 9000, все они умножаются на 0,99. В итоге папки, коэффициент которых оказывается меньше единицы, забываются.

    Сегодня Z имеет более 10 тыс. звезд на GitHub, но несмотря на популярность, у него есть недостатки. Резиденты Hacker News отмечают, что по сравнению с аналогами, у инструмента ограниченная функциональность — например, утилита fasd выполняет переходы не только по названию директорий, но и по именам файлов. Также стоит отметить, что схожей функциональности можно добиться, используя стандартный инструмент $CDPATH — список часто посещаемых папок. Однако в этом случае директории придется вводить вручную.


    Bat



    В UNIX-подобных системах cat используют для последовательного считывания и отправки содержимого файлов в стандартный вывод. У cat есть аналог — bat, но с дополнительными улучшениями: подсветкой синтаксиса и интеграцией с git. Утилиту разработал Давид Петер (David Peter), физик из Германии, который работал над bat в свободное время.

    / Скриншот из репозитория Bat на GitHub

    Bat умеет подсвечивать синтаксис таких языков программирования, как C#, C++, Erlang, Go, Groovy и многих других. С полным списком можно познакомиться, прописав команду:

    $ bat --list-languages

    В левом столбце, где проставлены номера, утилита также показывает изменения в файле — добавленные строки, измененные названия и так далее — со времени последнего коммита. Еще одна особенность bat — поддержка автоматической подкачки. Она дает возможность читать выводы последовательно: страницу за страницей.

    В целом инструмент собрал положительные отзывы. Вокруг него даже сформировалось крупное сообщество — больше 15 тыс. звезд на GitHub. Но все же нашлись люди, не оценившие bat. По их словам, подобные утилиты идут вразрез с концепцией UNIX — Do One Thing And Do It Well («Программа должна делать одну вещь и делать её хорошо»), поэтому функциональность bat посчитали «избыточной». Задачи, за которые отвечает bat, решает набор других инструментов — например, awk для парсинга текстовых файлов и entr(1) для сборки проекта после модификации исходников.

    Бенчмарки для серверов на Linux:

    Temci, Uarch-bench, Likwid, Perf-tools и Llvm-mca
    Sysbench, UnixBench, Phoronix Test Suite, Vdbench и IOzone
    Iometer, DD, vpsbench, HammerDB и 7-Zip

    Другие материалы из нашего блога и социальных сетей:

    Персональные данные: средства защиты
    Как обезопасить Linux-систему: 10 советов
    Минимизация рисков: как не потерять ваши данные
    Резервное копирование файлов: как подстраховаться от потери данных
    Как перенести системный жесткий диск в виртуальную машину?

    Как создать виртуальный сервер в 1cloud.ru
    Технология WebAssembly — как это работает

    P.S. Наш API для управления облаком, мониторинга и масштабирования серверов.
    1cloud.ru
    331,53
    IaaS, VPS, VDS, Частное и публичное облако, SSL
    Поделиться публикацией

    Комментарии 22

      +5
      Недавно открыл для себя терминальные файловые менеджеры типа ranger, nnn и lf. Последний работает и под винду. В консоли стало значительно удобнее.

      PS вместо bat можно создать alias на pygments, поддерживаемый список синтаксисов намного больше.

      А еще команда fuck для исправления последней введенной)
        +2
        А как же mc? (Midnight Commander)
          0
          MC не подходит для задачи быстрой навигации:
          1) клавиша влево — прошлая папка, вправо — зайти в выделенную, вверх-вниз — понятно, нажатие пары букв — фильтр по именам файлов (интерактивный режим в NNN)
          2) после выхода из программы в shell остается последняя папка — это если запускать через bash-скрипт, который делает cd в последнюю папку
          3) ranger поддерживает подсветку синтаксиса в предпросмотре выделенного файла
          4) в отличии от MC, так как видно контекст — содержимое папки на уровне выше и содержимое папки в которую произойдет переход — то ориентирование и навигация тоже намного быстрее.
            0
            клавиша влево — прошлая папка, вправо — зайти в выделенную, вверх-вниз — понятно,

            В mc то же самое.


            нажатие пары букв — фильтр по именам файлов (интерактивный режим в NNN)

            Это только в nnn? В ranger и lfm (это тот же lf или что-то другое?) оно не так.


            ranger поддерживает подсветку синтаксиса в предпросмотре выделенного файла

            Как включить?


            в отличии от MC, так как видно контекст — содержимое папки на уровне выше и содержимое папки в которую произойдет переход — то ориентирование и навигация тоже намного быстрее.

            А вот это интересно и удобно.
            В общем, ranger меня заинтересовал. Хотя есть задачи, с которыми в двухпанельнике все же удобнее.

              0
              клавиша влево — прошлая папка, вправо — зайти в выделенную, вверх-вниз — понятно,

              В mc то же самое.

              Не поделитесь, как в мс переходить по директориям без нажатия энтер? Потому что это очень бесит, vifm ускорил навигацию с сотню раз, используя только стрелки или h,j,k,l

                +1

                Настройки\Настройки панелей \Навигация в стиле lynx

              0

              Просто отвечу, как это в vifm реализовано


              1) клавиша влево — прошлая папка, вправо — зайти в выделенную, вверх-вниз — понятно, нажатие пары букв — фильтр по именам файлов (интерактивный режим в NNN)

              Так же


              2) после выхода из программы в shell остается последняя папка — это если запускать через bash-скрипт, который делает cd в последнюю папку

              Так же


              3) ranger поддерживает подсветку синтаксиса в предпросмотре выделенного файла

              Вот так можно настроить это в конфиге


              4) в отличии от MC, так как видно контекст — содержимое папки на уровне выше и содержимое папки в которую произойдет переход — то ориентирование и навигация тоже намного быстрее.

              есть :view.
              В случае с директорией оно показывает вложенные папки


              Если файл с распознанным синтаксисом — подсвечивает содержимое файла

                0

                Плпробовал предложенные файловые менеджеры и vifm впридачу.
                Понял, чего в них мне не хватает — полноценного доступа к командной строке, как у mc в линуксе и far в винде. И это также одна из причин, по которой мне не пришлись по нраву гоафические файловые менеджеры.
                Да, там есть возможность выполнять команды в командной строке, но такой степени интеграции как у того же mc нет.

                  0
                  Понял, чего в них мне не хватает — полноценного доступа к командной строке, как у mc в линуксе и far в винде. И это также одна из причин, по которой мне не пришлись по нраву гоафические файловые менеджеры.

                  Специально для вас в vifm есть решение


                  nnoremap s :shell<cr>

                  Можно и на любую другую комбинацию, включая альт и контрол. Так же все линуксовые комманды для текущей директории работают через вызов ":".
                  Более подробно можно посмотреть здесь
                  Сам буквально месяц назад наткнулся на vifm — до сих пор ковыряю под себя и очень доволен, mc по возможностям очень сильно не дотягивает

                    0

                    Это не то.
                    Если в vim я еще могу смириться с контринтуитивной идеей постоянно переключаться между режимами навигации и редактирования (это, как ни странно, в некоторых ситуациях дает кое какие удобства), то в файловом менеджере это несколько раздражает.
                    В far и mc я почти практически всегда нахожусь в режиме редактирования команды командной строки (за исключением времени выполнения вызванных программ, редактирования, полноэкранного просмотра и работы с диалоговыми окнами).
                    Мне не надо постоянно переключаться между разными режимами.
                    Я могу в процессе редактирования команды выбирать файлы в панели, переключаться между панелями, добавлять имена файлов из панелей (с путем или без него) в команду, копировать файлы с панели на панель, осуществлять навигацию между подкаталогами, например, для поиска нужного файла — параметра для команды.
                    Мне не надо набирать exit, чтобы вернуться из командной оболочки в файловый менеджер.
                    Я могу занять панелями файлового менеджера не все окно, а лишь его часть и видеть в результате вывод (или его часть) введенных мной только что команд.
                    Возможно, можно как-то привыкнуть обходиться без этого, но мне пока не удается.

                      0

                      Я понял ваш стиль работы, у меня он другой, но тем не менее я не очень понял, что вы имеете в виду под режимами в vifm? Я использую только один режим, разве что еще view иногда включаю, чтобы посмотреть дерево файлов в неактивной панели.


                      Я могу в процессе редактирования команды выбирать файлы в панели, переключаться между панелями, добавлять имена файлов из панелей (с путем или без него) в команду, копировать файлы с панели на панель, осуществлять навигацию между подкаталогами, например, для поиска нужного файла — параметра для команды.

                      Разве связка tmux + vifm или tilix + vifm в моем случае не позволяет делать тоже самое? Только vifm, в отличии от мс не надо нажимать энтер чтобы перейти в дочернюю директорию и древовидного просмотра там вроде тоже нет(Не скажу ничего про far, никогда им не пользовался, но его под линукс вроде нету)

                        +1
                        я не очень понял, что вы имеете в виду под режимами в vifm?

                        Как минимум режим навигации и режим ввода команд (который после двоеточия включается.
                        Если я правильно понял, то там еще режим выделения есть.


                        Не скажу ничего про far, никогда им не пользовался, но его под линукс вроде нету)

                        Уже есть — far2l

              +1

              vifm — привычные комбинации, предпросмотр с подсведкой синтаксиса и отличная настраиваемость

              0

              Navi: касательно виджета для shell, в readme проекта на github написано что bash тоже поддерживается. См. параграф "Shell widget" на

                0

                Пользуюсь иногда альтернативой man — tldr. Бывает полезно.

                  +2
                  переходить между папками

                  [-|||-] конечно же, но — "Папка у тебя один, а в файловой системе — директории" ©.


                  Дабы два раза не ходить — пруфец.

                    +1
                    Думалось будет больше. Ожидается ли продолжение?
                    0
                    Вот бы еще вывод json объектов можно было смотреть с подсветкой и фолдингом (свертывать, разворачивать дерево).
                      0

                      Сразу же приходит на ум jq/yq, но они неинтерактивные. Однако оказалось, что есть fx в нём как раз и подсветка и фолдинг

                        0

                        jq — без фолдинга.
                        Для фолдинга можно использовать vim (set foldmethod=indent).

                        0
                        Сам себя не похвалишь, никто не похвалит. Скриптик создает меню(dialog'ом) из вашего ~/.ssh/config
                        Можно подключаться, выполнять команды, копировать файлы, делать туннели.
                        картинка
                        image

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое