Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the quote command?

Tags:

linux

bash

shell

Using bash interactive terminal, the output of quote a is 'a' as expected. But quote doesn't work using bash -c 'quote a' or in a shell script, giving the error bash: line 1: quote: command not found. quote isn't an executable, and I failed to find quote in the bash builtins reference, so where does this command come from?

bashrc:

#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

stty -ixon

#source $HOME/.config/xdgrc
#source $HOME/.config/aliasrc

PS1='\[\033[38;2;50;255;50m\]\u\[\033[0m\]@\[\033[38;2;255;70;70m\]\h\[\033[0m\]:\w\[\033[38;2;50;255;50m\]\$\[\033[0m\]> '
like image 377
M__ Avatar asked Jul 03 '26 08:07

M__


1 Answers

quote is a helper function in /usr/share/bash-completion/bash_completion:

# This function shell-quotes the argument
quote()
{
    local quoted=${1//\'/\'\\\'\'}
    printf "'%s'" "$quoted"
}

I would not use it since it's only available in interactive shells when completion is enabled.

If you want to escape special characters in a script you can use ${var@Q} or printf %q instead.

$ wendys="Where's the beef?"
$ echo "${wendys@Q}"
'Where'\''s the beef?'
$ printf '%q\n' "$wendys"
Where\'s\ the\ beef\?
like image 72
John Kugelman Avatar answered Jul 05 '26 03:07

John Kugelman



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!