쉘 스크립트는 실행 후 프롬프트를 포기하지 않습니다.

쉘 스크립트는 실행 후 프롬프트를 포기하지 않습니다.

ta보이는 모든 창에서 주어진 명령을 실행하도록 설계된 tmux(모든 사람용)를 사용할 때 호출되는 명령을 다시 만들려고 합니다. 하지만 이 경우에는 현재 작업 공간에 보이는 모든 쉘이 사용 중이므로 구현되었습니다. 이제 창 관리자를 타일링합니다.

이 작업을 수행하는 데 필요한 누락된 부분을 얻었습니다.이전 질문.

명령은 간단하게 작동합니다. 먼저 신호를 포착합니다( SIGUSR2이 경우에는 이 질문에 대한 조언을 기반으로 함).

그런 다음 명령을 보내고 싶을 때 다음을 수행합니다.

  • 구성된 위치의 파일에 명령을 작성하고 작업공간의 보호 조항을 확인합니다.
  • 모든 쉘에 신호 보내기(이 경우 zsh)
  • 이로 인해 쉘이 구성된 위치에서 스크립트를 가져옵니다.
  • 쉘이 현재 작업공간에 있는 경우에만 실행됩니다.

캡처 명령(다음에 추가 ~/.bashrc:

# Add trap for ta command
export USR2_COMMAND_FILE=$HOME/.ta_executable
export TA_SHELL="zsh"
trap '[[ -r $USR2_COMMAND_FILE ]] && . $USR2_COMMAND_FILE' USR2

스크립트( ~/dir/in/$PATH/ta):

#!/bin/bash

to_execute="$@"
workspace="$(xdotool get_desktop)"
script="if [[ \"$workspace\" == \"\$(xdotool get_desktop)\" ]]; then $to_execute; fi"
script_location="$USR2_COMMAND_FILE"

echo $script > $script_location

for pid in $(pgrep "$TA_SHELL"); do
    kill -SIGUSR2 $pid
done

문제는 명령이 모든 쉘에서 실행된다는 것입니다하지만그런 다음 프롬프트를 포기하는 대신 (그것이 올바른 표현입니까?) 해당 쉘로 이동하여 수동으로 눌러야하는 것 같습니다. <enter>다양한 방법을 시도했지만 아무것도 작동하지 않는 것 같습니다.

프롬프트를 삭제하려면 어떻게 해야 하나요?

관련 정보