set 디렉토리의 프로젝트에서 많은 작업을 수행합니다. 때로는 몇 달이 지나서 그 프로젝트에서 무언가를 다시 실행해야하지만 내가 한 일을 기억하지 못하는 경우가 있습니다. 수은 또는 git을 사용하여 파일의 변경 사항을 추적 하지만 해당 디렉토리에서 어떤 명령을 실행했는지 기억하고 싶습니다.
내 쉘 히스토리를 검색하는 것은 그리 유익하지 않습니다. 나는 이미 모든 것을 내. * _ history 파일에 기록하지만 ~ / foo / bar에서 한 일의 목록을 원하지만 그 주에 한 다른 (백만) 일이 모두 필요하지 않습니다. 나는 그 특정 프로젝트에서 마지막으로 몇 달을 일했는지 기억조차 못합니다.
누구든지 내가 사용한 모든 쉘 명령의 프로젝트 디렉토리 로그 파일에 대한 아이디어가 있습니까? 다음과 같은 명령을 구상하고 있습니다.
workon myproject
… 셸 로그 파일을 ~ / myproject / .history.log로 설정하고 해당 로그 파일에서 이전 기록을로드 한 다음 작업중인 디렉토리를 알려주도록 프롬프트를 업데이트 할 수 있습니다 (예 : vcprompt와 같이 버전 제공) 제어 정보).
이와 같은 것이 있습니까?
답변
아직 이해하지 못한 경우 : 훌륭한 virtualenvwrapper 패키지가 필요합니다. 그것은 파이썬의 virtualenv (go figure)를 감싸는 래퍼 이며 파이썬 환경을 취할 때 일반적으로 언급되지만 실제로는 사용 사례를 충족시키는 매우 일반적인 도구입니다.
설치
pip install virtualenvwrapper
또는
easy_install virtualenvwrapper
쉘 설정에 초기화 항목을 추가하십시오 ( ~/.zshrc, ~/.bashrc
)
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$WORKON_HOME/projects
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
source /usr/local/bin/virtualenvwrapper.sh
용법
# create your env
mkvirtualenv my_project
# edit per project hooks
vim ~/.virtualenvs/my_project/bin/{postactivate,preactivate,predeactivate,etc}
# work in this env
workon my_project
또한 ~/.virtualenvs/{postactivate,postdeactivate,etc}
매번 호출되는 일반 후크가 있습니다 workon any_project
.
따라서, 예를 들어, 광고 갖는 export HISTFILE="$VIRTUAL_ENV/bash_history"
에서 ~/virtualenvs/postactivate
후크 수단을 것이 $HISTFILE
변수는 다른 프로젝트마다 확장 될 것이다.
답변
나도 이것을 필요로하고 Bash의 PROMPT_COMMAND 변수 를 사용하는 버전을 생각해 냈습니다 .
변수 PROMPT_COMMAND의 값은 Bash가 각 기본 프롬프트를 인쇄하기 직전에 검사됩니다. PROMPT_COMMAND가 설정되고 널이 아닌 값을 갖는 경우, 값은 명령 행에 입력 된 것처럼 실행됩니다.
~ / .bashrc.my의 PROMPT_COMMAND = “check_for_local_history”라고 말하면 check_for_local_history
, 마지막으로 실행 된 명령이 디렉토리 변경인지 확인하는 기능이며, 사실이면 새 현재 디렉토리에서 .bash_history 파일을 확인합니다. . 이 파일이 있으면 기록 파일로 사용하십시오.
전체 요점은 다음과 같습니다. https://gist.github.com/gurdiga/dac8d2e7eb3056d6b839
답변
제품의 하위 패키지 작성 프레임 워크에 사용하는 한 가지 트릭은 하위 셸을 사용하는 것입니다.
bash의 경우 다음과 같은 쉘 스크립트를 작성할 수 있습니다.
#!/bin/bash
export PROJECT_DIRECTORY=$(pwd)
exec bash --rcfile $HOME/.project-bashrc
그런 다음에 다음 $HOME/.project-bashrc
과 같은 것을 넣으십시오.
source $HOME/.bashrc
export HISTFILE="${PROJECT_DIRECTORY}/.bash_history"
cd "${PROJECT_DIRECTORY}"
또한 .project-bashrc
파일 에서 프롬프트를 사용자 정의 할 수있어 편리합니다.
에서 동일한 작업을 수행하는 방법을 잘 모르겠습니다 zsh
. ZDOTDIR
변수 를 재정의해야 한다고 생각합니다. 그러나 비슷하게 보일 것입니다.
챠오!
답변
내 기록 스크립트를 살펴보세요 여기를 . 이들 중 하나를 사용하면 각 명령을 실행할 때 사용중인 디렉토리를 추적 할 수 있습니다. grep
명령 또는 기타 정보에 대한 로그 파일을 사용할 수 있습니다 . 나는 집과 직장에서 긴 버전을 사용합니다.
답변
zsh 용 directory-history 라는 플러그인에 관심이있을 수 있습니다 .
여기를보십시오 : https://github.com/tymm/directory-history
workon myproject 워크 플로우 에는 실제로 맞지는 않지만 요구 사항에 완벽하게 맞아야합니다.
디렉토리를 포함하는 히스토리를 작성합니다.
히스토리를 검색 할 때는 먼저 현재있는 디렉토리에서 명령을 가져옵니다.
해당 디렉토리에 남아있는 명령이 없으면 글로벌 히스토리로 돌아가서 다른 디렉토리에서 사용되는 명령을 제안합니다.
답변
간단한 것을 원한다면 .history.log
파일을 다음과 같이 가질 수 있습니다 .
#!/bin/cat
some
relevant
commands
그런 다음 파일을 실행하면 파일에 cat
나열된 명령이 실행 됩니다.
기능별로 규칙에 따라 해당 명령을 별도의 파일로 그룹화 할 수도 있습니다.
.howto.datadump
.howto.restart
이는 즉시 사용하고 환경을 오염시키지 않는 이점이 있습니다.
답변
디렉토리의 로컬 히스토리 파일을 얻으려면 bash prompt 명령에 다음 줄을 추가했습니다.
if [ -f .local_history ] ; then tail -1 $HISTFILE >> .local_history ; fi
touch .local_history
그런 다음 디렉토리 의 명령 은 주 기록 파일을 잃지 않고 해당 디렉토리에서 실행 된 모든 명령에 대한 로컬 기록 파일을 제공합니다. zsh에서 비슷한 것이 작동한다고 생각합니다.