)%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20HISTORY%EC%9D%98%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%20CD%EB%A5%BC%20%EB%84%A3%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
종종 내 파일 시스템에 있는 파일의 디렉터리로 변경하고 싶지만 파일이 어디에 있는지 잘 모르겠습니다.
저는 다음과 같이 검색합니다.
find -type f -name "myfile.txt"
단순화를 위해 이것이 하나의 결과를 반환한다고 가정해 보겠습니다.
/some/super/long/path/that/i dont/want/to/type/myfile.txt
나는 보통 다음과 같이 입력합니다.
cd $(dirname $(!!))
내가 찾고 있던 파일의 디렉토리로 전환하려면....
어쨌든 이것을 쉘 스크립트나 별칭에 넣을 수 있으므로 기본적으로 다음을 입력할 수 있습니다.
cdlast
그리고 그것은 실행됩니다 :
cd $(dirname $(!!))
쉘의 HISTORY를 사용하고 있습니까? 시도해 봤는데 bash 스크립트에 쉘 기록이 누락된 것 같습니다.
답변1
fc -s
이전 명령을 다시 실행합니다.
alias cdlast='cd "$(dirname "$(fc -s 2> /dev/null)")"'
또는 다음을 사용하십시오 eval "$(history -p !!)"
.
alias cdlast='cd "$(dirname "$(eval "$(history -p !!)")")"'
답변2
별칭을 사용할 수 있습니다.
alias cdlast='cd "$(dirname "$(eval $(history -p !!))")"'
거기에 큰따옴표가 있는지 확인하세요. 이는 공백이 있는 경우 명령 대체 결과가 별도의 단어로 분할되는 것을 방지하고 및 같은 특수 문자가 있는 경우 와일드카드 패턴으로 해석 *
됩니다 ?
.
답변3
나는 다음과 같은 함수를 사용하겠습니다.
gotofile () { pushd "$(find . -name "$1" -printf "%h\n")"; }
변화 "." 적절한 디렉토리에 ("~" 아마도)