Bash – Get Current Directory or Folder Name (Without Full Path) In Bash Script

No need for basename, and especially no need for a subshell running pwd (which adds an extra, and expensive, fork operation); the shell can do this internally using parameter expansion: result=${PWD##*/} # to assign to a variable result=${result:-/} # to correct for the case where PWD=/ printf ‘%s\n’ “${PWD##*/}” # to print to stdout # … Read more

Propagate all arguments in a bash shell script

Use “$@” instead of plain $@ if you actually wish your parameters to be passed the same. Observe: $ cat no_quotes.sh #!/bin/bash echo_args.sh $@ $ cat quotes.sh #!/bin/bash echo_args.sh “$@” $ cat echo_args.sh #!/bin/bash echo Received: $1 echo Received: $2 echo Received: $3 echo Received: $4 $ ./no_quotes.sh first second Received: first Received: second Received: … Read more

How can I pipe stderr, and not stdout?

First redirect stderr to stdout — the pipe; then redirect stdout to /dev/null (without changing where stderr is going): command 2>&1 >/dev/null | grep ‘something’ For the details of I/O redirection in all its variety, see the chapter on Redirections in the Bash reference manual. Note that the sequence of I/O redirections is interpreted left-to-right, … Read more