Czy mogę dodać skrót do zastąpienia ścieżki w systemie Linux?

33

Na przykład zawsze idę do tej ścieżki:

/ user / coś / somefolders / gdzieś

ale nie chcę pisać

cd / użytkownik / coś / somefolders / gdzieś

czy w terminalu mogę cały czas mieć krótką rękę? na przykład, czy mogę zrobić coś takiego

cd CommandPlace

zastąpić ścieżkę?

użytkownik 28167
źródło

Odpowiedzi:

32

Możesz użyć CDPATHdo tego zmiennej środowiskowej . Ze strony podręcznika użytkownika Bash:

CDPATH

Ścieżka wyszukiwania dla polecenia cd. Jest to rozdzielona dwukropkami lista katalogów, w których powłoka szuka katalogów docelowych określonych przez polecenie cd. Przykładowa wartość to „.: ~: / Usr”.

W twoim przypadku możesz ustawić

export CDPATH=.:/user/something/somefolders

w ~/.bashrc, a następnie wpisanie cd somewherezabrałoby cię do /user/something/somefolders/somewhere(zakładając, że somewherew bieżącym katalogu nie ma katalogu o nazwie ).

Alternatywnie, jeśli nie chcesz odwoływać się do folderu somewherejego prawdziwą nazwą, możesz utworzyć ukryty katalog, który zawiera symboliczne łącze /user/something/somefolders/somewherez nazwą, której chcesz użyć. Może także zawierać linki do innych często odwiedzanych katalogów. Następnie ustaw CDPATHścieżkę do tego ukrytego katalogu. Chociaż należy zauważyć, że z tego sposobu, jeśli ciebie cd somewhere, a potem cd .., będziesz skończyć w ukrytym katalogu. To może być dla ciebie problem.

David Z
źródło
41

Dwa skróty, których używam cały czas do takich rzeczy:

Aliasy

alias somedir = 'cd / home / john / www / something /'

Następnie możesz wpisać, somediraby przejść do tego katalogu. Dodaj je do swojego .bashrc.

Linki symboliczne

ln -s / long / path / to / some / other / folder / shortcut

Spowoduje to utworzenie pliku, do /shortcutktórego prowadzą linki /long/path/to/some/other/folder. Następnie możesz wpisać cd /shortcut. Zastrzeżenie polega na tym, że dość szybko wypełnia katalog główny (lub katalog, w którym umieścisz linki). Wolę pseudonimy.

John T.
źródło
miły John!
Gob00st
tak powinno być, ln -s /long/path/to/some/other/folder /shortcutkiedy to zrobiłem odwrotnie, utworzyłem skrót w miejscu, w którym chciałem utworzyć link. Przesłałem zmianę, aby ją zaktualizować.
Elias
1
Co powiesz na katalog w katalogu głównym z krótką nazwą, np. /slI tworzenie w nim skrótów? (tj. ln -s /long/path/to/some/other/folder /sl/shortcut? Nie ma bałaganu w katalogu głównym, a także wizualne przypomnienie, że ścieżka twojego monitu jest dowiązaniem symbolicznym.
RolfBly,
14

Zawsze używam interaktywnego wyszukiwania bash. Spróbuj. Wywołaj go za pomocą ctrl + r i zacznij pisać jakąś część ścieżki, jak gdzieś . Prawdopodobnie pojawi się polecenie cd. :)

Janne Pikkarainen
źródło
9

Spójrz na polecenie „alias”.

W csh:

alias commandplace "cd /user/something/somefolders/somewhere"

W sh:

alias commandplace="cd /user/something/somefolders/somewhere"

Ale podoba mi się rozwiązanie dowiązania symbolicznego:

ln -s /user/something/somefolders/somewhere ~/commandplace 

Uwaga: ln przyjmuje argumenty w tej samej kolejności co cp.

Robert
źródło
9

Inną rzeczą, którą możesz zrobić, jest przechowywanie danej ścieżki w zmiennej środowiskowej. Dodaj następujące wiersze do ~/.profilepliku:

somedir=/user/something/somefolders/somewhere
export somedir

Następnie możesz uzyskać dostęp do katalogu za pomocą

cd "$somedir"
terdon
źródło
1
Jest to zdecydowanie najlepsze rozwiązanie imo, ponieważ można użyć zmiennej do dowolnego polecenia. Jeśli przypiszesz alias, ten alias jest zawsze powiązany z poleceniem takim jak cd ...
BdN3504
To było rozwiązanie, które, jak miałem nadzieję, istniało i którego szukałem. Z powodów podanych przez BdN3504.
inspirednz
1

aliasMetoda opisana przez innych odpowiedzi jest najbardziej bezpośrednią drogą.

Inną opcją jest wypróbowanie automatycznego obniżania , opisanego jako „ cdPolecenie, które się uczy”. Więcej opisu w tym poście LifeHacker .

Doug Harris
źródło