기계가 생성 된 후 쉘 명령의 역사를 찾는 방법은 무엇입니까?


23

몇 주 전에 Ubuntu virtualbox 컴퓨터를 만들고 그 이후로 프로젝트를 진행하고 있습니다.

이제 일주일 전에 터미널에 입력 한 일부 명령의 구문을 찾고 싶지만 터미널 창을 열고 닫은 다음 컴퓨터를 여러 번 다시 시작했습니다.

어떻게 얻을 수있는 history명령을 나는 기계를 만든 후 내가 입력 한 첫 번째 명령에 돌아가?
아니면 모든 명령이 우분투에 저장되는 또 다른 장소가 있습니까?


2
내가 아는 한 당신은 할 수 없습니다. 히스토리 버퍼가 설정된 경우에만 되돌아 갈 수 있습니다. 향후 명령 기록을 무한정 저장하기 위해 어떤 패키지를 설치할 수 있는지 묻는다면 질문을 수정해야합니다.
RobotHumans

답변:


26

모든 명령을 얻는 것이 가능하거나 불가능할 수 있습니다. 실행 한 명령 수와 기록 한도 설정 방법에 따라 다릅니다.

그러나 당신은 역사 목록이 여기에 저장된 것을 볼 수 있습니다

/home/<YOUR_USERNAME>/.bash_history

관련 질문 (여러 쉘 기록을 처리하기위한) :

.bash_history에 즉시 쓸 수 있습니까?


3
기록이 하나의 터미널 / 쉘에서만 저장되는 것은 사실이 아닙니다. 를 실행 history하면 현재 셸 기록이 최신으로 표시되고 그 이전의 다른 모든 셸 (이전 세션의 셸 포함, 전원주기를 포함하여)이 기록됩니다. 모든 쉘 인스턴스는 종료시 히스토리저장합니다.bash_history . 그 시점 이전에는 인스턴스가 자동으로 저장되지 않습니다.
Eliah Kagan

6

기본적으로 ~/.bash_history지난 몇 개의 명령이 포함되어 있지만 모든 명령이 기록되고 무기한 보관되는 곳은 없습니다 (사용하면 bash우분투의 기본 쉘임).

당신이 원하는 경우 모든 에 입력 한 명령 bash기록 영원히 , 당신은 스스로를 설정해야합니다. 예를 들어, 쉘에 ~/.bashrc입력 된 모든 명령을 파일에 기록 하기 위해 파일에 다음을 넣을 수 있습니다 .bash~/.command_log

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

위의 DEBUG명령은 일반 명령이 실행되기 직전에 실행되는 트랩을 설정합니다 . caller내장 명령이 대화 형 쉘에서 입력 또는 같은 것을 통해 실행되는지 여부를 테스트하는 데 사용됩니다 ~/.bashrc. 값 ${BASH_COMMAND}은 현재 실행중인 명령을 포함합니다.


macOS 에서이 기술 update_terminal_cwd은 사용자가 실행하지 않지만 자동으로 실행되는 명령 인 기록 파일 에도 기록 됩니다.
Ashish Ahuja

5

당신이 관심을 가질만한 것은 이전의 명령 히스토리를 검색하는 방법입니다. 을 누른 Ctrl+r다음 일치시킬 문자를 입력 하여 명령 행에서 히스토리를 역으로 검색 할 수 있습니다 . 일치하는 명령이 둘 이상인 경우을 Ctrl+r다시 누릅니다 . 역방향 검색을 종료하려면을 누릅니다 Ctrl+g.

http://www.ice2o.com/bash_quick_ref.html


4

기록 제한이 설정되어있는 경우에만 되돌아 갈 수 있습니다. 해당 시점에 도달하면 기록을 덮어 쓰기 시작합니다. 그러나 향후 더 큰 히스토리 크기를 가질 수 있습니다. 이것을 .bashrc에 넣고 값을 지정하십시오 (광산은 1000으로 설정 됨).

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