터미널 '시크릿 모드'?


230

터미널을 많이 사용하고 때로는 다른 사람들이보고 싶지 않은 명령을 실행하고 있지만 실수로 위로 향하고 실수로 실행되면 많은 문제가 발생할 수있는 더 많은 명령이 있습니다.

그래서 어떤 명령을 실행할 때 내 기록 기록을 중단 한 다음 기록을 시작할 수있는 일종의 터미널 '시크릿 모드'가 있는지 궁금합니다. 기록 기록을 다시 시작 명령을 실행하고 '시크릿 모드'를 종료합니까, 아니면 단순히 터미널을 다시 시작합니까?

나중에 내 .bash_history에서 물건을 제거하고 제거하는 것에 대해 나 자신을 발견했기 때문에 처음부터 녹음을 중지하거나 적어도 그렇지 않은 곳에서 녹음하려고 시도하면 훨씬 쉬울 것입니다. 허용하고 녹음하지 않습니다.


6
아마 당신은 다른 사람들이 당신의 역사를 읽을 것이라는 편집증 입니까?
Sparhawk

6
@Sparhawk : 글쎄, 그것은 부분적으로 그 일이며, 파티는 미래에 화살표를 맞을 때 치명적인 유지 관리 명령을 실수로 실행하고 싶지 않습니다! : D

19
추가하기 만하면 " 자신을 정당화 할 필요는 없습니다. "다른 사람들이보고 싶지 않은 것은 아닙니다 " . 그것은 나에게도 완벽한 이유 일 것입니다. (특히 모든 사람들이 "숨길 것"때문에 유죄 인 것처럼 보이게 만드는 시대와 시대에)
ereOn

2
두 개의 탭을 열고 첫 번째 탭에서 작업을 수행하고 두 번째 탭에서 작업을 수행 한 다음 첫 번째 탭 이전에 두 번째 탭을 닫으면 첫 번째 탭의 기록 만에 기록 된 것으로 보입니다 .bash_history. (Ubuntu 15.04가 터미널을 망쳤습니다. 운이 좋은 것은 이것이 라이브 USB입니다.)
Hitechcomputergeek

답변:


265

기록에 넣지 않고 명령을 실행하십시오.

명령 앞에 공백을두기 만하면됩니다. Bash는 앞에 공백이있는 명령을 무시합니다.

예: Spaceecho "Some secret text"

참고 : HISTCONTROL변수가 ignorespace또는 로 설정된 경우에만 작동합니다 ignoreboth.


기록을 일시적으로 비활성화합니다.

  • 실행 Spaceset +o history또는 Spaceshopt -uo history역사를 비활성화 할 수 있습니다.
  • set -o history또는 shopt -so history다시 실행 하십시오.

현재 세션의 기록을 비활성화합니다 (세션의 명령은 기억 나지 않음).

unset HISTFILE

참고 : Up터미널을 닫을 때까지 누르는 명령을 볼 수 있습니다 .


히스토리에서 명령을 제거하십시오.

운영 Spacehistory | grep "part of your secret command"

이전에 실행 한 명령 목록이 다음 형식으로 표시됩니다.

casa@portátil:~$  history | grep pkill
  302  pkill $$
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

명령 왼쪽에서 항목 번호를 선택하십시오. Ctrl+ Shift+로 복사 할 수 있습니다C

실행은 Spacehistory -d <number>어디에서 <number>항목을 제거 할 수있는 항목 번호입니다.
그 숫자를 Ctrl+ Shift+로 붙여 넣을 수 있습니다V


다른 흥미로운 답변 :


7
history -d행을 제거하는 데 사용 하면 행의 내용이 제거되지만 실행 한 사실을 제거 할 수는 없습니다 history -d( set +o history실행하기 전에 처음 사용하지 않는 한 history -d)
AJFaraday

1
그것은 단지 슈퍼 명령 논리를 생각 나게했습니다. 그게 전부입니다.)
AJFaraday

4
(OT) 금지 명령은 사람들이 무언가를 출판하지 못하게하는 법적 문서입니다. 슈퍼 금지 명령은 또한 게시 기능이 거부되었다는 사실을 게시하지 못하게합니다. 일부 논리적 인 주장은 정보를 공개 할 수있는 권한이 거부되었다는 사실을 공개 할 수 있는지 묻습니다. 그런 다음 순환 인수가됩니다.
AJFaraday

1
@Helio 저는 사용자가 "적절한"복사 방법을 아는 것이 더 낫다고 생각합니다. 특히 실수로 텍스트를 선택하는 경우 더욱 그렇습니다. 나는 공간을 어떻게 해야할지 잘 모르겠습니다. 아마도 공간이 있음을 더 분명히 알 수 있습니까? [공간]은 나에게 약간 어색해 보인다 ...
Tim

2
unset HISTFILE방법은 .bash_history아직 작성되지 않은 모든 명령에 대해 소급 적용됩니다 .
kasperd

40

작업 후 명령을 추가하여 특정 터미널 세션 의 기록 간단히 삭제할 수 있습니다 history -cw.

이 명령을 내리기 전에 터미널을 닫지 마십시오.


이것은 모든 역사를 제거하지 않습니까?
Helio

6
특정 터미널 세션의 기록 만 제거합니다.
Moithil Biswas는

28

shopt -uo history 최선을 다해야합니다.

HISTFILE(et al) 변수를 nuking하면 Up기록 기록이 중지 되지 않고 디스크로 푸시되지 않습니다. 이것은 당신에게 긍정적 인 것이거나 아닐 수도 있지만, 당신이 그것을 언급하면, 나는 당신이 더 나은 것을 원한다고 생각합니다. shopt히스토리 설정을 변경하면 전체 히스토리 메커니즘이 트리거되지 않습니다.

shopt -so history( -s-u각각 설정 및 설정 해제)를 사용 하여 로깅을 다시 켤 수 있습니다 .

명령 자체는 기록 될 수 있으므로 변수를 지우기 전에 기록에 추가되지 않도록 공백을 추가하십시오.


17

히스토리 파일에 로깅하지 않고 현재 쉘을 종료하는 다른 방법은 다음과 같습니다.

kill -9 $$

이것은 bash (그리고 아마도 다른 쉘들도)가 SIGKILL 신호를 자신에게 보내서 그 자리에서 죽이고 디스크에 아무것도 쓰지 못하게합니다.


7
일명 '머리에 hoo':). 이것은 명령을 작성하기 전에 아무것도 할 필요가 없다는 장점이 있습니다.
귀도

3
나는 증분 역사 쓰기와 zsh을을 사용하므로, 나는 이것이 내 경우에는 일하는 것이 의심
웨인 베르너

13

현재 세션에 대한 명령 기록을 일시적으로 비활성화하려면 HISTFILE 환경 변수를 일시적으로 설정 해제 할 수 있습니다.

unset HISTFILE

세션이 활성화되어있는 동안 평소와 같이 기록에 액세스 할 수 있지만 디스크에는 저장되지 않습니다.

같은 세션으로 되돌리려면 (모든 변경 사항이 기록됩니다)

HISTFILE=$HOME/.bash_history

1
그리고 현재 세션에서 이것을 역전시키고 그것을 계속하게 만드는 쉬운 방법이 있습니까?

@ParanoidPanda 현재 세션에서 되돌릴 명령을 추가했습니다.
Bruni

1
@ParanoidPanda : HISTFILE현재 세션에서 다시 설정하는 명령이 필요한 이유는 무엇 입니까? 변경을 취소하면 (비밀 명령을 실행 한 후에도) 종료 할 때 기록에 저장됩니다.
Helio

@Helio : 아, 아니요, 다시 녹음을 시작하는 명령을 의미했지만 저장하고 싶지 않은 명령은 저장하지 않았습니다.

1
@ParanoidPanda, Helio는 역사가 출구에 저장되면서 이것에 옳은 것 같습니다. 나는 그 것을 고려하지 않았습니다.
Bruni

10

현재 쉘 세션에서 히스토리 라인을 수정할 수 있습니다. 히스토리를 거슬러 올라가서 (예 : Up또는 Ctrl+ P) 행 을 실행하지 않고 변경 하면 수정 된 버전의 행만 저장됩니다. 원하는 방식으로 수정할 수 있습니다. 좋은 선택은 Ctrl+ U를 사용 하여 줄을 완전히 비우거나 처음에 주석 문자 Esc#를 넣는 것 #입니다.

실행하지 않고 줄을 남기려면 Return( Enter) 를 누르지 마십시오 . 내가하는 것은를 통해 역사상 가장 새로운 줄로 돌아 오는 것입니다 Esc>.

(대신 Esc다음에 >당신이 저장할 수있는 대부분의 단말기에서 Alt키를 누릅니다 >; 동일은 간다 Esc#위의 제안.)

참고 : 이 방법으로 이전 세션의 항목을 영구적으로 수정할 수 없습니다. 이러한 변경 사항은 HISTFILE세션이 끝날 때에 적용되지 않습니다 .


6

.bash_history를 읽기 전용으로 만들 수도 있습니다. 먼저 파일을 비운 다음 수행하십시오.

 chattr +i .bash_history

5

스크린 세션에서 민감한 명령을 실행 한 다음 완료되면 세션을 삭제할 수 있습니다.

또는 해당 화면 세션을 활성 상태로 유지하고 분리 된 상태로 유지하고 실제로 위험한 명령에 대한 화살표를 위쪽으로 올리려는 경우에만 액세스 할 수 있습니다.


1

개인적으로을 사용 mksh하며이 셸에는 기본적으로 기록 파일이 없습니다. 즉 , 사용자가 보지 않으려는 명령을 실행하기 위해 mksh또는 dash(기본적으로 제공되는) 와 같은 대체 셸을 시작 하고 완료되면 종료 할 수 있습니다. bashhistory는 대체 쉘을 시작한 것만 기록합니다.


1

tmux, 와 같은 터미널 멀티플렉서를 사용할 수도 있습니다 screen. 아래 tmux또는 screen이력은 저장되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.