basename Command in Linux with examples - GeeksforGeeks

15 May, 2019
basename strips directory information and suffixes from file names i.e. it prints the file name NAME with any leading directory components removed.
The basename command can be easily used by simply writing basename followed by the file name or the full pathname.
Syntax of basename command :
$basename NAME [SUFFIX]
        or
$basename OPTION NAME

where, NAME refers to the file name or file full pathname and OPTION refers to the options compatible with the basename command and in case, if you want to strip off the suffix of a file you can give the filename followed by the SUFFIX name you want to get rid off.
Example :
/* basename removes directory path and 
   returns the file name, kt */
$basename /usr/local/bin/kt
kt

In the first case, the basename command removes the directories name from the full path name given of file kt and in the second case basename removes the suffix .html from kt.html.
-a, – -multiple option : This option lets you support multiple arguments and treat each as a NAME i.e you can give multiple file names or full path names with the use of -a option./* -a is used for multiple inputs */
$basename -a /usr/local/bin/kt /usr/local/bin/kt.html
kt
kt.html

/* -a is used for multiple inputs */
$basename -a /usr/local/bin/kt /usr/local/bin/kt.html
kt
kt.html

-s, – -suffix = SUFFIX option : This option removes a trailing suffix SUFFIX,such as a file extension.
/*.html suffix is removed from kt.html 
   when followed by -s option */
$basename -s .html kt.html
kt


/*.html suffix is removed from kt.html 
   when followed by -s option */
$basename -s .html kt.html
kt

-z option : This separates the output with NULL rather than a newline./* The outputs of the two arguments passed
   are not separated by a newline*/
$basename -az /usr/local/bin/kt kt.html
ktkt

/* The outputs of the two arguments passed
   are not separated by a newline*/
$basename -az /usr/local/bin/kt kt.html
ktkt

– -help option : This displays the help information and exit.
– -version option : This displays the version information and exit.
There are many utilities available which are only useful when it comes to shell scripts and doesn’t have any practical application when used by itself and basename comes under this category.
Example of a shell script which converts gif image files into png image files with the help of basename command :
/*shell script to convert the
gif image file format into
png image file format */

#!/bin/sh
for file in *.gif;do
    #exit if there are no files
    if [! -f $file];then
        exit
    fi
    b='basename $file .gif'
    echo NOW $b.gif is $b.png
    giftopnm $b.gif | pnmtopng >$b.png
done

In the above shell script basename command is used to extract the file names with extension .gif without the extension so that they can be converted into .png files.
References : basename command
linux-command
Linux-file-commands
Linux-Unix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
tar command in Linux with examples
UDP Server-Client implementation in C
Conditional Statements | Shell Script
Cat command in Linux with examples
Tail command in Linux with examples
touch command in Linux with Examples
Mutex lock for Linux Thread Synchronization
echo command in Linux with Examples
tee command in Linux with examples
Compiling with g++