어떤 목적을 위해 정확한 시간을 잠깐 기다릴 때는 타이머라는 도구를 사용한다. 이 타이머는 이제는 흔해서 필요하다면 주면의 아이폰 같은 스마트폰에서 살짝 찾아봐도 쉽게 기능을 찾을 수 있다. 하지만 익숙한 도구에서 바로 타이머를 쓸 수 있다면 그것도 나름 편할 것이다.
그래서 이번 글의 주제는 어떻게 하면 터미널에서 타이머를 이용해 특정 시간이 되면 소리가 나게 할 수 있을까에 관한 것이다.
터미널에서 특정 시간 이후에 소리로 알려주기
해답은 간단하다. sleep
과 say
라는 두 가지 명령을 알고 있다면 쉽게 구현할 수 있다. 아래와 같은 한 줄의 명령어는 10초 후 'done'이라는 말을 읽어준다. 참고로 이후 글에서 나타나는 명령어 예시의 제일 앞의 $
표기는 셸 프롬프트이니 오해 말자.
$ sleep 10 && say done
흔한 두 명령이라 굳이 설명이 필요할까는 잘 모르겠지만 그래도 대충 설명해 보자. 위 한 줄은 아래와 같은 내용을 구성되어 있다.
sleep 10
: 10초간 대기한다.&&
: 앞의 명령이 성공으로 끝나면 이후의 명령이 실행된다.say done
: 맥 내장 TTS로 "done"이라고 읽어준다.
따라서 숫자만 바꾸면 원하는 시간만큼 타이머를 돌릴 수 있다.
참고로 say
명령은 한글 및 한국어도 지원한다.
$ sleep 240 && say "지금 주인님의 젓가락을 기다리는 컵라면이 애타게 불고 있어요."
정말 쉬워서 마음대로 쓰는데 무리는 없을 것 같다.
사실 위의 커맨드는 타이핑하기에 그리 짧은 커맨드는 아니다. 만약 손으로 직접 치는 게 너무 귀찮으면 셸 스크립트로 만들어 두면 아주 약간 더 편해진다. 개인 용도라면 인자 프로세싱이나 오류 처리는 귀찮으니 다 무시하고 아래와 같이 대충 짜도 될 것 같다.
#!/bin/bash
sleep $1 && say $2
이 내용을 PATH
환경변수에 포함된 디렉터리에 파일로 저장해 두고 아래와 같이 실행 퍼미션을 부여해 주자. 아래 예시는 path/to/mytimer.sh
라는 경로의 파일에 작성해 둔 상태다.
$ chmod a+x path/to/mytimer.sh
이후엔 아래와 같이 쓸 수 있다.
$ mytimer.sh 240 "3분짜리 컵라면은 이미 불어터졌을 거예요."
커맨드가 아주 약간 짧아졌으니 아주 약간 덜 귀찮아졌을 거라 생각된다.
물론 아무리 수를 써도 전용 GUI 타이머가 더 편할 거다. 그러니 차라리 아이폰에서 타이머를 빠르게 찾아서 쓸 수 있도록 훈련하는 게 더 유익할 지도 모르겠다. 안드로이드는 써 본 적이 없어서 잘 모르겠지만 아마도 위젯 같이 더 편하고 빠르게 타이머를 쓸 수 있는 방법이 있을 것 같다. 참 영양가 없는 기록이 되어버리는 표현 같지만 사실은 사실이니 어쩔 수 없다.
여담으로 원래는 osascript로 알림도 표시하고 싶었지만 왜인지 최근의 macOS에서는 알아낸 스크립트가 동작하지 않는 듯했다. 알림을 표시하는 데 필요한 요구사항이 좀 복잡해진 모양이다. 필요하다면 terminal-notifier 같은 외부 도구를 설치해서 사용할 수도 있을 것 같은데 왜 이렇게 복잡할까.
어쨌든 이 글은 이걸로 마무리한다.
'기술적인 이야기 > 터미널 및 셸' 카테고리의 다른 글
터미널에서 JSON 데이터 예쁘게 보기 (0) | 2024.10.03 |
---|---|
셸 프롬프트를 간결하게 바꿨다 (0) | 2024.02.10 |
셸 스크립트에서 인자 입력 처리하기 (2) | 2023.12.07 |
셸에서 텍스트 치환하기 (feat. sed) (0) | 2023.12.06 |
macOS 터미널에서 QR코드 생성하기 (3) | 2023.11.11 |
댓글