Skrót do przełączania do danego katalogu

12

W terminalu Ubuntu spędzam dużo czasu na przełączaniu się do określonego katalogu przy każdym uruchomieniu komputera. Czy mogę w jakiś sposób ułatwić ten proces? Czy jest jakiś skrót klawiszowy lub jakaś szybka zmiana katalogu, której mogę użyć (np. Szybkie wybieranie w telefonie)?

 eg:
    cd 1:Changes to saved directory one
Deweloper Android
źródło
Cztery lata od zadania tego pytania i do dziś nikt nie wspomniał o CDPATH. :(
kojiro
Podejrzewam, że może to zależeć od twojej konsoli, ale w terminalu Kubuntu znajduje się menu Zakładki, w którym mogę po prostu dodać zakładkę do katalogu i przejść do niego w ten sposób!
Pixel

Odpowiedzi:

12

Istnieją dwie opcje:

  1. Jeśli chcesz znajdować się w określonym katalogu za każdym razem, gdy otwierasz terminal bash, edytuj swój ~/.bashrcplik i po prostu dodaj cd Directoryna przykład wiersz cd ~/Desktop.

  2. Jeśli chcesz mieć kilka skrótów, zawsze możesz użyć zmiennych globalnych, które możesz ustawić w swoim ~/.bashrcpliku w następujący sposób, export a=/tmpa wtedy będziesz w stanie zrobić to, cd $aco cię do tego doprowadzi /tmp.

Pamiętaj, że po edycji .bashrcpliku musisz zrestartować terminal lub otworzyć nowy.

Dan
źródło
3
Aby uniknąć ponownego uruchomienia terminala można użyć source ~/.bashrc, lub krócej, . ~/.bashrc.
Gerhard Burger,
18

Spójrz także autojump, buduje bazę danych z wcześniej odwiedzonymi katalogami, a następnie możesz do niej przejść. Na przykład masz

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

jeśli już go odwiedziłeś, możesz do niego przejść

j workstuff

lub nawet

j stuff

ponieważ działa również z częściowymi dopasowaniami. Jeśli pasuje więcej niż jeden katalog, przejdziesz do tego, który jest najczęściej odwiedzany, jeśli nie jest to ten, którego chciałeś, powtórz polecenie, aby przejść do drugiego.

Jednak jest coraz lepiej! Jeśli masz także katalog

/home/user/stuff

a ty

j stuff 

a potem TabTabTabdostajesz (w kolejności najczęściej odwiedzanych)

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

a następnie wystarczy nacisnąć numer żądanego katalogu!

Aby zainstalować, możesz po prostu użyć, sudo apt-get install autojumpa następnie musisz dodać

source /usr/share/autojump/autojump.bash

do twojego ~/.bashrc.

Więcej informacji tutaj: https://github.com/wting/autojump (także instrukcja instalacji tego z src, który dostaje najnowszą wersję)

Gerhard Burger
źródło
1
crtl + r w terminalu szuka również „częściowych dopasowań” w poprzednich poleceniach. Naprawdę przydatny.
Dan,
6

Aliasy Bash są przydatne do tworzenia skrótów do często uruchamianych poleceń.

  • W ~/.bashrcdodaj linię podobną do poniższej, aby utworzyć alias:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • Zamknij i ponownie otwórz terminal lub uruchom source ~/.bashrc.

  • Od teraz możesz po prostu uruchomić, jump1aby wykonać to długie cdpolecenie.

Zobacz też:

Flimm
źródło
4

Chociaż istnieją już dobre odpowiedzi, pomyślałem, że kompletnie wspomnę o starych pushdi popdwbudowanych wersjach Bash, umożliwiając bardzo szybkie przemieszczanie się między katalogami w głębokich ścieżkach w twoim systemie plików. W przeciwieństwie do autojumpzakładek wspomnianych przez burger.ga , stos katalogów utworzony przy użyciu pushdjest tylko tymczasowy.

Jak zauważa podręcznik GNU , pushdi popdsą wbudowanymi funkcjami Bash do budowy tymczasowego stosu katalogów, który jest

lista ostatnio odwiedzanych katalogów. Wbudowane pushd dodaje katalogi do stosu, gdy zmienia bieżący katalog, a wbudowane popd usuwa określone katalogi ze stosu i zmienia katalog bieżący na katalog usunięty. Wbudowane katalogi wyświetlają zawartość stosu katalogów.

Trochę się przyzwyczaja, ale na tym blogu iw tej witrynie jest wiele przydatnych samouczków . Nie ma osobnych stron podręcznika dla poleceń, ponieważ są one zawarte na stronie podręcznika Bash, ale dla szybkiego odniesienia można wyświetlić stronę GNU Bash .

Najjaśniejsze wyjaśnienie znajduje się w tym bardzo przydatnym artykule i jest dokładnie tak, jak używam pushdi popd:

Po pierwsze, użyj dirslub, dirs -laby wyświetlić katalogi na stosie i dirs -cwyczyścić stos.

W pewnym sensie zakładkę do miejsca, do którego chcesz wrócić, należy wpisać

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

a następnie możesz dodać więcej katalogów do stosu, aby uzyskać listę katalogów jak poniżej, która zawiera 3 wyznaczone foldery i ~folder domowy:

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

W rzeczywistości nie musisz używać od popdrazu, ponieważ usuwa katalogi ze stosu; najlepszą rzeczą do zrobienia jest pushdobrócenie stosu, abyś mógł ciągle przełączać się między katalogami i porządkować je według własnego uznania. Więcej informacji na temat tej użytecznej rotacji stosu znajduje się na stronie podręcznika Bash .

Jeśli masz dokładnie taki układ stosów, jak dirspokazuje powyższa lista, pushd +3przełącza cię do określonego folderu Obrazy i umieszcza go na stosie (jest to +3, a nie +4, ponieważ nie liczysz swojego ~stosu w katalogu):

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

Pytanie brzmi:

~/Pictures/Canon/2012_07_01$

Możesz to robić dalej, nie usuwając ich ze stosu, chociaż wszystkie foldery cd, które dodałeś do stosu katalogów pushd, zmienią stos katalogów.

Po ułożeniu stosu katalogów w żądanej kolejności można popdszybko przewijać katalogi, a następnie powracać do folderu domowego; na przykład z Picturesmożemy wrócić do Downloads:

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

a komunikat brzmi

~/Downloads/folder/interest$

Zasadniczo piękno tego polega na tym, że możesz ustawić stos katalogów i kolejność elementów w nim, pushda następnie, powiedzmy, że masz trzy pliki do edycji w każdym z tych katalogów, możesz natychmiast wrócić do każdego z popdnich, usuwając je ze stosu katalogów. Następnie z ostatnim popdpowrócisz do ~. Staje się to szczególnie przydatne, gdy masz szczególnie głębokie katalogi i możesz go użyć do skonfigurowania stosu katalogów w celu szybkiego przechodzenia między nimi.

Ponadto to pytanie zawiera kilka wskazówek, które mogą być przydatne podczas pracy z wierszem poleceń:

Społeczność
źródło
2

Chociaż istnieje sposób na szybsze wykonanie wiersza poleceń, osobiście poleciłbym użycie rozszerzenia Nautilus o nazwie nautilus-open-terminal.

Najpierw zainstaluj pakiet nautilus-open-terminali dodaj do ulubionych swoje ulubione foldery za pomocą Nautilus. W Nautilus 3.6. * Musisz przejść do menu koła zębatego i wybrać Zakładkę do tej lokalizacji .

wprowadź opis zdjęcia tutaj

Następnie użyj zakładek Nautilus, aby szybciej przechodzić do swoich ulubionych katalogów, po prostu kliknij prawym przyciskiem myszy puste miejsce i wybierz Otwórz w terminalu .

wprowadź opis zdjęcia tutaj

Teraz możesz mieć szybki dostęp zarówno do wiersza poleceń, jak i menedżera plików do swoich ulubionych katalogów.

remjg
źródło
Oryginalny plakat próbuje pracować z terminala i często szybciej jest pracować z terminala.
haziz
1
@haziz: Tak, ale pytania i odpowiedzi AskUbuntu powinny być przydatne nie tylko dla OP, ale szczególnie dla wszystkich osób, które znalazły to w sieci. To dla mnie cenna odpowiedź.
Javier Rivera,
2

ANC został zaprojektowany właśnie dla tego przypadku użycia.

https://github.com/tobimensch/anc

Oto fragment pliku 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]

Pełne ujawnienie: jestem autorem anc.

Tobi
źródło
1

Możesz umieścić alias w pliku .bashrc (lub w pliku konfiguracyjnym ulubionej powłoki - zwykle znajdują się one w katalogu domowym):

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

Przydatny link informacyjny na temat używania aliasów w bash znajduje się tutaj .

haziz
źródło
1

Stworzyłem do tego zestaw funkcji bash i dodałem go do mojego .bash_profile

Scenariusz

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
}

Stosowanie

getFolders

Korzystając z getFolders, masz listę skrótów, opisów i lokalizacji dla każdego folderu. Kiedy używasz getFolders ze skrótem, wyświetli on lokalizację folderu. Możesz uzyskać listę dostępnych folderów i ich opisów, po prostu wywołując getFolders bez parametru

Przykład uzyskania ścieżki folderu

getFolders alias

wyjścia

/path/to/alias/folder

Przykład uzyskiwania dostępnych folderów.

getFolders

wyjścia

alias
- Description of alias
alias2
- Description of alias2

gf

gf to skrót do getFolders

gf alias2

wyjścia

/path/to/alias2/folder

iść do

goto to prosty sposób na przejście do wybranego folderu.

goto alias

wynik

cd został uruchomiony w folderze / path / to / alias /

/ path / to / alias / folder>

Po co mieć wiele funkcji

W sercu Uniksa i Linuksa masz proste funkcje wielokrotnego użytku, które można łączyć ze sobą. Wolę tę metodę, ponieważ nie tylko przenosi cię do wybranej lokalizacji, ale jest funkcją, która przez alias zwraca ścieżkę. Możesz użyć tej funkcji do zrobienia czegokolwiek od tego momentu, jak cd do tej ścieżki.

Michael Warner
źródło
0

Rozważ ustawienie CDPATHzmiennej środowiskowej w pliku .bashrc lub .bash_profile. CDPATH przybiera tę samą formę rozdzielaną dwukropkami, co inne PATHzmienne podobne, i pozwala na cdskróty w znajdowaniu twoich katalogów. Na przykład:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
kojiro
źródło
0

możesz skonfigurować własny skrót do określonego katalogu. Na przykład chcesz przejść do zagnieżdżonego katalogu, zazwyczaj tak jest

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

zwykle używasz polecenia cd, a następnie wpisujesz wszystkie nazwy katalogów lub możesz pominąć pisanie (za pomocą przycisku TAB), ale nadal zajmuje to kilka minut.

Aby zaoszczędzić czas , możesz utworzyć jego alias w terminalu. Jego jednorazowe zadanie polega na skonfigurowaniu aliasu.

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

Teraz wystarczy użyć nazwy aliasu ( dir-target ), aby przejść do katalogu docelowego.

sanjay mundhra
źródło
0

Najszybszym sposobem, jaki znalazłem, jest xd program „eXchange Directories” napisany przez Holendra o nazwisku Frank B. Brokken.

Działa poprzez znalezienie wszystkich ścieżek w systemie plików, które mogą przekształcić się w wpisany skrót, np. ulbMogą oznaczać, /usr/local/binjeśli taki folder istnieje w twoim systemie:

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

Po naciśnięciu 2 jesteś w /usr/local/bin .

To naprawdę stare oprogramowanie i nie jest już dostępne w oryginalnej lokalizacji, bez kontaktu z autorem, więc aby zapobiec jego utracie, umieściłem je w repozytorium Github:

https://github.com/mrkafk/exchange_directories

LetMeSOThat4U
źródło
-1

Używam do tego DirB (Directory Bookmarks). Bardzo dobrze! http://www.linuxjournal.com/article/10585

Zmodyfikowałem mój, aby pasował do mojego gustu, ale jest łatwiejszy w użyciu i bardziej przejrzysty.

fstephens
źródło
Witamy w Ask Ubuntu! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
fossfreedom