bash 스크립트 또는 별칭(예: $(!!))을 사용하여 HISTORY의 디렉토리에 CD를 넣습니다.

bash 스크립트 또는 별칭(예: $(!!))을 사용하여 HISTORY의 디렉토리에 CD를 넣습니다.

종종 내 파일 시스템에 있는 파일의 디렉터리로 변경하고 싶지만 파일이 어디에 있는지 잘 모르겠습니다.

저는 다음과 같이 검색합니다.

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")"; }

변화 "." 적절한 디렉토리에 ("~" 아마도)

관련 정보