Czy mogę skrócić pisanie potrzebne do `cd` w niektórych dobrze znanych katalogach


11

Czuję, że otwieram terminal, a potem dużo CD na tym samym katalogu, którego ścieżka jest bardzo długa.

Oznacza to, że dużo gram na CD i używam tej zakładki, aby przyspieszyć.

Byłoby świetnie, gdybym mógł mieć jakiś link do tego katalogu, a następnie po prostu cd do tego, aby szybko znaleźć się w głęboko zagnieżdżonym katalogu.

czy to możliwe?


1
Mam kilka skryptów (bash), które wykonują małe (powiązane) zadania, takie jak cd'ing do projektu github i uruchamianie git status. Mam też pewne aliasy .bash_profile. Nie dokładnie to, o co prosisz, ale powiązane.
keyser

Odpowiedzi:


24

Oto sposób na radzenie sobie ze skomplikowanymi ścieżkami cdczęsto.

mkdir ~/Links
ln -s /complexpath/there ~/Links

stworzy to dowiązanie symboliczne

~/Links/there

Aby korzystać z tej nowej Linksskutecznie katalogu, jeśli Twój login shell jest bash tylko to polecenie w twojej ~/.profile(który jest używany przez wszystkie muszli stylu Bourne'a bash, ksh, zsh...):

CDPATH=~/Links:.
export CDPATH

Oznacza to, że za każdym razem cdtwoja powłoka będzie szukać w 2 katalogach, aby znaleźć lokalną nazwę ścieżki:

~/Links
.

Nie musisz ponownie uruchamiać sesji, aby ją przetestować, po prostu uruchom:

. ~/.profile

co oznacza po prostu przeczytaj mój ~/.profile. (Nie musisz go umieszczać w swoim, ~/.bashrcponieważ nie trzeba powtarzać tej samej inicjalizacji zmiennej, jeśli jej nie zmienisz).

Po jego przetestowaniu będziesz mógł ponownie rozpocząć sesję;).

Od teraz za każdym razem, gdy będziesz chciał do niego przejść there, będziesz musiał wpisać:

cd there

To najbardziej eleganckie ogólne rozwiązanie, jakie widziałem. I zazwyczaj zrobić aliasy dla wspólnych destynacji (jak aliasing cdorasię cd $ORACLE_HOMEi takie ...)
bmike

Czy ktoś byłby zainteresowany zwykłym odpowiednikiem za pośrednictwem interfejsu Findera?
dan

11

Zdefiniowanie aliasu jest bardzo łatwym sposobem na uzyskanie krótkiego skrótu dla dłuższego polecenia. Gdy masz odpowiednie aliasy, możesz utworzyć sekcję w pliku .bashrc (lub innym pliku startowym), aby nie trzeba było wpisywać tych aliasów dla każdej nowej powłoki:

w .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

itp.

Wyloguj się i zaloguj ponownie (lub po prostu uruchom . ~/.bashrc), a teraz możesz po prostu wpisać httpdlogi wykona on CD. Lub ws4faktycznie wykonuje polecenie ssh itp.

Eliminuje to potrzebę tworzenia (dużej liczby) pustych linków, które sprawią, że Twój katalog domowy również będzie wyglądał jak bałagan.


10

Spróbuj użyć automatycznego skoku lub z .

Po zainstalowaniu jednego z nich jesteś cdnormalny, a oni uczą się najczęściej odwiedzanych katalogów i umożliwiają przejście do nich, wpisując tylko część ścieżki:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Wolę z tych dwóch.


nie wiem o autojump, ale skały skryptowe „z”!
Kris,

7

Bardzo polecam fasd, który jest podobny do autojump i z, ale lepszy IMHO. Ze strony:

Fasd (wymawiane podobnie do „szybkiego”) to narzędzie zwiększające produktywność z linii poleceń. Fasd oferuje szybki dostęp do plików i katalogów dla powłok POSIX. Jest inspirowany narzędziami takimi jak autojump, z i v. Fasd śledzi pliki i katalogi, do których masz dostęp, dzięki czemu możesz szybko odwoływać się do nich w wierszu poleceń.

Nazwa fasd pochodzi od domyślnych sugerowanych aliasów f (pliki), a (pliki / katalogi), s (pokaż / szukaj / wybierz), d (katalogi).

Fasd szereguje pliki i katalogi według „frecency”, to znaczy zarówno według „częstotliwości”, jak i „aktualności”. Termin „frecency” został po raz pierwszy wymyślony przez Mozillę i użyty w przeglądarce Firefox (link).


4

Alternatywnie możesz utworzyć alias. Rzuć następujące w coś takiego jak .bashrc lub .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Następnie upewnij się, że dowolny plik, w którym się znajduje, to sourced. Moje aliasy są w .bashrc, które pozyskuję za pomocą tej linii w .bash_profile: source ~/.bashrc


2

Dodawanie wygodnych dowiązań symbolicznych jest w porządku dla specjalnego katalogu lub dwóch, ale bardzo szybko staje się trudnym zarządzaniem. O wiele lepszym rozwiązaniem jest użycie doCDPATHbash tego celu zmiennej środowiskowej , dostępnej na i innych powłokach.

CDPATHto oddzielona dwukropkami lista (jak PATH) miejsc, w których można szukać nazwy katalogu. Może zawierać zarówno bezwzględne, jak i względne ścieżki. Mój ustawił na coś takiego export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Dzięki tej konfiguracji mogę pisać cd pdftools z dowolnego miejsca i zabierze mnie to ~/projects/pdftools. (Z dowiązania symbolicznego, musiałbym wpisać cd ~/pdftoolsgdybym nie był w moim katalogu domowym.) Mogę również skrót do podkatalogów: cd pdftools/bin.

W ..moim CDPATHpozwala mi pisać cd sisterdirzamiast cd ../sisterdir, itp. Jak można się spodziewać, kiedy tworzę nowe katalogi w dowolnym miejscu, CDPATHzostaną one automatycznie odnalezione cd- nie trzeba tworzyć nowych dowiązań symbolicznych ani aliasów.

Ta funkcja staje się jeszcze przyjemniejsza, jeśli używasz bash_completionpliku dystrybuowanego, np. Z systemami Debian. Nie przyszedł z moim systemem OS X, więc pobrałem kopię i działa dobrze. (Get go brew, lub po prostu go pobrać ręcznie z tutaj ). Plik ten definiuje ulepszenia do poleceń zakończeniu, tak że mogę pisać cd pdf<TAB>, a pdftoolskatalog jest znaleziony i rozszerzony z dowolnego miejsca na CDPATH.


1

Jasne: utwórz dowiązanie symboliczne

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut


1

Możesz też spróbować zainstalować skorupę ryby.

http://fishshell.com/

Ma to doskonałą prognozę dla poleceń. Pozwala także inteligentnie pisać bez rozróżniania wielkości liter, bez żadnych problemów.

Minusem ryb jest to, że ma swój własny język skryptowy i nie są kompatybilne z bash.


1

Wszystko, co robię, to wpisz „cd”, a następnie przeciągnij folder z Findera do terminala, który wklei pełną ścieżkę. Być może nie jest tak elegancki, ale działa dla wszystkich folderów w porównaniu do kilku wcześniejszych skrótów?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.