Poruszanie się po kilku warstwach zagnieżdżonych katalogów jest często uciążliwe. W przeglądarce Firefox jest to łatwe, ponieważ mają zakładki. Więc, co chciałbym zrobić, aby utworzyć zakładki do pliku, wpisz:
$ go --add classes "repo/www/public/util/classes"
Następnie, aby przejść do tego katalogu, wpisałbym:
$ go classes
Wcześniej używałem dowiązań symbolicznych, aby osiągnąć coś podobnego, ale nie chcę zaśmiecać mojego katalogu domowego. Istnieje wiele innych funkcji, które mogą okazać się przydatne. Na przykład chciałbym móc zacząć pisać, go cl
a następnie nacisnąć klawisz Tab, aby wykonać autouzupełnianie. Czasami mam wypisane wiele kopii repozytorium, więc użyteczne byłoby, aby program pozwolił mi tworzyć wiele kontekstów i ustawiać zakładkę względem katalogu bazowego kontekstu.
Tak więc, zanim przystąpiłem do tworzenia własnego zestawu skryptów, czy jest już coś takiego?
Odpowiedzi:
Zbyt długo szukałem narzędzia do tworzenia zakładek powłoki i nie jestem zadowolony z żadnego z rozwiązań, które znalazłem.
Jednak w końcu natknąłem się na świetne, uniwersalne narzędzie: program do wyszukiwania rozmytych wierszy poleceń .
Pozwala przede wszystkim na „wyszukiwanie rozmyte” (sprawdź bogatą animację gif za pomocą powyższego linku), ale pozwala także na podawanie dowolnych danych tekstowych i filtrowanie tych danych. Pomysł na skróty jest więc prosty: wszystko, czego potrzebujemy, to utrzymywać plik ze ścieżkami (które są skrótami) i filtrować rozmyto ten plik. Oto jak to wygląda: wpisujemy
cdg
polecenie (z „cd global”, jeśli chcesz), uzyskujemy listę naszych zakładek, wybieramy potrzebną w ciągu kilku naciśnięć klawiszy i naciśnij Enter. Katalog roboczy jest zmieniany na wybrany element:Jest to niezwykle szybkie i wygodne: zwykle po prostu wpisuję 3-4 litery potrzebnego elementu, a wszystkie inne są już odfiltrowane. Dodatkowo możemy oczywiście poruszać się po liście za pomocą klawiszy strzałek lub za pomocą
Ctrl+j
/Ctrl+k
.Szczegółowy artykuł na temat tego rozwiązania skrótów / zakładek znajduje się tutaj: Rozmyte skróty dla twojej powłoki .
źródło
Myślę, że szukasz czegoś takiego jak autojump . Musisz trochę popracować, aby opracować zestaw „wag klucza”, które korelują z ilością czasu spędzonego w danym katalogu. Następnie, zakładając, że spędziłeś dużo czasu w reżimie „klas”, możesz tam przejść bezpośrednio, pisząc
Możesz wyświetlić swoje „wagi kluczowe” za pomocą
źródło
f
: github.com/clvv/fJak wspomina saeedn, aliasy są dobrym mechanizmem. Powłoka bash posiada także wbudowany mechanizm do wskoczyć do lokalizacji:
CDPATH
. Ustaw to takPATH
, ale jest używane przezcd
zamiast wyszukiwania programów.Z strony podręcznika:
Sam połączyłem to z katalogiem, który zawiera dowiązania symboliczne do miejsca, w którym chciałbym iść:
Ma to tę wadę, że katalog nie wydaje się być poprawny, ale można to naprawić za pomocą
cd -P
lub ustawieniaset -P
.źródło
alias C='cd -P .'
raczej dodaćset -P
, ponieważ dla systemowych dowiązań symbolicznych nie mam nic przeciwko byciu w katalogu dowiązań symbolicznych.help cd
i nadal nie rozumiem, co robi opcja -P.mkdir test; ln -s test linktotest; cd linktotest; pwd; cd -P .; pwd
Możesz połączyć istniejące funkcje Bash z historią i wyszukiwaniem historii. Naciśnij, Ctrl-Raby rozpocząć przyrostowe wyszukiwanie do tyłu, a następnie zacznij wpisywać część ścieżki, która najprawdopodobniej będzie unikalna.
Możesz pisać litery, dopóki nie skończy się ostatnie
cd
polecenie dotyczące tego katalogu, lub możesz nacisnąć Ctrl-Rponownie, aby wrócić do historii do następnego najnowszego polecenia pasującego do tego, co wpisałeś do tej pory.Robię to cały czas.
W rzeczywistości robię krok dalej. Gdy zacznę odkrywać sekwencje poleceń, które warto zachować w historii, ale nie warto angażować się w skrypt powłoki, zaczynam je łączyć w łańcuchy
&&
i;
kombinatory, aby móc odwrócić wyszukiwanie podłańcucha tego jednego długiego polecenia, nacisnąć Enteri uruchomić całą sekwencję w pewnego razu.Na przykład oto, jak zbudować i uruchomić jeden z moich programów podczas programowania:
Robię to z katalogu instalacyjnego, który znajduje się pod katalogiem źródłowym najwyższego poziomu. Pakując część
cd
, buduj i instaluj w podpowłoce, upewniam się, że bez względu na to, co się stanie podczas tego procesu, wrócę do mojej normalnej powłoki bez zmian. Tylko jeśli to się powiedzie (&&), uruchomię zbudowany i zainstalowany program. Mogę znaleźć w moim historii z tylko Ctrl-Rwtedy sta, że jest wszystko, czego zazwyczaj potrzeba do jednoznacznego znalezienia tej sekwencji poleceń.Innym przykładem tego, jak korzystam z tego, jest sekwencja, w której buduje się RPM dla tego samego programu. Większość żmudnej pracy związana jest ze skryptami powłoki, ale nadal istnieje kilka poleceń, które normalnie musiałbym wpisać, aby wykonać całą pracę związaną z budowaniem i wdrażaniem wbudowanych RPM, których teraz rzadko muszę ponownie wpisywać, ponieważ Bash zachowuje dla mnie to w historii.
Połącz to wszystko z,
export HISTSIZE=bignum
ashopt histappend
właśnie zbudowałeś pamięć poleceń słoni.Innym rozwiązaniem, które kiedyś kodowałem, jest moja odpowiedź na inne pytanie tutaj . Może być konieczne dostosowanie go do twoich celów i obsługuje tylko
cd
polecenia, podczas gdy opcja wyszukiwania historii działa wszędzie i dla każdego polecenia.źródło
Sam
alias
skracam długie ścieżki, które często odwiedzam. Możesz umieścić swój zestawalias
esbashrc
, aby bash mógł je zapamiętać przy każdym logowaniu. I na szczęście bash dodaje aliasy do autouzupełniania.Napiszę coś takiego dla twojej sprawy:
alias go-classes="cd ~/repo/www/public/util/classes"
źródło
Być może szukasz znaków bash (na github).
Z pliku README:
Bashmarks to skrypt powłoki, który pozwala zapisywać i przeskakiwać do często używanych katalogów. Teraz obsługuje uzupełnianie kart.
źródło
Nie jest to w żaden sposób kompletne ani głupie, tylko szkic na początek. Dodając następujące elementy
~/.bashrc
, będziesz mieć trzy polecenia do dodania opcji usuwania i listy zakładek do katalogu (które są oparte na aliasach powłoki, więc możesz także uzyskać automatyczne uzupełnianie).Użycie jest dość proste.
bmadd
z argumentem dodaje alias nazwany po argumencie. Ten alias tworzy po prostu płytę CD do katalogu, w którym został ustawiony. Bez argumentu używa bieżącej nazwy katalogu jako nazwy aliasu. W podobny sposóbbmdel
usuwa alias, jeśli istnieje ibmlist
wyświetla bieżące zakładki.na przykład
źródło
Jakiś czas temu spotkałem się z tą samą potrzebą i postanowiłem stworzyć kilka skryptów, które pomogą mi dodać do zakładek ścieżki bezwzględne / względne i zmapować je na krótsze nazwy, które łatwo zapamiętam.
Skrypt jest bardzo łatwy w użyciu i po prostu utworzy funkcję o krótkiej nazwie, którą podajesz jako alias do katalogu, do którego chcesz przejść. Wystarczy wpisać tę krótką nazwę, aby przejść do katalogu z zakładkami.
Oto link do źródła skryptu bookmarker. Nawiasem mówiąc, nazwałem to Zakładka.
Stosowanie
Po zainstalowaniu jest dość prosty w użyciu.
Aby oznaczyć katalog:
Aby przejść do zaznaczonego katalogu:
Aby zobaczyć, co zostało oznaczone:
Aby usunąć zaznaczony katalog:
Dalsze przykłady, instrukcje instalacji itp. Znajdują się w bardzo szczegółowej dokumentacji .
źródło
cdargs
jest najlepszym narzędziem do tworzenia zakładek do zakładek.Przykłady użycia znajdują się w zakładkach wideo z poleceniami cd na YouTube.
Przykładowe użycie
cdargs
jest graficznym interfejsem użytkownika ncurses, dzięki czemu możesz wizualnie nawigować w swojej powłoce. Po zainstalowaniu ustawiasz go w danej powłoce, uzyskując skrypt powłoki:Umożliwia to kilka funkcji, które można następnie wywołać z poziomu powłoki.
Przywołaj GUI:
W wyniku tego GUI:
Możesz używać klawiszy strzałek, aby poruszać się w górę i w dół, aby poruszać się po liście. Strzałka w lewo ( ←) idzie o poziom wyżej w drzewie katalogów, strzałka w prawo ( →) przechodzi do katalogu.
oznaczanie katalogów:
Możesz użyć cdla bieżącego nawigowanego katalogu lub możesz adodać katalog, który aktualnie wyróżniasz kursorem.
tryby pracy:
cdargs
jest trochę podobny do vi / vim pod tym względem, gdzie ma takie pojęcie trybów . Są 2 z nich, przeglądanie (B) i lista (L). Możesz zobaczyć, w jakim trybie jesteś, poprzez wyświetlacz u dołu powłoki.Tryb aukcji:
Tryb przeglądania:
Możesz zmienić swój tryb, naciskając klawisz Tab ( TAB).
To tylko wierzchołek góry lodowej, więcej informacji można znaleźć na stronie man (
man cdargs
), a także we wbudowanej pomocy.źródło
Najlepszym narzędziem do tego jest: wcd . Przetestowałem wiele innych narzędzi, a ten jest używany dokładnie tak, jak pytasz i jest lepszy pod wieloma względami niż wszystkie poprzednie rozwiązania.
źródło
Pozostałe odpowiedzi są świetne i konkretne. Innym sposobem na spojrzenie na to jest użycie makroprocesora klawiaturowego, który może zrobić prawie wszystko, co tylko możesz wymyślić.
Sprawdź AutoKey. Może zastępować frazy, takie jak autokorekta edytora tekstu lub historia bash, a także może uruchamiać skrypt python na zdefiniowanym skrócie klawiszowym, który może zrobić prawie wszystko, a także wysyłać naciśnięcia klawiszy do urządzenia wprowadzania znaków - tak jakbyś je wpisał.
Jedynym mankamentem, jaki ma (w związku z tym pytaniem), jest to, że potrzebuje GUI, aby uruchomić in - gnome lub kde. Inne odpowiedzi nie mają tego wymogu.
źródło
Istnieje inna alternatywa o nazwie z .
Uczy się przy każdej zmianie katalogu:
Następnie możesz później przejść do tego katalogu z dopasowaniem rozmytym:
źródło
Apparix to kolejne narzędzie, które to robi. Jedną z jego przydatnych funkcji jest to, że możesz przejść bezpośrednio do podkatalogów znaku i uzupełnić tabulatorami w tych podkatalogach.
źródło
Innym rozwiązaniem, które moim zdaniem jest
autojump
iz
jestfasd
.Śledzi, które katalogi odwiedzasz i
z dir-name
przejdzie do katalogu z nazwądir-name
, której używasz najczęściej. Posiada również funkcje dla często używanych plików.Możesz go sklonować z: https://github.com/clvv/fasd
Instalowanie jest proste, klonowanie, instalowanie, a następnie modyfikowanie
.bashrc
(lub.zshrc
itp.).źródło
Musisz dodać alias do swojego
.bashrc
lub.bash_profile
.Powiedzmy, że chcesz użyć skrótu
~/Desktop/Coding/Projects
, aby wywołać, który napiszeszgoto_Projs
. Musisz dodać następujący wiersz do pliku otwartego w edytorze tekstu:alias goto_Projs='cd ~/Desktop/Coding/Projects'
Teraz rób wszystko, co twój edytor tekstu chce, abyś zapisał (do
/User/<yourusername>/
lub~/
oczywiście) i zakończył pracę, a gdy zostanie zwrócony komunikat powłoki, idźsource ~/.bash_profile
Twój alias powinien być teraz dostępny do wywołania, jak opisano powyżej.
źródło
Używam metody dodawania komentarza na końcu polecenia, a następnie wywoływania w
ctrl R
celu odwrotnego wyszukiwania komentarza. Ma to następujące zalety:ctrl R
ctrl R
itab
w locie, aby wprowadzić drobne poprawki do samego polecenia, dzięki czemu komentarz będzie rodzajem rodzajowego skrótu do rodziny podobnych poleceńźródło