bash history를 사용하여 공백이 접두어로 실행되는 명령 만 기억하십시오!


10

접두사가 공백 인 터미널에서 실행 된 명령은 명령 기록 파일에 기록되지 않습니다. 그러나 역전을 얻는 방법이 있습니까? 즉, 역사는 접두사가 붙은 것을 기록해야합니까?

답변:


12

두 개의 변수 (HISTIGNORE HISTCONTROL)를 설정하여 기본 우분투 설정을 되돌릴 수 있습니다. 다음과 같은 명령을 사용하십시오.

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredups히스토리 동작을 변경하여 중복 행만 무시하고 공백으로 시작하는 행은 무시하지 않습니다. ( HISTCONTROL=중복을 유지하려면 HISTCONTROL을 빈 문자열 ( )로 설정할 수도 있지만 일반적으로 원하지는 않습니다.)

HISTIGNORE='!( *)'공백으로 시작하지 않는 모든 행을 히스토리에서 무시합니다. 공백으로 시작하는 ( *)모든 행과 일치하지만 행은 공백을 무시 !하므로 공백으로 시작하지 않는 모든 항목과 일치합니다. 그리고 HISTIGNORE 패턴과 일치하는 모든 것은 역사에서 무시됩니다. (이 후자의 옵션을 사용하려면을 extglob켜고 bash를 실행해야 shopt -s extglob하지만 Ubuntu의 기본 설정입니다.)

이것을 영구적으로 만들고 싶다면 위의 두 명령을에 넣으십시오 ~/.bashrc.


내가 .. 원에 대한 변경 사항을 저장 정확히 무엇을 감사 .bashrc.. 난 그 모든 기록에서 떠들썩한 파티를 방지하기 위해 필요한 cd들, lsS와 I가 사용하는 다른 일상 명령; 역사상 필요한 몇 가지 명령에 대해서는 이제 접두사를 사용할 수 있습니다.
정확한

1
@rusty 사소한 명령 만 제외하려는 경우와 같은 것을 사용 HISTIGNORE='ls*:cd*'하면 역사가 ls또는로 시작하는 모든 행을 무시하게됩니다. 또는 cd다른 명령으로 해당 목록을 확장 할 수 있습니다 :. 명령 사이에 넣으십시오. . 그러나 "위쪽 화살표 키"로 액세스 할 수있는 명령 호출 기능도이 히스토리를 사용하므로 무시하도록 설정하면 "무시 된 명령을 호출 할 수 없습니다. 위쪽 화살표 "
falconer

SSH 명령은 무시하고 싶지만 ssh-copy-idor 같은 명령은 무시하고 싶었습니다 ssh-keygen. 에서 다른 무시 된 명령과 함께 HISTIGNORE" ssh\ *"을 (를) 포함했습니다 . 공백 문자를 피하는 것이 필수 인 것으로 보입니다.
user38537

2

" 접두사가 공백 인 터미널에서 실행 된 명령은 명령 기록 파일에 기록되지 않습니다 "

그렇습니다.

터미널 역사


1
bash ;-)의 설정입니다.
Rinzwind

`sudo apt-get update`와 같이
Avinash Raj

HISTCONTROL 변수의 값은 무엇입니까?
glenn jackman

@AvinashRaj : 예, "이 기록은 기록되지 않았습니다"라는 명령을 보았습니다. 공백을 넣었습니다 (명령 줄과 기록에 모두 표시됨). 그래서 그것은 작동하지 않습니다. HISTCONTROL을 사용하여 구성 할 수 있습니다. 그러나 기본적으로 그렇지 않습니다.
MrVaykadji
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.