bash 디렉토리 바로가기

bash 디렉토리 바로가기

내가 입력할 때 , bash가 내가 입력한 전체 디렉토리 경로에 대한 바로가기로서 cd ~foo특정 디렉토리로 나를 데려가기를 원합니다 . 나는 디렉터리 에서 홈 디렉터리로 파일을 복사 할 수 있기를 원합니다 . 기본적으로 나는 정확히 동일한 것을 원 하지만 디렉터리가 무엇이어야 하는지 지정합니다. [JFGI를 해야 한다고 확신하지만 FG를 모릅니다.]foofoocp ~foo/bar.txt ~/bar.txt/foo/~/

답변1

이 작업을 수행하는 데 사용하는 방법은 바로 가기를 실행할 디렉터리에 대한 심볼릭 링크가 있는 디렉터리를 만들고 해당 디렉터리를 CDPATH에 추가하는 것입니다. CDPATH는 디렉토리를 변경할 때 검색할 위치를 제어하므로 cd해당 심볼릭 링크 디렉토리가 CDPATH에 있는 경우 cd모든 심볼릭 링크 디렉토리로 즉시 이동할 수 있습니다.

mkdir ~/symlinks
ln -s /usr/bin ~/symlinks/b
export CDPATH=~/symlinks
cd b   # Switches to /usr/bin

물론 단점은 현재 디렉터리에 "b"라는 디렉터리가 있으면 작동하지 않는다는 것입니다. 해당 디렉터리는 CDPATH보다 우선합니다.


나는 일반적으로 "먼저 쉘을 전환해야 합니다"라는 대답을 좋아하지 않지만 이것은정밀한기능이 존재합니다ZTE, 대신 사용하려는 경우 호출됩니다.이름 디렉터리. 변수를 내보내고 이를 foo참조하면 ~foo값이 로 확인됩니다 $foo. 이는 다음 명령과 함께 사용할 수 있으므로 특히 편리합니다 cd.

echo hi > /tmp/test
export t=/tmp
cat ~t/test   # Outputs "hi"

답변2

래퍼 함수를 ​​작성하고 cd"cd"라고 부를 수 있습니다(결국 함수는 키워드를 builtin cd사용하여 builtin호출됩니다 ). 함수가 이를 볼 때까지 Bash가 명령줄에서 확장하지 않는 접두사 문자를 사용할 수 있으며 이는 ":"와 같은 디렉터리 이름의 초기 문자로 나타날 가능성이 적습니다. 더 강력하게 만들고 싶을 수도 있지만 다음은 간단한 개요입니다.

# format: [semicolon] shortcut colon destination [semicolon] ...
export CDDATA='foo:/path/to/foo;bar:/path/to/bar;baz:/path/to/baz'

cd () {
    local dest=$1
    if [[ $dest == :* ]]
    then
        [[ $CDDATA =~ (^|;)${dest:1}:([^;]*)(;|$) ]]
        dest=${BASH_REMATCH[2]}
    fi
    if [[ -z $dest ]]
    then
        cd
    else
        builtin cd "$dest"
    fi
}

cd :bar    # pwd is now /path/to/bar

답변3

배쉬와 함께:

~foo사용자 foo의 홈 디렉토리용으로 예약되어 있습니다. 단지 편의를 위해 사용자를 생성하는 것은 권장하지 않습니다.

당신의 삶을 더 쉽게(또는 더 어렵게) 만들 수 있습니다.디렉토리 변경환경 변수를 설정합니다 CDPATH( 참조 bash(1)).

그 외에 제가 생각할 수 있는 유일한 방법은 축약하려는 디렉터리에 대해 환경 변수를 설정하는 것입니다.

$ FOODIR=/var/lib/misc
$ cp ~/bar.txt $FOODIR

답변4

~c한 가지 방법은 원하는 경로 로 대체하여 cd에 대한 별칭을 만드는 것입니다 . 아니면 그냥 zsh를 사용하세요;)

관련 정보