별칭을 사용하여 터미널 제목 이름 바꾸기 및 응용 프로그램 실행

별칭을 사용하여 터미널 제목 이름 바꾸기 및 응용 프로그램 실행

터미널 제목의 이름을 바꾸고 응용 프로그램을 실행하는 명령을 만들려고 이 명령을 .bash_aliases 파일에 추가했습니다. 내가 사용하고 있는 이름 바꾸기 명령은 다음과 같습니다. PS1='\[\e]0;test\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 단독으로 사용하고 응용 프로그램을 실행한 후 예상대로 작동합니다. 하지만 다음과 같은 명령을 사용하면:

alias rpcs3="PS1='\[\e]0;test\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' && ./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage"

후자의 명령을 사용하면 다음 예와 같이 애플리케이션이 닫힌 후에만 터미널 제목이 변경됩니다.

신청서를 닫기 전에

앞으로


신청서를 닫은 후

뒤쪽에

어떻게 해야 합니까?

답변1

쉘 프롬프트는 프로그램이 완료될 때까지 기다리기 때문에 이 별칭은 작동하지 않습니다.

이 문제에 대한 해결책은 먼저 명령을 호출 ./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage하고 백그라운드에서 실행하는 것입니다.

alias rpcs3="./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage & PS1='\[\e]0;test\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '"

명령이 백그라운드에서 실행된다는 점을 고려하여, 키를 누르면 Enter쉘 프롬프트로 돌아갑니다(제목은 미리 설정되어 있으므로 더 이상 문제가 되지 않습니다). 포그라운드 프로세스로 돌아가려면 ./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage다음 명령을 사용해야 합니다 fg. 현재 셸의 백그라운드에서 어떤 작업이 실행되고 있는지 확인하려면 내장 명령/shell 을 사용할 수 있습니다 jobs. 예를 들어:

$> jobs -l
#Output
[1]   Running                 gnome-calculator &
[2]-  Running                 gnome-calculator &
[3]+  Running                 nautilus &

포그라운드 프로세스로 돌아가려면 다음을 nautilus사용할 수 있습니다.

fg 3
#You can also specify the `command name` instead of the ID.

귀하의 경우에는 백그라운드에 프로세스가 하나만 있을 것입니다( ./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage). 따라서 간단하게 fg 1.

답변2

제목을 변경하기 위해 힌트를 사용하려고 합니다. 이는 응용 프로그램이 종료될 때만 제목이 변경된다는 의미입니다. 더 나은 접근 방식은 스크립트에서 제목을 직접 변경하는 것입니다.

#!/bin/sh
title='this is a test'
base='/PATH/TO/THE/ABSOLUTE/LOCATION/OF/rpcs3'    # Fixme

[ -n "$TERM" ] && printf "\033]0;%s\007" "$title"
exec "$base/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage"

이 스크립트를 경로(보통 )의 어딘가에 넣고 $HOME/bin실행 /usr/local/bin가능하게 만듭니다. 그런 다음 다른 프로그램처럼 호출할 수 있습니다. 예를 들어 이 파일을 호출하면 dorpcs3다음과 같이 실행됩니다.

애플리케이션이 종료된 후 헤더가 재설정되지는 않지만 기본 쉘 프롬프트가 이 작업을 수행합니다.

관련 정보