CD에 디렉토리 이름을 입력하기만 하시겠습니까?

CD에 디렉토리 이름을 입력하기만 하시겠습니까?

내가 이것을 20년 전에 어딘가에서 얻었거나 꿈에서 생각해 냈거나 둘 중 하나입니다.

원래:

입력 blobblob하면
blobblob: command not found

그럴 수 있지.

내 쉘에서 이러한 오류(명령을 찾을 수 없음)가 발생하면 해당 이름("blobblob")을 가진 디렉터리가 있는지 확인하고, 그렇다면 cd해당 디렉터리를 가리키도록 하고 싶습니다.

나는 이것을 하지 않거나 주의를 기울여 실수를 저지르는 이유가 있다고 확신합니다.
그냥 정말 깔끔할 것 같아서 어딘가(여기 같은!)에서 길을 찾아서 해보고 싶었어요.

쉘 프로그래밍을 수행하는 방법이 무엇을 의미하는지 모르겠습니다.

답변1

  • 큰 타격: shopt -s autocd
  • 지쉬어:setopt autocd
  • tcsh:set implicitcd

추가적으로 "autojump"도 유용한 도구입니다. 일단 설치되면 디렉토리를 기억하므로 j abc를 입력할 수 있습니다. x/d/f/g/t/abc라고 말하기 전에 abc를 방문한 경우 거기에 CD가 표시됩니다!
https://github.com/joelthelion/autojump

답변2

이것자동 점프 유틸리티유사한 메커니즘과 가장 일반적으로 사용되는 디렉토리 목록이 제공됩니다. 그러나 추가로 지루한 타이핑이 필요하지만 jSpace, 이는 그렇지 않은 경우보다 더 자주 정확하게 추측함으로써 보완됩니다.

이것이 가장 가까운 것입니다분산 WIM나는 그것에 익숙하다.

답변3

이것도 효과가 있고,

cdf name_of_file_or_directory

..셸에서 시작되는 사용자 정의 cdf.sh 스크립트(아래)를 설정했다고 가정합니다. 디렉터리를 인수로 사용하는 경우 이 스크립트는 찾은 디렉터리의 상위 디렉터리만 가져옵니다. .bashrc 또는 .zshrc에 다음 줄을 추가하세요.

source ~/bin/cdf.sh 

그리고 이 코드를 처음부터 새로 생성해야 하는 ~/bin/cdf.sh 파일에 추가하세요.

#!/bin/bash

function cdf() {
    THEFILE=$1
    echo "cd into directory of ${THEFILE}"
    # For Mac, replace find with mdfind to get it a lot faster. And it does not need args ". -name" part.
    THEDIR=$(find . -name ${THEFILE} |head -1 |grep -Eo "/[ /._A-Za-z0-9\-]+/")
    cd ${THEDIR}
}

답변4

이것을 네 안에 넣어라~/.bashrc

  #aliases to cd into the core dirs
  PROJECT_PARENT_DIRS[0]="$HOME/repos"
  #you can make it search more dirs by assigning new indexes to your other root dirs

  for PARENT_DIR in ${PROJECT_PARENT_DIRS[@]} ; do
    if [ -d "$PARENT_DIR" ]; then
      for PROJECT_DIR in $(/bin/ls $PARENT_DIR); do
        if [ ! -z `which $PROJECT_DIR` ]; then
          continue # don't set alias if there is something already a command on the path with the same name
        fi
        if [ -d "$PARENT_DIR/$PROJECT_DIR" ]; then
          alias "$PROJECT_DIR"="cd $PARENT_DIR/$PROJECT_DIR"
        fi
      done
    fi
  done
  #end alias

관련 정보