Miałem to gdzieś 20 lat temu lub marzyłem o tym.
Gruntownie:
Jeśli jeśli napiszę blobblob
to
blobblob: command not found
Słusznie.
Chciałbym, aby gdy moja powłoka otrzymała te błędy - polecenie nie zostało znalezione - sprawdza, czy istnieje katalog o tej nazwie ('blobblob') i czy robi to cd
z tym katalogiem.
Jestem pewien, że istnieją pewne powody, aby tego nie robić lub robić to ostrożnie.
Po prostu myślę, że byłoby całkiem fajnie i chciałbym spróbować, znajdując gdzieś (jak tutaj!).
Nie mam pojęcia, jak może to sugerować rodzaj programowania powłoki.
źródło
shopt -s autocd
w wierszu polecenia, w którym działało. Teraz mogę po prostu zacząć wpisywać nazwy katalogów i użyć autouzupełniania, a następnie wcisnąć return i powłokęcd
do katalogu. Ale fajnie !cd
nie jest tak trudne do pisania, a większość mechanizmów uzupełniania tabulatorów jest mądrzejszych, gdy dajesz im większy kontekst.autocd
Shopt dodano w bash wersji 4. Nie jest więc dostępny na MacOS (który nadal ma wersji bash 3.xx), chyba że zastępcy, nowsze bash został zainstalowany (na przykład poprzez homebrew).Narzędzie autojump zapewnia podobny mechanizm z listą katalogów najczęściej używanych. Wymaga to jednak dodawania nudy pisania,
j
Spaceale kompensuje to częste zgadywanie.To jest najbliżej DWIM , którego do tej pory używałem.
źródło
Kiedyś stworzyłem przydatny skrypt do podobnego celu, z funkcją fcd dla find-n-cd.
Wpisujesz
fcd foo
i 3 rzeczy mogą się zdarzyć:"no such directory " $1
Podobnie jest w tym, że nie trzeba wpisywać całej ścieżki, ale funkcja została wywołana jawnie.
Musisz użyć
source
funkcji (source fcd.sh
|. fcd.sh
) i nie możesz wywoływać jej jako skryptu, ponieważ wcd
innym przypadku miałoby to miejsce tylko w kontekście skryptu, a po zakończeniu natychmiast wracałbyś do początkowego katalogu.Ponieważ działa
locate
, dość szybko znajduje katalogi (ale nie zawsze aktualne).Z wdziękiem nie obsługuje pustych nazw katalogów. Jeśli masz eleganckie rozwiązanie problemu, byłbym szczęśliwy.
źródło
cd
automatycznie, bez wpisywania żadnego polecenia. Ta odpowiedź jest bardziej odpowiednia do szybkiej nawigacji w katalogu w terminalu ./etc/bash.bashrc
Ubuntu znajduje się taki,function command_not_found_handle
który wygląda, jakby można go zmodyfikować.To też działa,
.. biorąc pod uwagę, że skonfigurowałeś niestandardowy skrypt cdf.sh (poniżej) pochodzący z powłoki. W przypadku katalogu jako parametru ten skrypt dostaje się tylko do katalogu nadrzędnego dla znalezionego katalogu. Dodaj następujący wiersz do .bashrc lub .zshrc, cokolwiek ..
I dodaj ten kod do pliku ~ / bin / cdf.sh, który musisz utworzyć od zera.
źródło
Umieść to w swoim
~/.bashrc
źródło