내 Ubuntu 16.04 상자에 Android 장치를 연결할 때 대화 형 터미널에 텍스트를 인쇄하려고합니다.내 bash 트랩 처리기를 즉시 실행할 수있는 방법이 있습니까?
내가 가진 해결책은 시스템의 모든 bash 프로세스에 kill -SIGUSR1
을 전송하는 스크립트를 실행하는 사용자 정의 udev 규칙과 관련됩니다.
udev에 규칙 :
ACTION=="add", SUBSYSTEM=="usb", ENV{adb_user}=="yes", RUN+="/bin/bash /script/location/onconnect.sh %k"
onconnect.sh :
if [[ ${*} != *":"* ]]; then
for p in $(ps -U username | grep bash | cut -d" " -f1); do
kill -SIGUSR1 $p
done
fi
위의 작품. 그러나 내 터미널에 Enter 키를 누르면 내 환경에만 적용되는 트랩 처리기가 호출되는 것 같습니다. 명령을 기다리고 즉시 인쇄하는 bash 스레드를 인터럽트 할 수있는 방법이 있습니까? 내 명령 행에서
...
function deviceadded() {
echo "you've plugged in a device!"
}
trap "(deviceadded&)" SIGUSR1
...
, 그것은 좀 다음과 같습니다
신호가 발생할 때 :[~]$
[~]$ you've plugged in a device!
[~]$ _
그러나, 텍스트가 아니라 내 트랩을 설치하는 데 사용하는 .rc 파일은 다음과 같습니다 내가 진입 한 후 표시됩니다. 나는 전에 bash를 사용하지 않았다. trap
, 그래서 그것의 가능한 나는 단지 그것이 어떻게 작동하는지 오해하고있다. 즉시 인쇄 할 수있는 방법이 있습니까?
더 좋은 방법이 있나요?
편집 : udev 규칙 및 udev 대상 스크립트가 추가되었습니다.
내 시스템에서 메시지가 즉시 표시되지만 리턴 키를 누른 후에 프롬프트 만 다시 표시됩니다. 그것은 당신도 경험하는 것입니까? – Fred
@Fred 아니, 나를 위해 나는 무엇이라도보기 전에 들어가야 만한다. 그런 다음 메시지가 인쇄 된 다음 Enter 키를 다시 눌러 내 프롬프트를 다시 표시해야합니다. 당신이보고있는 행동은 제가 생각하기에 더 가깝습니다. udev 규칙과 대상 스크립트를 포함하여 게시물을 업데이트했습니다. 아마도 거기에 지연이 있습니까? – awm129