주어진 디렉토리로 전환하기위한 지름길


12

우분투 터미널에서 컴퓨터를 시작할 때마다 특정 디렉토리로 전환하는 데 상당한 시간을 소비하고 있습니다. 이 과정을 더 쉽게 할 수있는 방법이 있습니까? 사용할 수있는 단축 키 또는 빠른 디렉토리 변경 (전화기의 단축 다이얼 등)이 있습니까?

 eg:
    cd 1:Changes to saved directory one

이 질문 이후 4 년이 지난 지금까지 아무도 CDPATH를 언급하지 않았습니다. :(
kojiro 2016 년

나는 이것이 콘솔에 달려 있다고 생각하지만 쿠분투 터미널에는 디렉토리를 북마크하고 그런 식으로 이동할 수있는 북마크 메뉴가 있습니다!
픽셀

답변:


12

두 가지 옵션이 있습니다.

  1. bash 터미널을 열 때마다 특정 디렉토리에있게하려면 ~/.bashrc파일을 편집 하고 행을 추가하십시오 ( cd Directory예 :) cd ~/Desktop.

  2. 여러 개의 바로 가기를 원한다면 항상 전역 변수를 사용할 수 있습니다. 전역 변수 ~/.bashrc는 다음 export a=/tmp과 같이 파일 에서 설정할 수 있습니다. 그러면 다음을 수행 cd $a할 수 있습니다 /tmp.

.bashrc파일을 편집 한 후 터미널을 다시 시작하거나 새 파일을 열어야합니다.


3
터미널을 다시 시작하지 않으려면 source ~/.bashrc또는 더 짧게 사용할 수 있습니다 . ~/.bashrc.
Gerhard Burger

18

또한 살펴보면 autojump이전에 방문한 디렉토리가있는 데이터베이스를 빌드 한 다음 바로 이동할 수 있습니다. 예를 들어

/home/user/this/long/and/annoyingly/deep/directory/workstuff

한 번 방문한 경우 다음으로 이동할 수 있습니다.

j workstuff

또는

j stuff

부분 일치와도 작동하기 때문입니다. 둘 이상의 디렉토리가 일치하면 가장 많이 방문한 디렉토리로 이동하고 원하는 디렉토리가 아닌 경우 명령을 반복하여 두 번째 디렉토리로 이동하십시오.

그러나 더 좋아집니다! 디렉토리가 있다면

/home/user/stuff

그리고 당신은

j stuff 

그리고 TabTabTab당신은 (가장 방문한 순서대로)

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

원하는 디렉토리 번호를 누르면됩니다.

설치하려면 사용 sudo apt-get install autojump하고 추가해야합니다.

source /usr/share/autojump/autojump.bash

당신에게 ~/.bashrc.

자세한 내용은 https://github.com/wting/autojump(src 에서 최신 버전을 얻는 방법)


1
터미널의 crtl + r도 이전 명령에서 "부분 일치"를 찾습니다. 정말 편리합니다.
Dan

6

Bash 별칭 은 일반적으로 명령을 실행하는 바로 가기를 만드는 데 유용합니다.

  • 에서 ~/.bashrc별칭을 만들려면 다음과 같은 행을 추가합니다 :

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • 터미널을 닫았다가 다시 열거 나을 실행하십시오 source ~/.bashrc.

  • 이제부터는 jump1cd명령을 실행 하기 위해 실행할 수 있습니다 .

또한보십시오:


4

좋은 답변이 이미 있지만 파일 시스템의 깊은 경로에있는 디렉토리간에 매우 빠르게 이동할 수 있는 이전 pushdpopdBash 내장 기능의 완전성에 대해 언급했다고 생각했습니다 . burger.ga 에서 autojump언급 한 책갈피 와 달리 , 사용하여 작성된 디렉토리 스택 은 임시입니다.pushd

는 GNU으로 매뉴얼 노트 , pushdpopd배쉬 내장 명령은있는 임시 디렉토리 스택을 구성하는 데 사용됩니다

최근에 방문한 디렉토리 목록. 푸시 된 기본 제공은 현재 디렉토리가 변경 될 때 디렉토리를 디렉토리에 추가하고, 팝업 기본 제공은 스택에서 지정된 디렉토리를 제거하고 현재 디렉토리를 제거 된 디렉토리로 변경합니다. 내장 된 dirs는 디렉토리 스택의 내용을 표시합니다.

그것은 익숙해 조금 걸리지 만, 거기 유용한 자습서의 많음이 거기있는 이 블로그 이와 이 사이트에 예를 들어. Bash 맨 페이지에 포함 된 명령에 대한 별도의 맨 페이지는 없지만 빠른 참조를 위해 GNU Bash 페이지를 볼 수 있습니다 .

분명한 설명에 이 매우 유용한 기사 와 정확히 내가 사용하는 방법 pushdpopd:

첫째, 사용 dirs또는 dirs -l스택에리스트 디렉토리 및 dirs -c스택을 취소 할 수 있습니다.

어떤 의미에서 당신은 입력하여 반환하려는 위치를 북마크

pushd /home/mike/Pictures/Canon/2012_07_01

그런 다음 스택에 디렉토리를 더 추가 할 수 있으므로 3 개의 지정된 폴더와 ~홈 폴더 가 포함 된 아래와 같은 디렉토리 목록이 표시됩니다 .

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

실제로 popd스택에서 디렉토리를 제거 하므로 곧바로 사용할 필요가 없습니다 . 가장 좋은 방법 pushd은 스택을 회전하여 디렉토리간에 계속 전환하고 원하는대로 순서를 지정할 수 있도록하는 것입니다. 유용한 스택 회전에 대한 자세한 내용 은 Bash 맨 페이지를 참조하십시오 .

dirs목록 과 같이 스택 배열이 있으면 pushd +3특정 Pictures 폴더로 전환하여 스택 위에 배치합니다 ( ~디렉토리 스택에서 계산하지 않기 때문에 +3이 아니라 +3이 아님 ).

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

프롬프트가 읽습니다.

~/Pictures/Canon/2012_07_01$

cd를 사용하여 디렉토리 스택에 추가 된 폴더 이외의 다른 폴더 가 디렉토리 스택을 pushd변경 하더라도 스택에서 폴더를 제거하지 않고도이 작업을 계속 수행 할 수 있습니다 .

디렉토리 스택을 원하는 순서대로 정렬하면 디렉토리 popd를 빠르게 순환 한 다음 홈 폴더로 돌아갈 수 있습니다. 예를 들어, 다음으로 Pictures돌아갈 수 있습니다 Downloads.

popd
~/Downloads/folder/interest ~/Music/artist/album ~

프롬프트가 읽습니다.

~/Downloads/folder/interest$

일반적으로 이것의 장점은 디렉토리 스택과 그 안의 항목 순서를 설정 pushd한 다음 각 디렉토리에서 편집 할 파일이 3 개 있다고 말하면 popd제거하면서 각 디렉토리로 즉시 돌아갈 수 있다는 것입니다 디렉토리 스택에서. 마지막으로으로 popd돌아갑니다 ~. 특히 깊은 디렉토리가있을 때 특히 유용하며이를 사용하여 디렉토리 스택을 빠르게 이동하도록 디렉토리 스택을 설정할 수 있습니다.

또한이 질문에는 명령 행에서 작업 할 때 유용한 몇 가지 팁이 포함되어 있습니다.


2

더 빠른 명령 줄 방법이 있지만 개인적으로이라고 불리는 노틸러스 확장을 사용하여 개인적으로 다시 명령합니다 nautilus-open-terminal.

먼저 패키지를 설치하고 nautilus-open-terminal노틸러스로 즐겨 찾는 폴더를 북마크하십시오. 노틸러스 3.6. *에서는 톱니 바퀴 메뉴로 이동 하여이 위치에 북마크 지정을 선택해야합니다 .

여기에 이미지 설명을 입력하십시오

그런 다음 노틸러스 책갈피를 사용하여 즐겨 찾는 디렉토리에서 더 빠르게 이동하고 빈 공간을 마우스 오른쪽 버튼으로 클릭 하고 터미널 에서 열기를 선택하십시오 .

여기에 이미지 설명을 입력하십시오

이제 명령 행과 파일 관리자 모두 선호하는 디렉토리에 빠르게 액세스 할 수 있습니다.


원본 포스터가 터미널에서 작동하려고 시도하고 종종 터미널에서 작업하는 것이 더 빠릅니다.
haziz

1
@haziz : 그렇습니다. 그러나 AskUbuntu 질문과 답변은 OP뿐만 아니라 웹에서이 사실을 발견 한 모든 사람들에게 특히 유용합니다. 이것은 나에게 귀중한 답변입니다.
Javier Rivera

2

anc는 해당 사용 사례에 맞게 설계되었습니다.

https://github.com/tobimensch/anc

다음은 README.md에서 발췌 한 내용입니다.

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

전체 공개 : 저는 anc의 저자입니다.


1

.bashrc 파일에 별명을 넣을 수 있습니다 (또는 좋아하는 쉘의 구성 파일은 일반적으로 홈 디렉토리에 있습니다).

alias cd1="cd directory/directory/my_destination/"

bash에서 별칭 사용에 대한 유용한 정보 링크는 여기에 있습니다 .


1

이를 위해 bash 함수 세트를 작성하여 .bash_profile에 추가했습니다.

스크립트

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

용법

getFolders

getFolders를 사용하면 각 폴더의 속기, 설명 및 위치 목록이 있습니다. 축약 형으로 getFolders를 사용하면 폴더 위치가 출력됩니다. 매개 변수없이 getFolders를 호출하여 사용 가능한 폴더 및 해당 설명 목록을 얻을 수 있습니다.

폴더 경로를 얻는 예

getFolders alias

출력

/path/to/alias/folder

사용 가능한 폴더를 가져 오는 예.

getFolders

출력

alias
- Description of alias
alias2
- Description of alias2

gf

gf는 getFolders의 지름길입니다

gf alias2

출력

/path/to/alias2/folder

이동

goto는 선택한 폴더로 cd하는 간단한 방법입니다.

goto alias

산출

CD가 / path / to / alias / folder에서 실행되었습니다

/ path / to / alias / folder>

여러 기능이있는 이유

Unix와 Linux의 핵심에는 서로 연결 가능한 간단한 재사용 가능한 기능이 있습니다. 이 방법은 선택한 위치로 이동하는 것이 아니라 별칭으로 경로를 반환하는 함수이므로 선호합니다. 이 기능을 사용하여 cd와 같은 지점에서 해당 경로에 이르는 모든 작업을 수행 할 수 있습니다.


0

.bashrc 또는 .bash_profile에서 CDPATH환경 변수 설정을 고려하십시오 . CDPATH는 PATH변수와 같은 다른 콜론으로 구분 된 형식을 사용 cd하며 디렉토리를 찾는 데 바로 가기를 허용합니다. 예를 들면 다음과 같습니다.

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz

0

특정 디렉토리에 대한 고유 한 바로 가기를 설정할 수 있습니다. 예를 들어 중첩 디렉토리로 이동하려면 일반적으로

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

일반적으로 cd 명령을 사용한 다음 모든 디렉토리 이름을 입력하거나 TAB 단추를 사용하여 입력을 건너 뛰어도되지만 여전히 몇 분이 걸립니다.

따라서 시간을 절약하기 위해 터미널에서 별칭만들 수 있습니다 . 별칭을 설정하는 일회성 작업입니다.

별명 dir-target = '/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

지금, 당신은해야 사용할 별명 ( DIR-대상을 대상 디렉토리로 이동합니다).


0

내가 찾은 가장 빠른 방법은 xdFrank B. Brokken이라는 네덜란드 인이 작성한 "eXchange Directories"프로그램입니다.

파일 시스템에서 입력 한 약어로 해석 할 수있는 모든 경로를 찾아서 작동합니다 (예 : 해당 폴더가 시스템에 존재 ulb하는 /usr/local/bin경우 에 해당 될 수 있음) .

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

2를 누르면에 /usr/local/bin있습니다.

그것은 실제로 오래된 소프트웨어이며 더 이상 원래 위치에서 사용할 수 없으며 저자와의 접촉이 없으므로 손실되지 않도록 Github 저장소에 넣습니다.

https://github.com/mrkafk/exchange_directories


-1

이를 위해 DirB (Directory Bookmarks)를 사용합니다. 아주 좋아요! http://www.linuxjournal.com/article/10585

나는 내 취향에 맞게 내 것을 수정하고 사용하기 쉽고 명확합니다.


우분투에 오신 것을 환영합니다! 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
fossfreedom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.