Bash 전체 출력이 끝나면 새 줄이 뜹니다.

Bash 전체 출력이 끝나면 새 줄이 뜹니다.

그래서 저는 종종 앱을 백그라운드로 푸시하고 앱 간에 전환합니다. 나는 fg가 탭을 완전히 정의하지 않았다는 것을 깨달았습니다.

그래서 jobs 명령의 제안을 기반으로 완전한 fg 탭을 신속하게 구성할 수 있다고 생각했습니다. 흥미로운 프로젝트처럼 보였기 때문에 비슷한 것이 이미 온라인에 존재하는지 확인하지 않았습니다. 이것은 지금까지 내 코드입니다.

job(){
  readarray COMPREPLY < <(jobs -l)
  for i in "${!COMPREPLY[@]}"; do
      printf -v pad %*s -$COLUMNS "${COMPREPLY[i]}"
      COMPREPLY[i]="%"${pad//[][]}
  done
}

문제는 각 제안 끝에 새 줄 문자(^j)가 있다는 것입니다. 예를 들면 다음과 같습니다.

%1 53967 vim^J를 중지했습니다

%2 54257 Python^J를 중지했습니다.

%3 54499 중지됨(신호) nano^J

%4- 42270 vim 중지 ~/.bashrc^J

%5+ 47434 vim 중지 ~/.bashrc^J

답변1

readarray 의 동의어 help mapfile:

옵션:
-t 읽은 각 줄에서 후행 DELIM(기본 개행)을 제거합니다.

뒤따르는 새 줄을 잘라내려면 readarray 호출에 이 옵션을 추가하세요.

관련 정보