필요한 경우에만 제거를 고려하십시오.

필요한 경우에만 제거를 고려하십시오.

clear터미널에 특정 명령을 입력할 때마다(실행하기 전) 특정 명령을 실행하도록 bash를 구성하고 싶습니다 . 어떻게 해야 하나요?

저는 데비안 리눅스를 사용하고 있습니다.

답변1

Bash에는 사전 명령 후크가 있습니다. 일종의.

preexec () {
  clear
}
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return                     # do nothing if completing
    [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
    local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`; # obtain the command from the history, removing the history number at the beginning
    preexec "$this_command"
}
trap 'preexec_invoke_exec' DEBUG

답변2

bind 'RETURN: "\e[1~clear; \e[4~\n"'

return그 이후에는 그냥 쓰는 것이 아니라 누를 때마다 \n줄의 시작 부분으로 이동하여 텍스트를 입력한 clear;다음 끝으로 이동하여 \n예상대로 입력합니다.

답변3

오늘 내가 물은 질문에서 (사용자에게 크레딧을 제공합니다.@aecolley의 답변):

bind '"\C-m": "\C-l\C-j"'

\C-m'Enter' 키를 시뮬레이션합니다 . 분명히 \C-l시뮬레이션되는 것은 "개행 및 들여쓰기"이므로 이 명령은 Enter 키를 Ctrl+l & Ctrl+j에 바인딩합니다.Ctrl+l\C-j

GNU bash 버전 3.2.53(1)-릴리스(x86_64-apple-darwin14)에서 작동하지만 이 스레드의 다른 답변은 작동하지 않습니다. 또한 이는 다른 명령처럼 "clear" 명령으로 기록을 오염시키지 않습니다.

답변4

필요한 경우에만 제거를 고려하십시오.

cb4() {
  preexec () {
    clear
  }
}

이것은 라는 후크를 사용하며 preexeczsh에서도 작동하는 것으로 확인되었습니다.

그런 다음 각 명령을 실행하기 전에 모든 세션을 자동으로 지우고 싶습니다.cb4

모든 상황에서 항상 지우기를 원한다고 확신한다면

preexec () {
  clear
}

정말로 단말기를 재설정하고 싶다면

단어를 clear다음으로 바꾸십시오.tput reset

tput선택사항이지만 재설정 프로세스 속도를 높일 수 있습니다.

관련 정보