Szukam sposobu na znormalizowanie dowolnych ścieżek plików w bashu, rozdzielenie .
i ..
na ich wartości bezwzględne. Przykłady:Znormalizowanie dowolnych ścieżek plików w bashie na OSX
> cd /foo/bar
> normalize_path "."
/foo/bar
> normalize_path "../baz"
/foo/baz
> normalize_path "../../folder/that/doesnt/exist/"
/folder/that/doesnt/exist
zauważyć, jak w powyższych przykładach, normalize_path
zwraca wartość nawet jeśli ścieżka nie odpowiadają rzeczywistym folderu lub pliku. Wszystkie poprzednie pytania dotyczące bezwzględnych lub znormalizowanych ścieżek, które widziałem na StackOverflow (example 1, example 2) zakładają ścieżkę do prawdziwego pliku i używają realpath
lub pwd
do znormalizowania go, ale to nie zadziała w moim przypadku użycia.
Innymi słowy, szukam funkcji basha, która po prostu manipuluje ścieżkami jako łańcuchami i faktycznie nie patrzy na system plików, podobnie jak File.getCanonicalPath w Javie.
Musi to być wyłącznie w 'bash' lub może użyć' readlink -m your_imaginary_path_here' lub 'realpath -m your_imaginary_path_here'? – rickhg12hs
@ rickhg12hs: Szukam czegoś, co działa na OS X. –