정확히 그렇게 하도록 설계된 추가 기능을 사용하지 않는 것입니다.

정확히 그렇게 하도록 설계된 추가 기능을 사용하지 않는 것입니다.

내 연구에 따르면Z 쉘두 비밀 결사단과 긴밀한 관계를 맺고 있습니다. 출력을 비교할 때 이러한 연결이 분명해집니다.GNU가 만든다bashvs.를 사용할 때 zsh나에 대한 교활한 계획을 방해하기 위해 쉘을 구성하는 방법을 알고 싶습니다.

  1. 에프

    이 파트너십의 목적은 비밀을 눈에 띄게 숨기는 것인 것 같습니다. 다음의 간단한 출력을 고려하십시오 Makefile.

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

    쉘에서 실행 하면 zsh첫 번째 줄이 숨겨집니다. 해시를 이스케이프하는 데는 문제가 되지 않습니다. (a) 첫 번째 줄만 문제가 있고, (b) 파일로 리디렉션하면 제대로 표시되고, 이 시점에서 cat파일을 동일한 터미널로 보내면 문제가 표시되고, (c) 다음과 같은 경우 터미널에서 텍스트를 복사했는데 텍스트가 실제로 거기에 있는데 검은색으로만 나타납니다.

    zsh 및 bash의 makefile 출력

    zsh출력을 기반으로 충분한 정보를 바탕으로 결정을 내릴 수 있도록 비밀 메시지를 숨기는 출력 조작을 어떻게 중지합니까 ?

  2. 프리메이슨

    이 파트너십의 목표는 뒤에서 무슨 일이 일어나고 있는지에 대해 가능한 한 적은 정보를 공개하는 것 같습니다. 이 간단한 Makefile의 출력을 고려해보세요.

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

    zsh쉘에서 이 명령을 실행 하면 개행 문자에 도달하거나 대상이 완료될 때까지 출력이 어딘가에 버퍼링됩니다. 그런 다음에야 모든 것이 터미널로 반환됩니다. 이로 인해 장기 실행 작업이 실제로 작동하면서 무언가를 표시하게 되지만 출력에는 빈번한 줄바꿈이 포함되지 않아 이해하기 어렵습니다. 이에 비해 내가 얻은 결과는 bash훨씬 더 유익합니다.

    ASCII 브로드캐스트

    zsh무슨 일이 일어나고 있는지 볼 수 있도록 출력물을 공개해야 할 때까지 출력물 검열을 어떻게 중단할 수 있습니까 ?

이 중 하나라도 관련이 있으면 GNU Make 4.2.1, Z 쉘 5.2를 사용하고 Termite v12 창의 Tmux 2.4 내부에서 실행하고 있습니다. 내 도트 파일을 다음에서 사용할 수 있습니다.다루기 힘든,멀티플렉서그리고흰개미.

makeSHELL = bash또한 Makefile에 추가해도 아무 것도 변경되지 않으므로 이러한 문제는 내부적으로 실행되는 셸과 관련이 없는 것 같습니다.

답변1

정확히 그렇게 하도록 설계된 추가 기능을 사용하지 않는 것입니다.

이는 Z 셸이 수행하는 작업이 아니라 Z 셸이 수행하는 작업입니다. tmux도 흰개미도 아닙니다.

Prezto 애드온(또는 이와 유사한)을 설치했습니다.녹음의 목적"GNU Make의 출력을 변조하는 것"입니다. 추가 기능 상단에는 다음과 같이 적혀 있습니다.

#
# 출력을 강조 표시합니다.
#
# 작가:
#솔리니오네스쿠<[이메일 보호됨]>
#

보시다시피, 실행하면

테스트를 수행하다
실제 프로그램을 실행하고 있지 않지만 make설치한 추가 기능이 호출되었습니다. make그러면 이라는 명령이 실행됩니다 colormake.

무엇을 해야 합니까 colormake? 이는 make터미널 장치가 아닌 표준 출력 및 표준 오류에서 실행되며 이를 Perl 프로그램에 연결하여 표준 입력을 한 번에 한 줄씩 읽고 처리합니다. 실제로 보이는 모든 효과를 재현할 수 있으며,POSIX 호환 셸에서, 동일한 작업을 수행하여:

/usr/bin/make test2>&1 |
이는 Z 셸과 관련이 없으며 make해당 명령을 대체하는 플러그인을 설치했다는 사실과 관련이 있습니다.

colormake.pl채색이나 코멘트 검출 등을 하지 않고 , 라인의 동작을 한 번 목격하고,POSIX 호환 셸에서달리기:

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

따라서 설치된 추가 기능을 제거하거나 비활성화하십시오.

Prezto는 diff명령도 대체합니다.

추가 읽기

  • 비야르니 루날 에이나르손. 컬러 생산.
  • 소린 이오네스쿠(2012). make. 사전.
  • 소린 이오네스쿠(2012). diff. 사전.

관련 정보