Как я могу остановить 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.
  • Сохраните пробел после завершения для некоторых символов в zsh
  • Имена списков псевдонимов, функций и переменных в zsh
  • Полный путь в glob в Zsh
  • Не удалось обновить / обновить пакет Oh-My-Zsh с помощью команды `sudo pacman -S Oh-My-Zsh`
  • Как создать строку с недопустимыми символами юникода, в Zsh?
  • Строка состояния экрана для отображения текущей директории для оболочки zsh / bash
  • Определение псевдонима и его немедленное использование
  • Синтаксис команды повторения в zsh
  • Как использовать замещение параметров в шаблоне glob (zsh)
  • Выполнить команду в режиме zsh vim
  • Вставка из буфера обмена в vi-enabled zsh или bash shell
  • Linux и Unix - лучшая ОС в мире.