Mam do czynienia z projektami Java, które często skutkują głęboko zagnieżdżonymi folderami (/ path / to / project / com / java / lang / cokolwiek, itp.) I czasami chcę mieć możliwość przeskoczenia, powiedzmy, 4 poziomów katalogów w górę. Wpisywanie cd ../../../ .. jest uciążliwe i nie chcę linkować. Czy jest jakaś flaga na cd, która pozwala wejść na wiele poziomów katalogów (w mojej głowie byłoby to coś takiego jak cd-u 4)? Niestety nie mogę znaleźć konkretnej strony podręcznika dla cd, zamiast tego otrzymuję bezużyteczną stronę z „wbudowanymi” funkcjami.
linux
command-line
Tossrock
źródło
źródło
cd ...
gdzie liczba „.” byłaby liczba poziomów do przejścia. Czy spowodowałoby to konflikt, którego nie jestem świadomy?zsh
iOh My Zsh
który jest lepszą alternatywąbash
, a następnie można po prostu zrobićcd ...
(kilka punktów), jak powinno byćOdpowiedzi:
Lub ... spróbuj tego: (yay Google)
Zobacz Hack # 2
źródło
..
,...
a....
ponieważ są one szybsze wpisywanie, ale zasada jest taka sama aliasów oczywiście.cd ...
,cd ....
itd. To było bardzo wygodne.Prosta funkcja z aliasem:
(Możesz to zdefiniować,
~/.bashrc
jeśli chcesz, w każdym przypadku).Jest prosty w użyciu:
źródło
eval $(printf "cd ..;%.s" $(seq $1))
, któracd
wiele razy, ponieważ~-
aka$OLDPWD
jest ustawiony do katalogu roboczego sprzed wywołania, zamiast do katalogu pośredniego. PS - upraszcza,cd $(printf %.s../ $(seq "$1"))
jeśli chcesz.Proste, zaawansowane technologicznie rozwiązanie, które nie wymaga żadnej konfiguracji. Działa tylko w powłokach z
bash
edycją poleceń -style.cd ..
źródło
Okazuje się, że poprawną odpowiedzią jest „cd + n”, gdzie n to liczba poziomów, które chcesz przejść. Szkoda, że nie jest to nigdzie udokumentowane!
źródło
dirs
[+ n] jako argument i drukuje n-ty unikalny katalog, który został dodany za pomocąpushd
. Jeślialias
cd
dopushd
, to można to wykorzystać. Zauważ jednak, że technicznie nie jest to odpowiedź na pytanie PO, ponieważ ma to związek z unikalnymi katalogami, co oznacza, że zamówienie zmienia się z czasem, gdy wracasz do tych samych katalogów.pushd
apopd
także wybierz opcję [+ n], dlatego jest w stanie działać. Ponadto, choć jest niedoskonały i pośredni, myślę, że można to wykorzystać jako odpowiedź na pytanie. Często odwiedzałeś ostatnio katalogi nad tobą, więc będą one w ostatnich 10 katalogach przechowywanych przez stos katalogów.Możesz napisać funkcję (musi to być funkcja, ponieważ chcesz zmienić stan samej powłoki, a mianowicie katalog roboczy; polecenie zewnętrzne wpłynęłoby tylko na jej własny proces).
Oto funkcja, która pójdzie w górę do liczby poziomów przekazana jako argument (domyślnie 1) w fizycznej strukturze katalogów (Tak, jak
cd -P ..
, n razy):Użyj tego w ten sposób:
źródło
up 4
naprawdę równoznaczne zcd /some/dir/
zakładaniem$PWD = "/some/dir/that/is/deeply/nested/"
?Niezupełnie o co prosisz, ale powinieneś spojrzeć na
pushd
ipopd
. Uważam, że są one znacznie bardziej przydatne do nawigacji po folderach niż niektórecd...
aliasyJeśli przechodzisz w tę iz powrotem z kilku ustalonych obszarów, zwykle stosuje się aliasy.
źródło
Zamiast używać aliasów możesz również użyć następującej funkcji bash:
(lub jako jedną wkładką:
function mcd() { up=""; for ((i=1; i<=$1;i++)); do up="${up}../"; done; cd $up; }
)Dodanie tego do
~/.bashrc
pliku sprawi, że będzie ono dostępne w twoim terminalu, a zbudowanie ciągu../../../../../../
przed wywołaniemcd
umożliwi również użyciecd -
powrót do katalogu startowego.Bardziej pomocna implementacja może również zawierać pewne kontrole wprowadzane przez użytkownika:
źródło
Czy wiesz o autojump ? Jest to hack innej firmy, ale może być przydatny w twoim scenariuszu.
źródło
Wypróbuj rzadko używany parametr środowiska
CDPATH
. Wówczas może nie być konieczne jawne ustawienie poziomu.Przykład:
Jeśli pracujesz nad wieloma projektami, możesz zmienić ustawienie CDPATH w plik środowiska specyficzny dla projektu. I uruchom go z podkładką dystansową dla dodatkowej automatyzacji.
Często używam pushd i popd. Zwykle używam CDPATH, aby pozwolić mi przeskakiwać między drzewami projektów, a nie podkatalogami w projekcie - ale w tej chwili pracuję nad wieloma małymi projektami, a nie kilkoma dużymi. :)
źródło
Jeśli jesteś już w katalogu docelowym:
źródło
Spojrzeć na DirB . Jest to skrypt BASH, który umożliwia tworzenie zakładek w następujący sposób:
OPERACJE
Bardzo prosty, bardzo skuteczny.
źródło
Krok dalej od odpowiedzi @ Grigory:
To jest :
źródło
Miałem dość tego samego problemu i w rezultacie napisałem cd-plus . Narzędzie CLI z jednym plikiem, które pozwala na przechowywanie wielu katalogów.
Stosowanie
źródło
Dodanie poniższego kodu do
.bashrc
rozszerzenia spowoduje rozszerzeniecd
notacji trzy kropkowejPo uruchomieniu tego fragmentu w powłoce bash, pisanie
cd .../
i klikanie<TAB>
zakończy ścieżkę do../../
i wyświetlenie względnych ścieżek wszystkich katalogów, które są na przykład o dwa poziomy wyżej.Aktualizacja :
bash-completion
należy zainstalować, aby mieć dostęp do_cd
metody wymienionej w powyższym kodzie. Można go zainstalować za pomocą większości menedżerów pakietów wiersza poleceńźródło