Как я могу остановить Z-оболочку от сговора, чтобы вмешаться в вывод GNU Make?

Мои исследования показывают, что оболочка Z тесно связана с двумя тайными обществами. Эти связи обнаруживаются при сопоставлении вывода GNU Make при использовании bash vs. zsh . Я хотел бы знать, как настроить мою оболочку, чтобы сорвать любые хитрые планы, которые были заложены против меня.

  1. эрудиты

    Целью этого партнерства, похоже, является скрытие секретов на виду. Рассмотрим результат следующего простого Makefile :

     test: @echo "# header" @echo "line with a hash # in the middle" 

    Если я запустил это в своей оболочке zsh , первая строка скрыта от меня. Это не проблема с экранированием хэша, потому что (а) только первая строка имеет проблему, (б) перенаправление этого файла в файл делает его показательным, и в этот момент просмотр файла на тот же терминал показывает , и (c) если я копирую с терминала текст на самом деле там, он просто отображается как черный.

    вывод makefile в zsh vs bash

    Как я могу остановить все, что zsh делает с выходом, который скрывает секретные сообщения, чтобы я мог принимать обоснованные решения на основе вывода?

  2. Масонство

    Цель этого партнерства состоит в том, чтобы выпустить как можно меньше информации о том, что происходит за кулисами. Рассмотрим выход этого простого Makefile:

     test: for i in $$(seq 1 10); do echo -n "[$$i]"; sleep 1; done 

    Если я запустил это в моей оболочке zsh , вывод буферизуется где-то до тех пор, пока не будет достигнута новая линия или цель не будет завершена. Тогда и только тогда все возвращается к терминалу. Это делает длительные рабочие задания, которые на самом деле показывают что-то во время работы, но не включают частые разрывы строк на выходе, которые очень сложно выполнить. В отличие от этого вывод, который я получаю от bash , намного более информативен.

    asciicast

    Как я могу остановить все, что zsh делает, что цензоры выводят до тех пор, пока не будет вынужден раскрыть его, чтобы я мог видеть, что происходит, когда это происходит?

Если это имеет значение, я использую GNU Make 4.2.1, Z shell 5.2 и запускаю его внутри Tmux 2.4 в окне Termite v12. Мои dotfiles доступны для zsh , tmux и Termite .

Также обратите внимание, что ни одна из этих проблем, похоже, не имеет ничего общего с тем, что shell запускает внутренне, поскольку добавление SHELL = bash в Makefile ничего не меняет.

One Solution collect form web for “Как я могу остановить Z-оболочку от сговора, чтобы вмешаться в вывод GNU Make?”

Не используя надстройки, целью которых является именно это.

Это не Z-оболочка, которая делает это; ни tmux, ни термита.

Вы установили надстройку из Prezto (или что-то подобное), документальная цель которой заключается в «вмешательстве в вывод GNU Make». Верх надстройки гласит:

  #
 # Основные моменты делают вывод.
 #
 # Авторы:
 # Сорин Ионеску <sorin.ionescu@gmail.com>
 # 

Как вы можете видеть, когда вы бежали

  сделать тест 

вы не запускали настоящую программу make , а вместо этого запускали надставку named make которую вы установили. Он, в свою очередь, выполнял команду под названием colormake .

И что делает colormake ? Он запускается с стандартным выходом и стандартной ошибкой, не являющейся терминальным устройством, и передает их в программу Perl, которая считывает и обрабатывает стандартный ввод по одной целой строке за раз. Фактически вы можете воспроизвести все эффекты, которые вы видите, в любой совместимой с POSIX оболочке , делая то же самое:

  / usr / bin / make test 2> & 1 |  colormake.pl 

Это не связано с оболочкой Z и все, что связано с тем, что вы установили плагин, который заменил команду make .

Чтобы наблюдать за строкой в ​​режиме времени самостоятельно, без цвета и обнаружения комментариев и т. Д., colormake.pl делает, в любой оболочке, совместимой с POSIX :

  / usr / bin / make test 2> & 1 |  perl -e 'while (<>) {print $ _;  }» 

Поэтому удалите или отключите добавленное дополнение.

Prezto также заменяет команду diff .

дальнейшее чтение

  • Бьярни Рунар Эйнарссон. Colormake .
  • Сорин Ионеску (2012). make . Prezto.
  • Сорин Ионеску (2012). diff . Prezto.
  • вызов двух версий nodejs с разными именами
  • Задания zsh и команды unznow bzr
  • Как «отменить» rsync -L?
  • Отметьте дескриптор как терминал для теста -t
  • Массивы в Zsh. Проверьте, не определена ли какая-либо из следующих переменных
  • Ярлыки каталогов в буфере emacs
  • Как проверить, если текущая оболочка zsh уже выполнила команды `dircolors` и` stty`?
  • Расширяет ли расширение zsh по-разному в неинтерактивных скриптах?
  • Почему `kill -s INT <zsh PID>` ведет себя иначе, чем `Ctrl-C`?
  • iterm-синхронизация сеансов по новым вкладкам
  • каталог автозаполнения zsh
  • Interesting Posts

    Измените размер определенного окна на определенный размер и местоположение экрана из сценария

    Выберите конкретный диапазон полей текстового файла

    Что вы подразумеваете под командами низкого уровня и командами высокого уровня?

    Команда Grep для поиска файлов, содержащих текстовую строку, и перемещения их

    Iptables: `nf_conntrack_ftp` не работает под debian

    Разница между make-kpkg и make deb-pkg

    ceph fs слишком высокая латентность, что приводит к высокой нагрузке на виртуальные машины

    Как определить, является ли вход из аргумента, файла или терминала

    Grep первые 50 строк файлов для шаблона

    Лучший сенсорный монитор для Linux под $ 500

    Как создать файл CSV без лишних пробелов?

    Удаленные файлы из дома, удаленные из .local / share / Trash / files, система не сообщает о свободном пространстве

    FTP-клиенты показывают только 9998 папок в каталоге со многими другими

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

    Что я могу (не) уничтожить из корня во время его установки?

    Linux и Unix - лучшая ОС в мире.