콘솔에 모든 명령을 입력하기 전에 “clear”를 실행하도록 bash를 구성 할 수 있습니까? 할 때마다 명령 을 실행하도록 bash를 구성

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

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



답변

Bash에는 precommand hook이 있습니다. 일종의.

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

답변

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

그런 다음 return글을 쓰지 않고 누를 때마다 \n줄의 시작 부분으로 clear;이동 하고 텍스트를 입력 한 다음 끝으로 이동하여 \n예상대로 입력하십시오 .


답변

오늘 내가 물었던 질문에서 ( @aecolley의 답변에 대한 크레딧으로 ) :

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

\C-m의 ‘입력’키를 시뮬레이션 \C-l시뮬레이션 Ctrl+l이 분명하고 같이 \C-j있다 “줄 바꿈 및 들여 쓰기”명령은 Ctrl 키 + 1 및 Ctrl 키 + J 키를 입력 구속력이 있도록

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


답변

원할 때만 지우기를 고려하십시오.

cb4() {
  preexec () {
    clear
  }
}

이것은라는 후크를 사용하고 preexeczsh에서도 작동합니다.

그런 다음 모든 명령을 실행하기 전에 자동으로 지우려는 세션 : cb4

확실하다면 항상 모든 상황에서 정리하고 싶습니다

preexec () {
  clear
}

실제로 터미널을 재설정하려는 경우

단어를 clear바꾸다tput reset

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