basename is a very simple but useful Unix command which is used mostly in shell scripting. Taking a full path to a file as a parameter, it then stips the directory names from it and returns you just the name of a file.
Note: basename is a string stripping command – it simply returns you the last portion of a provided full path. It does not verify whether this portion is an actual file.
How to use basename command
This is how basename is invoked:
ubuntu$ basename /etc/network/if-down.d/postfix postfix
basename in shell scripting
An example of using the basename command is shown below. This command line takes the input from a standard output from the find command and outputs only the names of the files. While there's not much practicality in doing this, it's a great way to show how basename works.
Here's the standard find output:
ubuntu$ find /etc/network/
/etc/network/
/etc/network/if-down.d
/etc/network/if-down.d/wpasupplicant
/etc/network/if-down.d/postfix
/etc/network/if-post-down.d
/etc/network/if-post-down.d/wpasupplicant
/etc/network/if-post-down.d/wireless-tools
/etc/network/if-pre-up.d
/etc/network/if-pre-up.d/wpasupplicant
/etc/network/if-pre-up.d/wireless-tools
/etc/network/if-up.d
/etc/network/if-up.d/wpasupplicant
/etc/network/if-up.d/mountnfs
/etc/network/if-up.d/ntp
/etc/network/if-up.d/ntpdate
/etc/network/if-up.d/postfix
/etc/network/interfaces
And this is how only the filenames are extracted. Note, how for some parameters you see not the filenames, but directory names like if-down.d, simply because they're the last part of a string returned by the find output:
ubuntu$ for f in `find /etc/network/`; do basename $f; done; network if-down.d wpasupplicant postfix if-post-down.d wpasupplicant wireless-tools if-pre-up.d wpasupplicant wireless-tools if-up.d wpasupplicant mountnfs ntp ntpdate postfix interfaces
Leave a Reply