답변:
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
Enter
명령을 실행하기 전에을 누른 후 화면을 지워야합니다 . 그것은 나를 위해 이렇게 작동합니다. 사전 실행 후크는 각 대화식 명령에 대해 실행되며 명령이 내장 명령인지 외부 명령인지 또는 많은 명령인지는 중요하지 않습니다.
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return;
문제가 PROMPT_COMMAND 실제 명령 다음에 갇혀도되고 실행하고 있다는 것이다; 또한 왜 local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`;
여기에 있는지 말해 줄 수 있습니까 ?
history -1
는 마지막 명령 행을 히스토리 번호 앞에 인쇄합니다. sed 필터는 기록 번호를 제거합니다.
bind 'RETURN: "\e[1~clear; \e[4~\n"'
그런 다음 return글을 쓰지 않고 누를 때마다 \n
줄의 시작 부분으로 clear;
이동 하고 텍스트를 입력 한 다음 끝으로 이동하여 \n
예상대로 입력하십시오 .
clear
있습니다.
clear
에는 명령 전에 명령이 실행되고 명령 출력이 사라지지 않는다는 것입니다. 그러나 프롬프트가있는 경우에는 그렇지 않습니다.
clear;
각 여분의 출력에 삽입 합니다 \n
.
bind "\"\\eOQ\":\"\e[1~ls;#\\n\""
시작 부분으로 이동하고 ls;#
거기에 무엇이 있는지 주석을 입력 하고 ls
명령을 올바르게 실행합니다 ! 고마워!
오늘 내가 물었던 질문에서 ( @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'명령으로 기록을 오염시키지 않습니다.