GNU/Linux >> Znalost Linux >  >> Linux

Použití příkazu Linux Basename ve skriptech Bash

Příkaz basename v systému Linux vytiskne konečnou komponentu v cestě k souboru. To je užitečné zejména ve skriptech bash, kde chcete extrahovat název souboru z dlouhé cesty k souboru.

Dovolte mi, abych vám to ukázal na několika příkladech.

Příkaz Basename

Příkaz basename má dva druhy syntaxe. První obsahuje příponu:

basename PATH [suffix]

Druhý umožňuje přidat možnosti:

basename OPTION PATH

Možnosti nelze kombinovat s příponou. Nenechte se zatím zmást. Postupujte podle příkladů a pak pochopíte, co chci říct.

Použití příkazu basename s cestou k souboru poskytne název souboru:

basename /home/user/data/filename.txt
filename.txt

Příkaz basename je vlastně docela hloupý. Opravdu nerozpoznává cestu k souboru. Vyhledá pouze lomítka (/) a vypíše to, co je za posledním lomítkem.

Pokud například spustím výše uvedený příklad odstraněním názvu souboru, bude výsledkem následující.

basename /home/user/data
data

Odebrat příponu souboru s příponou

Primárním použitím příkazu bash je extrahování názvu souboru z cesty k souboru. Příponu souboru můžete také odstranit při extrahování názvu souboru.

Stačí uvést, co chcete z konce výstupu odstranit. Řekněme, že chcete odstranit soubor .txt z souboru filename.txt. Stačí jej přidat na konec příkazu basename:

basename /home/user/data/filename.txt .txt
filename

Můžete také použít volbu -s pro příponu:

basename -s .txt /home/user/data/filename.txt
filename

Přípona je odstraněna z konce poslední složky vstupu. Opravdu nezjišťuje příponu souboru. Pokud zadáte txt (bez tečky) místo .txt, dostanete ‘název souboru.’ (s tečkou na konci).

Také, pokud zadáte příponu, která není na konci komponenty, výstup zůstane, jako by žádná přípona nebyla.

basename /home/user/data/filename.txt name
filename.txt

Použití základního názvu s více cestami

S volbou -a , můžete použít více cest současně.

basename -a /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1.txt
filename2.txt

Můžete použít možnost přípony -s s -a ale s určitými omezeními. Ke všem cestám k souboru můžete zadat pouze jednu příponu.

basename -as .txt /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1
filename2

Nemůžete přiřadit jednotlivé dostatečnosti. Nebude to fungovat.

Výstup můžete také oddělit pomocí NULL místo nového řádku pomocí -z možnost.

Použití basename ve skriptu bash

Ukázal jsem několik příkladů příkazu basename. Podívejme se na několik příkladů základního jména ve skriptech bash.

Předpokládejme, že máte proměnnou cesty k souboru a chcete uložit název souboru z cesty do proměnné. Může to být jednoduchý skript:

pathname="/home/dir/data/filename"

result=$(basename "$pathname")

echo $result

Dalším příkladem je místo, kde chcete přejmenovat přípony souborů. Samozřejmě můžete použít příkaz rename pro dávkové přejmenování souborů, ale toto je pouze příklad.

Napsal jsem tedy tento ukázkový skript za účelem nahrazení přípon souborů:

for file in *$1; do
if [ -f $file ]; then
 mv $file `basename $file .$1`.$2
fi
done

Všimli jste si, že jsem ve skriptu bash zkontroloval, zda je to soubor nebo ne, aby to nezměnilo odpovídající adresář?

Výše uvedený skript můžete použít takto:

./myscript.sh html htm

A přejmenuje všechny soubory v aktuálním adresáři s html na konci na htm.

To bylo jen několik příkladů. Můžete jej použít podle svých požadavků.

Příkaz basename je doplněn příkazem dirname. Na rozdíl od basename vypíše příkaz dirname celou cestu kromě poslední komponenty.

Doufám, že se vám tento návod líbil. Jako vždy můžete klást otázky nebo poskytovat návrhy v sekci komentářů.


Linux
  1. Použití Linux Sleep Command ve skriptech Bash

  2. Příkaz wc pro Linux

  3. Jak rozdělit iso nebo soubor pomocí příkazu „split“ v Linuxu

  1. Linux Tail Command

  2. Linux Touch Command

  3. Linuxový příkaz grep

  1. Cat Command v Linuxu

  2. Příkaz souboru Linux

  3. Méně příkazů v Linuxu