CLI 도구의 출력을 실시간으로 전처리하는 방법은 무엇입니까?

CLI 도구의 출력을 실시간으로 전처리하는 방법은 무엇입니까?

문맥상 제가 하고 싶은 것은 REPL에 전처리기를 추가하는 것입니다. 더 구체적으로는 nix repl.

그 이유는 출력에 다음과 같은 형식 지정 단계를 추가하고 싶기 때문입니다.

$ nix repl
Welcome to Nix 2.17.1. Type :? for help.

nix-repl> ↵

nix-repl> { a = 1; b = 2; c = 3; } ↵
{ a = 1; b = 2; c = 3; }
$ nix repl
Welcome to Nix 2.17.1. Type :? for help.

nix-repl> ↵

nix-repl> { a = 1; b = 2; c = 3; } ↵
{ 
  a = 1; 
  b = 2; 
  c = 3; 
}

REPL 외부에서는 를 통해 이 작업을 수행할 수 있으므로 nixfmt < <(echo "{ a = 1; b = 2; c = 3; }")REPL의 모든 출력을 실시간으로 전처리할 수 있다면 조건부로 서식을 적용할 수 있다는 생각이 듭니다.

unbuffer, stdbuf, , 파이프를 다양한 방법으로 사용해 보았지만 socat모든 시도에서 다음 명령이 실행될 때까지 STDIN이 사라지거나 아무것도 표시되지 않거나 TAB 완료가 중단되었습니다. 답변이 너무 다양해서 어떤 답변을 자세히 조사해야 할지 모르겠습니다. 어쩌면 내가 도구를 잘못 사용하고 있을 수도 있고, 도구가 올바른 도구가 아닐 수도 있고, 실제로 REPL 바이너리를 수정하지 않고서는 이것이 불가능할 수도 있습니다. 누구든지 나를 올바른 방향으로 가리킬 수 있다면 매우 감사하겠습니다.

답변1

nix repl이를 수행하는 구현된 방법이 없는 것 같습니다. 모든 repl 출력은 표준 출력으로 이동합니다.

nix repl태그로 시작하는 줄 사이의 모든 내용이 nix-repl>전달 되도록 stdout의 출력을 사후 처리하는 프로그램을 빌드하거나 nixfmtNix의 repl 코드 자체에 빌드해야 합니다.

전자가 얼마나 진부한지 고려하면 후자가 더 나을 수도 있다.

관련 정보