fish
나는 bash가 내가 선호하는 쉘 임에도 불구하고 원격 컴퓨터에서 더 자주 사용하고 있음을 발견했습니다 . Fish에는 Ctrl+C를 누르면 다음과 같은 일이 발생하는 작지만 멋진 기능이 있습니다.
if command running
send SIGINT
else
clear line (don't start a new one)
bash에서 이 작업을 수행할 수 있으면 좋을 것 같습니다.
Ctrl+C를 누른 후 SIGINT를 보내도록 구성된 프로그램에서 SIGINT를 포착하는 것이 포함될 것이라고 생각 stty
하지만 위의 의사 코드를 수행하는 방법을 찾지 못했습니다.
내가 시도한 것
trap 'tput dl1' SIGINT
줄을 지우지만 계속해서 새 줄/프롬프트를 시작합니다(빈 프롬프트에서 Enter 키를 누르는 것과 같음).오직기록을 탐색하지 않은 경우: \
답변1
글쎄, 좀 만지작거린 후에trap
,tput
그리고terminfo
, 내 생각엔 내가 알아낸 것 같아 (다른 질문 주셔서 감사합니다).
단 한 줄만 있는 표준 명령줄의 경우, 예:bash-4.3$ echo something here
trap 'tput dl1; tput cuu1' SIGINT
나에게 필요한 것입니다.
배쉬는 다음을 수행합니다:
- 이 줄 삭제
- 커서를 위로 이동
마지막으로 새 줄을 시작합니다(그래서커서를 위로 이동).
예를 들어 명령줄에 2개 이상의 줄이 있는 경우
name@host /path/to/some/dir
$ echo something here
tput dl1; tput cuu1
그런 다음 여분의 줄을 제거하려면 다른 줄을 추가해야 합니다 -->trap 'tput dl1; tput cuu1; tput dl1; tput cuu1' SIGINT
나는 이것이 어떤 부정적인 영향을 미치는지 알아볼 것이라고 생각했습니다.