모든 터미널 출력 앞에 특정 문자를 추가할 수 있습니까?

모든 터미널 출력 앞에 특정 문자를 추가할 수 있습니까?

예를 들어, ll 명령을 실행하고 싶다고 가정해 보겠습니다.

내 출력은 다음과 같습니다

josh@zeitgeist ~ ll
total 41148
drwxr-xr-x 42 josh josh     4096 Aug  4 22:52 ./
drwxr-xr-x  4 root root     4096 Jul  9 21:18 ../
-rw-rw-r--  1 josh josh  3523718 Jul 11 00:17 2017-07-11-001710_3840x2160_scrot.png

하지만 나는 다음과 같이 보이기를 원합니다.

josh@zeitgeist ~ ll
   total 41148
   drwxr-xr-x 42 josh josh     4096 Aug  4 22:52 ./
   drwxr-xr-x  4 root root     4096 Jul  9 21:18 ../
   -rw-rw-r--  1 josh josh  3523718 Jul 11 00:17 2017-07-11- 001710_3840x2160_scrot.png

PS1='XXX'를 사용하여 프롬프트를 변경하는 방법을 이미 알고 있습니다. 표시된 출력의 각 줄을 변경할 수 있는 방법이 있습니까?각 명령에 대해, 특히 터미널에서(출력을 변경하고 파일에 넣지 않고)?

이렇게 해서 터미널 왼쪽에 문자 들여쓰기 줄이 생기도록 하고 싶습니다. 저는 현재 공상과학 스타일 데스크탑을 만드는 작업을 하고 있는데, 제가 하고 있는 일 중 하나는 터미널 배경 이미지를 사용하여 제목도 없고 경계선도 없는 urxvt 터미널 창 주위에 독특하고 불규칙한 테두리를 만드는 것입니다. 유일한 문제는 출력이 창의 왼쪽 가장자리에 바로 맞고 표시하려는 배경 부분을 덮기 때문에 모든 출력의 시작 부분에 공백을 추가하는 방법을 알 수 없다는 것입니다. URxvt InternalBorder와 externalBorder를 사용해 보았지만 터미널 하단과 오른쪽 가장자리의 배경 이미지를 가리고 있었습니다.

답변1

이건 어때. 시작하다새로운 bash로 파이프되는 프로세스 awk. 파이프로 연결된 각 줄은 $0(입력 줄) 앞에 몇 개의 공백을 인쇄합니다.

$ bash | awk '{print "  " $0}'
$ id
  uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
$ uname -a
  Linux ip-172-31-37-61 4.9.38-16.33.amzn1.x86_64 #1 SMP Thu Jul 20 01:31:29 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$

관련 정보