Introduction
This repository explains how to execute the basename command to get the file name from a folder name that contains spaces in a shell script.
Commands that need to be installed
- git
Quickstart
If you have already installed the above command, run the following command to download it from the repository, then move to the directory and check the behavior of the basename command, which retrieves the file name from a folder name that contains spaces in a shell script.
ubuntu
Output results
basename: extra operand ‘command/file_name.txt’
Try 'basename --help' for more information.
basename $file
basename "$file" file_name.txt
basename '$file' $file
macos
MacPorts
Output results
basename $file hello basename file_name.txt
basename "$file" file_name.txt
basename '$file' $file
windows
WSL2
Output results
basename: extra operand ‘command/file_name.txt’
Try 'basename --help' for more information.
basename $file
basename "$file" file_name.txt
basename '$file' $file
MSYS2 MINGW64
Output results
basename: extra operand ‘command/file_name.txt’
Try 'basename --help' for more information.
basename $file
basename "$file" file_name.txt
basename '$file' $file
Procedure
ubuntu
Click to open details
Advance confirmation
Enter the following command into the terminal and if command not found does not appear, it is OK.
preinstall
If the command not found appears in the terminal, please install it using the following command.
command
Executing the following command should output a string similar to the following:
detail
basename: extra operand ‘command/file_name.txt’
Try 'basename --help' for more information.
basename $file
basename "$file" file_name.txt
basename '$file' $file
macos
Click to open details
Advance confirmation
Enter the following command into the terminal and if command not found does not appear, it is OK.
※MacOS uses the MacPorts package manager to manage commands. If you haven’t installed it yet, please see the MacPorts installation instructions at the link below.
It also allows you to set aliases for commands so that you can call them without conflicting with existing environments.
If you are using this blog for the first time, please refer to the following two articles to set up your environment.
preinstall
If the command not found appears in the terminal, install it using the following command and set an alias.
COMMAND
Executing the following command should output a string similar to the following:
detail
basename $file hello basename file_name.txt
basename "$file" file_name.txt
basename '$file' $file
windows
Click to open details
Advance confirmation
Enter the following command into the prompt and if command not found does not appear, it’s OK.
WSL2
MSYS2 MINGW64
※Windows has been confirmed to work with WSL2 and MSYS2 MINGW64. Please install WSL2 if possible, and if you are unable to set it up, you can run it by installing MSYS2, but there may be some commands that can only be run in WSL2. Please refer to the following article for instructions on how to install WSL2 and MSYS2.
preinstall
If the command not found appears in the prompt, please install it using the following command.
WSL2
MSYS2 MINGW64
command
Executing the following command should output a string similar to the following:
WSL2
detail
basename: extra operand ‘command/file_name.txt’
Try 'basename --help' for more information.
basename $file
basename "$file" file_name.txt
basename '$file' $file
MSYS2 MINGW64
detail
basename: extra operand ‘command/file_name.txt’
Try 'basename --help' for more information.
basename $file
basename "$file" file_name.txt
basename '$file' $file
Afterword
basename $file will cause an error if the variable name contains spaces, as in the output on Ubuntu and Windows. It also outputs the first character of a folder name containing spaces and the file name, as in the output on macOS. Therefore, it’s a good idea to enclose the variable name in double quotes, such as “basename “$file.”