공백으로 시작하면 zsh 쉘 기록에서 이전 명령을 제거할 수 있습니까?

공백으로 시작하면 zsh 쉘 기록에서 이전 명령을 제거할 수 있습니까?

나는 다음을 가지고 있습니다답변 기록에서 라인을 삭제하는 방법은 무엇입니까?. 다음을 수행하면 해당 행( 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는 그것만 표시하고 그 이후에는 아무것도 표시하지 않습니다.

관련 정보