내가 이것을 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
이것자동 점프 유틸리티유사한 메커니즘과 가장 일반적으로 사용되는 디렉토리 목록이 제공됩니다. 그러나 추가로 지루한 타이핑이 필요하지만 j
Space, 이는 그렇지 않은 경우보다 더 자주 정확하게 추측함으로써 보완됩니다.
이것이 가장 가까운 것입니다분산 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