나는 다음을 가지고 있습니다답변 기록에서 라인을 삭제하는 방법은 무엇입니까?. 다음을 수행하면 해당 행( echo hello_world
)이 기록에 저장되지 않습니다. 저는 zsh
쉘을 사용하고 있습니다.
prompt$ echo hello_world
> # ^ extra space
$ history | tail -n1
1280 history | tail -n
$ echo hello_world
hello_world
$ history | tail -n1
1280 history | tail -n
그런데 do 뒤에 공백이 있는 명령을 실행하면 에 저장 Ctrl+P되지 않았는데도 셸 기록에서 볼 수 있습니다 history
. 이를 방지할 수 있나요? 쉘 의 경우 bash
이는 set 일 때 작동합니다 HISTCONTROL= ignorespace
.
$ echo hello_world
$ # Press `CTRL-p` => " echo hello_world" shows up again
설정:쉘에 대해 다음 구성이 있습니다
zsh
.
## Save only one command if 2 common are same and consistent
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
## Delete empty lines from history file
setopt HIST_REDUCE_BLANKS
## Ignore a record starting with a space
setopt HIST_IGNORE_SPACE
## Do not add history and fc commands to the history
setopt HIST_NO_STORE
## Add timestamp for each entry
setopt EXTENDED_HISTORY
답변1
Ctrl+P공백으로 시작하고 설정된 경우에도 키를 누르면 이전 명령이 반환되는 관찰된 동작이 HIST_IGNORE_SPACE
문서화되어 있습니다(강조).
HIST_IGNORE_SPACE
(-g
)명령줄의 첫 번째 문자가 공백이거나 확장 별칭 중 하나에 선행 공백이 포함된 경우 기록 목록에서 명령줄을 제거합니다. 전역 또는 접미사 별칭이 아닌 일반 별칭에만 이 동작이 있습니다. 해당 명령은 다음 명령이 입력될 때까지 내부 기록에 남아 있으므로 해당 줄을 잠시 재사용하거나 편집할 수 있습니다. 다른 명령을 입력하지 않고 즉시 사라지게 하려면 공백을 입력하고 Enter 키를 누르세요.
설명서에 따르면 해결 방법은 공백을 입력하고 해당 명령에 다시 액세스하지 Enter못하도록 누르는 것 입니다.Ctrl+P
답변2
이것이 당신이 찾고 있는 것인지 확실하지 않지만 기록에 필요하지 않은 명령을 실행하기 전에 다음을 사용하여 현재 셸에 대해 비활성화할 수 있습니다.
$ 설정+o 기록
그런 다음 ctrl-p는 그것만 표시하고 그 이후에는 아무것도 표시하지 않습니다.