파이프의 프로그램이 tty가 있다고 생각하도록 만듭니다.

파이프의 프로그램이 tty가 있다고 생각하도록 만듭니다.

테스트 환경:

$ mkdir testdir
$ cd testdir
$ echo | tee "file 
name"

이제 (적어도 Ubuntu GNU bash에서는) 별도의 줄에 인쇄 ls됩니다 .file?namels | catfilename

내가 달성하고 싶은 것은 file?name인쇄에 파이프 버전을 사용하는 것입니다.

$ something ls | cat` or `ls | something | cat` or `ls | something cat

즉, ls실제로는 TTY가 없는데 쉘에 TTY가 있다고 생각하도록 여기와 같은 명령을 속이는 방법은 무엇입니까?

노트: ls다음은 샘플 프로그램입니다. 특정 프로그램이 아닌 일반적인 솔루션을 찾고 있습니다 ls -q | cat.

답변1

당신은 그것을 사용할 수 있습니다socat의사 터미널(pty) 시뮬레이션:

socat - EXEC:'ls --color=auto',pty,setsid,ctty | cat

더 많은 옵션이 있으니 확인해 보세요문서.

ls기본적으로 열 출력에는 터미널 너비가 사용됩니다. socat pty에서 이것을 설정하는 방법을 찾지 못했습니다. 해결 방법은 lsoptions 을 사용하는 것입니다 -w WIDTH.

관련 정보