Příkaz dirname v Linuxu vytiskne cestu k souboru s odstraněnou konečnou součástí. To vám v podstatě poskytuje cestu k adresáři z cesty k souboru.
To je užitečné zejména ve skriptech bash, kde chcete extrahovat cestu k adresáři z dlouhé cesty k souboru.
Příkaz dirname doplňuje příkaz basename. Příkaz basename extrahuje název souboru z cesty, zatímco dirname extrahuje cestu k adresáři.
Dovolte mi, abych vám to ukázal na několika příkladech.
Příklady příkazů dirname
Příkaz dirname má přímou syntaxi.
dirname OPTION PATH
Použití příkazu dirname s absolutní cestou k souboru poskytne cestu k adresáři:
dirname /home/user/data/filename.txt
/home/user/data
Stejně jako příkaz basename je i příkaz dirname ve skutečnosti hloupý. Opravdu nerozpoznává cestu k souboru. Vyhledá pouze lomítka (/) a vytiskne to, co je před posledním lomítkem. V zásadě mu můžete dát jakýkoli řetězec s / a bude to fungovat.
Například zde používám náhodný řetězec bez názvu souboru. Můžete vidět, že to stále funguje stejně a na výstupu je řetězec, který odstraní poslední / a text za ním.
Pokud cesta neobsahuje lomítko (/), zobrazí se tečka (.) označující aktuální adresář.
Dirname můžete použít i s více cestami. Vrátí výstup pro každou cestu na novém řádku:
Můžete použít volbu -z k získání výsledku na stejném řádku s výstupy oddělenými znakem NULL.
Použití dirname ve skriptu bash
Ukázal jsem několik příkladů příkazu dirname. Pojďme si promluvit o používání dirname ve skriptech bash.
Předpokládejme, že máte proměnnou cesty k souboru a chcete získat cestu k adresáři, který obsahuje soubor. Může to být jednoduchý skript:
pathname="/home/dir/data/filename"
result=$(dirname "$pathname")
echo $result
Jak jsem již zmínil, příkaz dirname je doplněn příkazem basename. Na rozdíl od dirname příkaz basename vytiskne pouze poslední komponentu cesty.
Doufám, že se vám tento návod líbil. Jako vždy se neváhejte zeptat na otázky nebo poskytnout návrhy v sekci komentářů.
Líbil se vám článek? Sdílejte to prosím a pomozte nám růst :)