Często chcę przejść do katalogu, w którym znajduje się konkretny plik wykonywalny. Tak więc chciałbym, aby coś takiego jak zmienianie w katalogu, w którym zainstalowano polecenie Pythona, zmieniło się w coś podobnego do tego, co na przykład: 0123. Jest to oczywiście nielegalne, ponieważ cd pobiera katalog, a nie plik. Jest oczywiście kilka regexp-foo, które mogłem zrobić, aby usunąć nazwę pliku, ale to by złamało sens tego, że jest to prosta jedna linijka.Bash-one-liner, aby przejść do katalogu, w którym znajduje się jakiś plik
Odpowiedz
tutaj:
cd $(dirname `which python`)
Edit:
Nawet łatwiej (właściwie testowany ten czas):
function cdfoo() { cd $(dirname `which [email protected]`); }
Wtedy "cdfoo python".
coś takiego powinno wystarczyć:
cd `dirname $(which python)`
Można użyć coś takiego:
cd `which <file> | xargs dirname`
Jedną z cech Użyłem przydzieleniu jest pushd/popd. Utrzymują one stos katalogów, dzięki czemu nie musisz zapisywać historii w miejscu, w którym byłeś, jeśli chcesz wrócić do bieżącego katalogu roboczego przed zmianą katalogów.
Na przykład:
pushd $(dirname `which [email protected]`)
...
popd
Aby uniknąć tych wszystkich zewnętrznych programów ('DIRNAME' i znacznie gorsze, bezużyteczny, ale popularny 'który') może trochę skrótu:
cdfoo() {
tgtbin=$(type -P "$1")
[[ $? != 0 ]] && {
echo "Error: '$1' not found in PATH" >&2
return 1
}
cd "${tgtbin%/*}"
}
to również naprawia nietypowe słowo kluczowe "funkcja" z góry i dodaje (bardzo proste) obsługę błędów.
Może być początkiem bardziej sphisticated rozwiązanie.
+1, Co za ulga, w świecie UNIX pozostało zdrowie psychiczne. – lhunath
dodałam trochę prostą obsługę błędów sprawia, że zachowanie cdfoo() wynika, że z dirname dla nieistniejących argumentów/nonpath
function cdfoo() { cd $(dirname $(which $1 || (echo . && echo "Error: '$1' not found" >&2)));}
Dla porównania:
zsh:~% cd =vi(:h) zsh:/usr/bin%
= cmd rozszerza się ścieżka do cmd i (: h) jest modyfikatorem globu, który przyjmuje nagłówek zsh tylko w trybie write, ale jest potężny.
Dziękuję za kod. Są znakomite! –
- 1. Czy skrypt Ruby może określić, w którym katalogu się znajduje?
- 2. Sprawdź, czy plik znajduje się w (pod) katalogu
- 3. Jak przejść do katalogu w C
- 4. Skrót NetBeans, aby przejść do lokalizacji pliku w Eksploratorze projektów
- 5. Wydanie mvn: wykonanie nie powiedzie się, ponieważ plik pom nie znajduje się w katalogu głównym repozytorium
- 6. Jak uzyskać nazwę folderu, w którym znajduje się dany plik, od pathlib.path?
- 7. Jak mogę się dowiedzieć, ile plików znajduje się w katalogu?
- 8. Jak uzyskać katalog, w którym znajduje się aktualnie wykonywany plik jar?
- 9. xcodebuild - jak określić katalog, w którym znajduje się projekt, bez tworzenia w nim cd
- 10. Zastosowanie Foreman Start Rack App Znajduje się w innym katalogu
- 11. Jak ustalić, czy ścieżka znajduje się wewnątrz katalogu? (POSIX)
- 12. uruchom `nvm use` automatycznie za każdym razem, gdy znajduje się plik .nvmrc w katalogu
- 13. Gdzie znajduje się plik cdb.exe w programie Visual Studio 2013?
- 14. Android studio gdzie znajduje się plik gradle.properties?
- 15. Skopiuj plik do innego katalogu
- 16. Jak odnieść się do typu w module, który ma typ o takiej samej nazwie jak moduł, w którym się znajduje?
- 17. importować plik z innego katalogu
- 18. Gdzie znajduje się plik lint.py do instalacji Pylintera na SublimeText
- 19. Jak przejść do importowania PyCharm?
- 20. Czy istnieje funkcja Python do określenia, w którym kwartale roku znajduje się data?
- 21. Gdzie znajduje się "ListViewItemPlaceholderBackgroundThemeBrush"?
- 22. Gdzie znajduje się plik .js po stronie klienta Socket.IO?
- 23. Plik dokumentacji XML nie znajduje się w folderze publikacji
- 24. Jak przejść do katalogu bieżącego użytkownika w pliku wsadowym
- 25. Gdzie znajduje się plik application.properties w projekcie Spring Boot?
- 26. Gdzie znajduje się plik TextTransform.exe znajdujący się na dysku twardym?
- 27. CTE, aby przejść z powrotem do hierarchii?
- 28. Plik znajdujący się w iOS znajduje się w kodzie odpowiadającym widokowi w symulatorze.
- 29. Blokowanie debuggera, aby przejść do funkcji
- 30. jQuery, aby przejść do etykiety grupy optycznej
+1 Nie jesteśmy godni. –
Powinienem był przestać, kiedy byłem przed ... edytowany, aby usunąć fałszywą formę aliasu. –
nice ... Zrób funkcję ... + 1 – ojblass