Někdy vás při práci na příkazovém řádku (zejména při práci se skripty shellu) může zajímat pouze název souboru, ale máte k dispozici úplnou cestu k souboru. Požadavkem je tedy odstranit složku adresáře z cesty. Budete rádi, že existuje příkaz - basename - to dělá tuto práci.
V tomto tutoriálu budeme diskutovat o základech 'basename' pomocí několika snadno pochopitelných příkladů. Ale než se k tomu vrhneme, stojí za zmínku, že všechny příklady zde byly testovány na počítači Ubuntu 16.04 LTS.
Příkaz základního názvu Linuxu
Příkaz basename umožňuje odstranit komponenty z názvů souborů, které nejsou povinné. Následuje syntaxe nástroje:
basename NAME [SUFFIX]
basename OPTION... NAME...
A zde je to, co o tom říká manuálová stránka:
basename - strip directory and suffix from filenames
Print NAME with any leading directory components removed. If specified, also remove a trailing
SUFFIX.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout dobrou představu o tom, jak příkaz basename funguje.
O1. Jak funguje příkaz basename?
Ve výchozím nastavení, pokud spustíte příkaz 'basename' s úplnou cestou k souboru jako vstup, příkaz vrátí název souboru na výstupu. Například, když jsem provedl následující příkaz:
basename /home/himanshu/Downloads/analytics.pdf
Mám následující výstup:
analytics.pdf
Q2. Může základní jméno zpracovat více vstupů?
Ano, může. Ale aby k tomu došlo, musíte použít volbu -a příkazového řádku. Například, když jsem provedl následující příkaz:
basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
A tady je výstup, který jsem dostal:
analytics.pdf
test.png
Q3. Jak také vytvořit příponu souboru stripu basename?
Někdy můžete chtít načíst pouze název souboru, ale ne jeho příponu. To lze provést pomocí volby příkazového řádku -s (která vyžaduje, abyste předali příponu jako vstup).
Například následující příkaz:
basename -s .pdf /home/himanshu/Downloads/analytics.pdf
vytvořil tento výstup:
analytics
Q4. Jak zajistit, aby každý výstup řádku končil hodnotou NUL?
Ve výchozím nastavení se jako oddělovač ve výstupu používá znak nového řádku. Pokud však chcete, můžete přinutit basename, aby jako oddělovač použil NUL. To lze provést pomocí volby příkazového řádku -z.
Například:
basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
A tady je výstup:
analytics.pdftest.png
Takže tu nevidíte znak NUL. K tomu musíte přesměrovat výstup do souboru a poté soubor otevřít v editoru, jako je vim. Zde je to, co vim ukázal:
Závěr
Jak můžete vidět, basename není příliš bohatý na funkce - možnosti, které poskytuje, jsou omezené a většina z nich byla probrána zde v tomto tutoriálu. Až budete s jejich procvičováním hotovi, přejděte na manuálovou stránku nástroje, kde se o něm dozvíte více.