벽을 사용하지 않고 원격 컴퓨터에 "메일이 있습니다"와 같은 프롬프트를 보내는 방법

벽을 사용하지 않고 원격 컴퓨터에 "메일이 있습니다"와 같은 프롬프트를 보내는 방법

현재 활동이 시작되고 완료될 때 원격 컴퓨터에 메시지를 표시하기 위해 벽을 사용하고 있습니다. 그러나 이는 열려 있는 편집자 등을 통해 작성하므로 방해가 됩니다.

내가 좋아하는 점은 사용자가 터미널에서 Enter 키를 누르면 다음 줄에 "읽지 않은 메일 메시지가 있습니다"라는 메시지가 나타난다는 것입니다.

이건 뭐죠? 원격으로 어떻게 상호 작용합니까?

답변1

이 줄은 쉘에 의해 인쇄됩니다. 다양한 쉘은 약간 다른 방식으로 메일 찾기를 구현하지만 사람들이 원하는 대로 쉘을 구성할 수 있는 경우가 아니면(다른 쉘을 선택할 수도 있음) 메일을 보내야 합니다.

내장된 이메일 알림 외에도 대화형 사용을 위해 설계된 좋은 셸은 프롬프트를 표시하기 전에 임의의 명령을 실행할 수 있습니다. 사용자에게 파일을 제공 cat하거나 더 복잡한 작업을 수행할 수 있습니다. zsh 사용자의 경우 다음을 입력하세요 ~/.zshrc.

precmd () {
  if [[ /etc/sysadmin-message -nt ~/.sysadmin-message-timestamp ]]; then
    cat /etc/sysadmin-message
    touch ~/.sysadmin-message-timestamp
  fi
}

Bash 사용자의 경우 다음을 입력하세요 ~/.bashrc.

PROMPT_COMMAND='
  if [[ /etc/sysadmin-message -nt ~/.sysadmin-message-timestamp ]]; then
    cat /etc/sysadmin-message
    touch ~/.sysadmin-message-timestamp
  fi
'

답변2

Wall쓰기는 열려 있는 프로그램 전체에서 발생하지만 대부분의 편집기에는 편집기 외부의 화면에 작성된 모든 내용을 정리하는 일종의 "다시 그리기" 명령이 있습니다. 텍스트는 실제로 편집자의 내용을 손상시키지 않습니다.

원하는 것을 수행하려면 precmd()사용자 셸의 기능을 활용하여 창의력을 발휘해야 합니다. 모든 명령 전에 해당 대기열을 확인하려면 일종의 알림 대기열을 작성하고 사용자 셸 구성을 설정해야 합니다. 약간의 오버헤드가 있으므로 이 비트를 작성하는 방법에 주의하세요.

관련 정보