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
}
}
이것은라는 후크를 사용하고 preexec
zsh에서도 작동합니다.
그런 다음 모든 명령을 실행하기 전에 자동으로 지우려는 세션 : cb4
확실하다면 항상 모든 상황에서 정리하고 싶습니다
preexec () {
clear
}
실제로 터미널을 재설정하려는 경우
단어를 clear
바꾸다tput reset
tput
선택 사항이지만 재설정 프로세스 속도를 높입니다.