"hi"스트림은 내 프롬프트가 stdin
아닌 프롬프트에 인쇄 됩니다.stdout
아니요, "인쇄"로 인쇄 되지 않았습니다stdin
.
return 키를 누르면 hi
명령 으로 실행되지 않습니다 . 커서가 프롬프트를 표시하는 동안 배경이 echo
인쇄 된 것 hi
입니다.
아마도 다음 과 같은 주요 개행 을 인쇄하고 싶을 것 (sleep 1m && echo -e '\nhi' &)
입니다. ( echo
쉘에서 필요에 따라 조정 하거나 printf
이식성을 위해 사용하십시오 .)
나는를 넣어 &
당신은 또한의 "노이즈"를 피할 수 있도록 백그라운드 작업 "부인"로 서브 쉘 내부 [1]+ Done
. 로 &&
명령 사이 &
가 기다리는 멀리 대신 쉘 프롬프트를 오른쪽으로 돌려, 그래서 전체 화합물 명령 체인에 적용 sleep
당신이 얻을 것 같은 출구(sleep 1; echo ... &)
다음과 같은 상황이 발생합니다 (1 초 지연).
peter@volta:~$ (sleep 1 && echo -e '\nhi' &)
peter@volta:~$
hi
# cursor is at the start of this empty line.
Bash는 echo
인쇄 된 것을 알지 못 하므로 프롬프트를 다시 인쇄하거나 화면을 정리해야한다는 것을 모릅니다. 당신은 수동으로 할 수 있습니다 control-L
.
bash echo
가 끝나면 프롬프트를 다시 인쇄하도록 쉘 함수를 작성할 수 있습니다. 그냥 일을 echo "$PS1"
어떤 이미 입력 된 문자를 재현하지 않습니다. kill -WINCH $$
내 시스템에서 화면을 지우지 않고 프롬프트 행을 다시 인쇄하도록 프롬프트를 다시 인쇄하기 위해 bash를 얻습니다 hi
. WINdow 크기가 변경되면 SIGWINCH가 자동으로 전송되고 bash의 응답은 원하는 것을 수행합니다.
다른 쉘과 함께 작동 할 수도 있지만이 100 % 휴대용 / POSIX를 만들려고하지는 않습니다. ( 불행히도, 이것은 bash4.3이 아닌 bash4.4에서만 작동하거나 알지 못하는 일부 설정에 따라 다릅니다 )
# bash4.4
peter@volta:~$ (sleep 2 && echo -e '\nhi' && kill -WINCH $$ &)
peter@volta:~$ ljlksjksajflasdf dfas # typed in 2 seconds
hi
peter@volta:~$ ljlksjksajflasdf dfas # reprinted by Bash because of `kill -WINCH`
수면 인수와 메시지를 취하는 쉘 함수로 이것을 쉽게 마무리 할 수 있습니다.
bash 4.3은 SIGWINCH 후에 프롬프트를 다시 인쇄하지 않으므로 작동하지 않습니다. 나는 한 shopt -s checkwinsize
두 시스템에서 사용할 수 있지만, 그것은 단지 배쉬 4.4 시스템 (아치 리눅스)에서 작동합니다.
작동하지 않으면 (sleep 2 && echo -e '\nhi' && echo "$PS1" &)
명령 줄이 비어 있으면 "작동" 할 수 있습니다. ( PROMPT_COMMAND
설정된 가능성도 무시합니다 .)
나중에 타이머가 작동 할 때 터미널에서 출력하는 것을 터미널에서 출력 할 수있는 확실한 방법은 없습니다. 에서 무언가를 스크롤하는 중이라면 less
쉽게 놓칠 수 있습니다.
대화 형 결과가있는 것을 찾고 있다면 오디오 파일을 재생하는 것이 좋습니다. 예를 들어 mpv
(MPlayer2의 멋진 포크) 와 같은 명령 줄 플레이어를 사용 합니다. 또는 비디오 파일을 선택하여 새 창이 열립니다.
(sleep 1 && mpv /f/share/music/.../foo.ogg </dev/null &>/dev/null &)
echo
새로운 xterm / konsole / gnome-terminal을 열 수도 있습니다 . 명령이 종료 된 후 터미널을 열린 상태로 유지하는 옵션을 사용하십시오.