Chciałbym w łatwy sposób uzyskać pełną ścieżkę do pliku. Obecnie piszę to:
echo `pwd`/file.ext
Próbując go skrócić, stworzyłem alias bash:
alias fp='echo `pwd`/'
Ale teraz, gdy piszę fp file.ext
, między /
i a pojawia się spacja file.ext
.
Czy takie polecenie już istnieje i brakuje mi go? Jeśli nie, to jak bym stworzył taki alias lub funkcję w bash?
command-line
bash
Jens Erat
źródło
źródło
readlink -f
(lubrealpath
, który jest starszym narzędziem zachowanym w celu zachowania zgodności) dodatkowo rozszerzy wszystkie dowiązania symboliczne, co niekoniecznie jest pożądane.realpath
.Zamiast
pwd
polecenia użyjPWD
zmiennej (również w POSIX):Jeśli potrzebujesz obsługi systemu Windows, rozpoznawanie ścieżek bezwzględnych będzie bardziej skomplikowane, ponieważ każdy port narzędzi uniksowych ma własne reguły tłumaczenia ścieżek plików. W Cygwin użyj
cygpath
narzędzia.źródło
aby odpowiedzieć na twoje pytanie za pomocą tego, czego używasz teraz:
alias rozwija się w miejscu, w którym teraz piszesz. wpisałeś:
to się staje
możesz użyć funkcji, aby tego uniknąć:
możesz użyć tego jak zwykle:
źródło
echo "`pwd`/$1"
*
w katalogu zawierającym inne pliki).fp *
daje,/tmp/4cc3ea0c1b34b
ponieważ jest to pierwszy parametr funkcji. pozostałe parametry to inne pliki w katalogu. jak tylko mam plik o nazwie „ ” funkcja nadal działa zgodnie z oczekiwaniami, wywołując go za pomocą „*” lub * lub *Możesz użyć:
źródło
apt-cache search realpath
aby ujawnić, że coreutils i zwykłe pakiety realpath oba zawierają to. Następnie możesz wpisaćsudo apt-get install realpath
(lubcoreutils
), aby go zainstalować.Od /programming//a/3915420/5795941
To jedyny sposób, który jest dla mnie do zaakceptowania. Nie rozwija linków takich jak realpath i readlink i jest to klasyczny sposób robienia tego, który widziałem wszędzie.
źródło