Muszę często przeskakiwać po kilku katalogach w moim katalogu domowym i męczyć się ich pisaniem. Chciałbym szybszego podejścia, które tradycyjnie byłoby linkiem symbolicznym.
Jednak nie chcę zaśmiecać mojego katalogu domowego dziesiątkami dowiązań symbolicznych. Mógłbym stworzyć ~/links/
katalog i zaśmiecać go symbolicznymi linkami, ale nadal jest brzydki. Poza tym mogę chcieć utworzyć dowiązania symboliczne, które zmieniają się każdego dnia (zdefiniowane w .bashrc), aby przejść do katalogu dni obecnych.
Czy istnieje sposób skutecznego aliasu linku symbolicznego, tworząc coś, co zostanie rozpoznane jako link do szybkiej nawigacji, ale tak naprawdę nie pojawi się, gdy zrobię coś ls
z mojego katalogu domowego i nie będzie trwać dłużej niż bieżąca sesja?
źródło
cd -
willcd
do ostatniego katalogu były poprzednio. Dlatego jeśli zrobisz to dwa razy, wrócisz do miejsca, w którym zacząłeś ... bardzo miło w tej sytuacji "och zapomniałem edytować someFile.txt w poprzedniej lokalizacji" => Po prostucd -
:, edit someFile.txtcd -
Odpowiedzi:
Możesz użyć uzupełniania tabulatorów. Domyślnie w wielu dystrybucjach Linuksa bash jest skonfigurowany tak, że gdy naciśniesz klawisz [TAB], otrzymasz listę możliwych dopasowań, lub jeśli jest tylko jedno dopasowanie, wszystko jest wypełnione. W przypadku cd jest to zwykle lista podkatalogów bieżącego katalogu roboczego. Możesz to zastąpić, ale zamiast tego sugeruję utworzenie aliasu, na przykład
jd
dla „jump directory”:a następnie zdefiniowanie „zakładek”, które chcesz uzupełnić dla jd. Spójrz na stronę podręcznika użytkownika bash, aby uzyskać o wiele więcej opcji (w tym automatyczne generowanie wyników w locie z polecenia lub funkcji), ale najprostszym sposobem jest po prostu lista słów z
-W
:complete -W "/ srv / www ~ / tmp ~ / work" jd
Teraz wpisz
jd
i naciśnij [TAB], a zobaczysz swoje „zakładki”. Wpisz dowolną niejednoznaczną część, a następnie naciśnij [TAB], aby zakończyć. (W powyższym,~
s rozwiń do mojego katalogu domowego, więc pierwszy [TAB] daje mi/
, a jeśli uderzęw
i [TAB] ponownie,/srv/www
jest wypełniony.)Oczywiście, włóż to,
~/.bash_profile
aby było trwałe.Lub możemy przenieść to na wyższy poziom. Utwórz katalog
~/.shortcuts
- zaczynając od kropki, będzie on ukryty i nie będzie zajmował ładnego, czystego katalogu domowego - i wypełnisz go symbolicznymi linkami do wybranych katalogów. Następnie umieść to w swoim ~ / .bash_profile:Definiuje to nieco bardziej skomplikowane zakończenie
_list_shortcuts
tworzenia listy nazw i sprawia, że stajejd
się ona funkcją, a nie prostym aliasem, ponieważ chcemy, aby działała inaczej niż tylkocd
.-P
Flagęcd
czyni go rozwiązać dowiązania symboliczne, więc wszystko staje się przejrzyste magia. Twoje nazwy skrótów nie muszą nawet odpowiadać celom.Więc:
I, dla dodatkowej dawki fantazji, zrób
jd
listę wszystkich skrótów, gdy zostanie wykonany bez żadnych parametrów:Uwaga: używam
compgen -W $( cmd )
zamiast tego,compgen -C 'cmd'
ponieważ ten drugi nigdy dla mnie nie działa i nie rozumiem dlaczego. To może być moje nowe pytanie. :)źródło
Aliasy powłoki mają funkcję, którą można wykonać (niektóre) uzupełnianie nazw (zwykle związane tab). Alternatywnie możesz skorzystać z
CDPATH
funkcji, która „ostatnio” (w ciągu ostatnich 5-6 lat) została ulepszona w celu obsługi uzupełniania nazw. Jeśli to działa dla Ciebie, ma tę zaletę, że to, co wpisujesz, jest rzeczywistą nazwą katalogu, a nie mnemoniką.Zgodnie z instrukcją bash
Dalsza lektura:
źródło
CDPATH
zmiennej środowiskowej, dziękuję. Mogę dodać mójgit_repos
katalog do tej zmiennej ....W przypadku katalogów często odwiedzanych, ale nie zmienianych codziennie, inną opcją jest po prostu posiadanie kilku
alias
poleceń w.bashrc
pliku:Znajomy ma ich około 50; Mam garstkę; Szybko i łatwo. Właśnie
zmienić katalog na / u01 / app / oracle
źródło
Polecam
pushd
ipopd
.Osobiście uważam je za przydatne przy pracach programistycznych / czytaniu kodu źródłowego, gdy zaangażowanych jest wiele katalogów.
Skutecznie implementują strukturę stosu / LIFO, w której wciskasz katalog (
pushd
), a następniepopd
pobiera go następna komenda katalogu POP ( ).Tak więc, gdy jesteś w katalogu, możesz:
A kiedy musisz go odzyskać, robisz to
Możesz wykonać wiele operacji
pushd
i wykonać odpowiedniepopd
później, aby powrócić do katalogów.Zostawię tutaj link.
http://www.eriwen.com/bash/pushd-and-popd/
źródło
popd
dużo. Wypełniam mojądirs
listę (która jest wypełnionapushd
poleceniami) wszystkimi katalogami, które chcę odwiedzić / pracować przez ten kawałek czasu, a następnie uruchomićpushd +1
. Następnie mogę przewijać katalogi za pomocą prostego,!pu
który jest bardzo szybki. (Należy pamiętać, że zarówno w Ubuntu, jak i CentOS,pushd
jest to jedyne dostępne polecenie w czystej instalacji, które zaczyna się odpu
.)Możesz po prostu umieścić je jako zmienne w swoim
~/.bashrc
, a wtedy są one tylko$
nieobecne.źródło
Oczywistą odpowiedzią są zmienne , te symboliczne rzeczy w powłoce, które oznaczają inne rzeczy, podobnie jak dowiązania symboliczne w systemie plików.
W każdej przyzwoitej powłoce dostajesz Tabuzupełnienie nazw zmiennych, co dodatkowo pomaga.
źródło