현재 bash 세션을 기록에 저장하지 마십시오.
열 때 .bash_history
이전 세션의 항목 만 포함되어 있음을 알 수 있으며 현재 세션은 종료시에만 추가되는 것 같습니다. 현재 세션이 저장되지 않도록하는 방법이 있습니까? 충돌조차도 bash
방법을 안다면 옵션입니다. 나는 내가 kill -9
그 과정을 할 수 있다는 것을 알았지 만 더 좋은 방법이 있다면 내가 알고 싶어하는 것입니다.
bash 충돌보다 더 우아한 방법은 history -c
명령을 사용 하여 현재 세션의 기록을 지우는 것입니다. 그런 다음 저장할 것이 없습니다 (기록에서 자체적으로 지워짐).
$HISTFILE
변수 설정 해제
$ unset HISTFILE
HISTFILE이 설정되지 않았거나 히스토리 파일이 쓸 수없는 경우 히스토리가 저장되지 않습니다.
http://www.faqs.org/docs/bashman/bashref_106.html
나는 이것이 오래된 스레드라는 것을 알고 있습니다. 완료를 위해 이것을 추가하고 싶었습니다.
당신은 단지 특정 명령을 원하는 경우에 경우에 체크를 저장하지 HISTCONTROL
변수가 설정됩니다 HISTCONTROL=ignoreboth
또는HISTCONTROL=ignorespace
선행 공백으로 시작하는 모든 명령은 기록에 포함되지 않습니다.
내 2 센트.
와 유사한 다른 옵션이 history -c
있지만 현재 세션 이전의 항목을 지우지 않습니다.
그것은이다 history -r
으로부터 역사를 다시로드하는, HISTFILE
방금 로그인 한 경우처럼.
이것이 작동하는지 또는 4.3.11 이전의 bash 버전에서 사용할 수 있는지는 모르겠지만 목록에 포함하는 것이 유용 할 것입니다.
다음은이 명령과 명령의 차이점을 보여주는 예입니다 -c
.
user@host:~$ # I Just logged in
user@host:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one
4679 2014-08-23 17:15:29 # Previous session
4680 2014-08-23 17:15:33 # Still the previous session
4681 2014-08-23 17:15:37 # note the datetime
4682 2014-08-23 17:15:44 exit
4683 2014-08-23 17:17:25 # I Just logged in
4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session
user@host:~$ # This is a secret command, so I need to remove the traces of this session
user@host:~$ history -r
user@host:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command
6242 2014-08-23 17:15:29 # Previous session
6243 2014-08-23 17:15:33 # Still the previous session
6244 2014-08-23 17:15:37 # note the datetime
6245 2014-08-23 17:15:44 exit
6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command
user@host:~$ history -c # instead if I issue history -c
user@host:~$ history # everything disappears
5248 2014-08-23 17:23:13 history # everything disappears
user@host:~$
그렇게해야합니다.
HISTFILE=
HISTFILE을 설정 해제하십시오.
다음은 나를 위해 작동합니다.
export HISTFILE=/dev/null
앞에 공백이 있습니다. 대부분의 최신 배포판은 bash 히스토리에 공백 뒤에 입력되는 명령을 추가하지 않습니다. 그것은 당신의 역사에도 그 선이 나타나지 않게 할 것입니다.
다음은 bash 히스토리 툴킷입니다.
아무것도 쓰지 않고 bash 종료
kill -9 $$
이것은 해키하고 공격적입니다. 그러나 간첩 세션을 끝내는 것은 재미있는 방법입니다.
기억에서 기록 지우기
history -c
이것은 모든 역사의 기억 을 지 웁니다 . 위쪽 화살표를 치면 아무것도 얻지 못합니다. 당신 은 그대로입니다. 당신은 이것을 증명할 수 있습니다 ...$HISTFILE
디스크에서 기록 다시로드
history -r
이것은를 다시 $HISTFILE
읽고 메모리의 히스토리에 추가합니다 (있는 경우). 이전 명령에 대한 + 검색 또는 위쪽 화살표 history -c
기능을 다시 얻기 위해이 작업을 수행 할 수 있습니다 . (로그 아웃했다가 다시 로그인하는 대신이 작업을 수행 할 수 있습니다.)CtrlR
참고 : 기록을 먼저 지우지 않은 경우 메모리의 현재 기록에 추가됩니다. 이것은 역사 를 모호하게 하여 위쪽 화살표를 몇 번 치면 숨기고 싶은 것이 사라 졌다고 생각하는 데 편안함을 줄 것 입니다. 실제로 그것은 그냥 묻혀 있고 당신의 $HISTSIZE
또는 보다 더 깊지 않으면 디스크에 기록 될 것입니다 $HISTFILESIZE
.
기록에 포함하지 않고 명령 실행
echo foo bar baz; history -d $(history 1)
This uses history -d
to delete an entry by number. Since only the first argument is used (and others are ignored) we can use the output of history 1
(which is identical to history | tail -n 1
) to get the number of the current entry.
Because bash oneliners are single history entries, you can do multiple commands like so:
echo foo; echo bar; echo baz; history -d $(history 1)
This also works:
echo foo \
bar \
baz; history -d $(history 1)
Even this works:
for x in foo bar baz; do
echo $x
done; history -d $(history 1)
Delete your password (a command, etc.) from your history
If all you are concerned about is getting rid of a single entry, you can use the previous example creatively. Use history
to find the number of the entry to delete. Then delete it by number. For example...
$ history
1 pwd
2 date
3 sudovisudo
4 hunter2
5 man history
6 help history
7 history
$ history -d 4
I hope I don't have to tell you this, but just in case: Don't grep history for your password. If you "really do" need to search history, do history | LESSHISTFILE=/dev/null less
, and explicitly do a /
search.
If you are really embarrassed and want there to be no record of you deleting something from history, you can combined this concept with the last.
history -d 4; history -d $(history 1)
Or to also get rid of the original mistake...
for n in "$(history 1)" 4 3; do history -d $n; done
Notice that you have to cycle over the entry numbers in decending order because each call to history -d
pops the entry out of the list and all subsequent entries' numbers decrease by 1. Also, you have to double quote the subshell because history 1
returns not just the number, but also the command and its arguments, and each would get a separate cycle in the for
loop. But at this point this is turning into a bash
lesson and I'll stop.
참고URL : https://stackoverflow.com/questions/9039107/dont-save-current-bash-session-to-history
'IT Share you' 카테고리의 다른 글
실행중인 모든 스레드를 종료하는 방법은 무엇입니까? (0) | 2020.12.13 |
---|---|
두 개의 동일한 LinearLayouts로 화면을 분할하는 방법은 무엇입니까? (0) | 2020.12.13 |
IHttpActionResult 형식 또는 네임 스페이스를 찾을 수 없습니다. (0) | 2020.12.13 |
PHP에 YouTube 동영상을 삽입하는 방법은 무엇입니까? (0) | 2020.12.13 |
JSF에서 날짜 출력 형식 지정 (0) | 2020.12.13 |