Linux Commands Examples

A great documentation place for Linux commands

basename

strip directory and suffix from filenames


see also : dirname - readlink

Synopsis

basename NAME [SUFFIX]
basename
OPTION... NAME...


add an example, a script, a trick and tips

: email address (won't be displayed)
: name

Step 2

Thanks for this example ! - It will be moderated and published shortly.

Feel free to post other examples
Oops ! There is a tiny cockup. A damn 404 cockup. Please contact the loosy team who maintains and develops this wonderful site by clicking in the mighty feedback button on the side of the page. Say what happened. Thanks!

examples

1
source
            
name=`basename`
name2=`basename $0`
name3=`basename /usr/bin/meld`
echo "basename: [$name]"
echo "basename D0: [$name2]"
echo "basename meld: [$name3]"
0

basename /usr/bin/sort

-> "sort"

basename include/stdio.h .h

-> "stdio"

basename -s .h include/stdio.h

-> "stdio"

basename -a any/str1 any/str2

-> "str1" followed by "str2"


0
There is no need to use the external command, basename. It is much faster to use the shell's built-in capabilities:



BASENAME=${CWD##*/}



Also, 'BASENAME=`basename ${CWD}`' will fail if $CWD contains whitespace. It should be:



BASENAME=`basename "$CWD"`



This function is a complete POSIX-compliant replacement for the external command: 



basename() #@ Strip directory and suffix from filenames

{          #@ USAGE: basename pathname [suffix]

  local path suffix _basename

  case $1 in

    --) shift ;;

  esac

  path=$1

  suffix=$2

  case $path in

    "") return ;;

    *) path=${path%"${path##*[!/]}"}

       case $path in

         "") path="/" ;;

          *) path=${path##*/} ;;

       esac

       ;;

  esac

  case $path in

    "$suffix" | "/")

    _basename="$path"

    ;;

    *)

    _basename=${path%$suffix}

    ;;

  esac

  printf "%s\n" "$_basename"

}
example added by Chris F.A. Johnson
0
There is no need to use the external command, basename. It is much faster to use the shell's built-in capabilities:



BASENAME=${CWD##*/}



Also, 'BASENAME=`basename ${CWD}`' will fail if $CWD contains whitespace. It should be:



BASENAME=`basename "$CWD"`



This function is a complete POSIX-compliant replacement for the external command: 



basename() #@ Strip directory and suffix from filenames

{          #@ USAGE: basename pathname [suffix]

  local path suffix _basename

  case $1 in

    --) shift ;;

  esac

  path=$1

  suffix=$2

  case $path in

    "") return ;;

    *) path=${path%"${path##*[!/]}"}

       case $path in

         "") path="/" ;;

          *) path=${path##*/} ;;

       esac

       ;;

  esac

  case $path in

    "$suffix" | "/")

    _basename="$path"

    ;;

    *)

    _basename=${path%$suffix}

    ;;

  esac

  printf "%s\n" "$_basename"

}
example added by Chris F.A. Johnson

description

Print NAME with any leading directory components removed. If specified, also remove a trailing SUFFIX.
-a
, --multiple

support multiple arguments and treat each as a NAME

-s, --suffix=SUFFIX

remove a trailing SUFFIX

-z, --zero

separate output with NUL rather than newline

--help

display this help and exit

--version

output version information and exit

copyright

Copyright © 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

reporting bugs

Report basename bugs to bug-coreutils[:at:]gnu[:dot:]org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report basename translation bugs to <http://translationproject.org/team/>


see also

dirname , readlink

The full documentation for basename is maintained as a Texinfo manual. If the info and basename programs are properly installed at your site, the command

info coreutils 'basename invocation'

should give you access to the complete manual.


author

Written by David MacKenzie.

How can this site be more helpful to YOU ?


give  feedback