命令
quote
的用途是什么?我没有找到任何关于它的信息,它不在/bin
文件夹中的可执行文件之列,也不能在Bash内置命令中找到。看起来它只会打印出第一个参数,就像echo
命令一样,没有其他功能。quote
的用途是什么?我没有找到任何关于它的信息,它不在/bin
文件夹中的可执行文件之列,也不能在Bash内置命令中找到。看起来它只会打印出第一个参数,就像echo
命令一样,没有其他功能。chocobai@pc ~> /bin/bash
chocobai@pc:~$ quote asdf
'asdf'chocobai@pc:~$
chocobai@pc:~$ type quote
quote is a function.
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
它添加引号但不换行。它还以适合bash的方式转义单引号。在脚本中,它可以用于引用变量或其他类型的字符串,非常有用。例如,在具有空格的路径/参数中,您需要使用它。尽管还有其他方法可以实现这一点。
真奇怪,我在网络上找不到任何关于它的文档。但是嗯,很容易看出它的作用。
which
在交互式shell和脚本中都是无用的。请使用type
代替。type quote
会告诉你它是一个函数,甚至显示函数定义。运行help type
以了解更多关于type
内建命令的信息。 - geirha/etc/bash_completion
中描述的,默认情况下由~/.bashrc
引用,而不是由/etc/bash.bashrc
引用,其中关于/etc/bash_completion
的部分被注释掉了。此外,在Ubuntu 12.04中不存在/usr/share/bash-completion/
文件夹。 - whtygerquote
是一个函数,它在我的 Debian 系统上被定义(但我猜在 Ubuntu 上也是一样的),它位于文件 /usr/share/bash-completion/bash_completion
中,该文件本身由 Bash 启动时的 /etc/bash.bashrc
引用。
我从不使用这个函数!如果您需要引用一些东西以便能够安全地被 shell 使用,请使用带有 %q
修饰符的 printf
,例如:
printf '%q\n' "Hello my friend I like 'single quotes' as well as \"double quotes\""
检查/etc/profile
中是否出现quote
:
grep '\bquote\b' /etc/profile
没有。进行下一步。
/etc/profile
所源码的文件有哪些?
grep '[[:space:]]\.[[:space:]]' /etc/profile
我有$i(需要查看源代码以了解其源自何处,但在此情况下,它是文件/etc/profile.d/*.sh
(如果存在且可读)和/etc/bash.bashrc
。查看/etc/bash.bashrc
。
/etc/bash.bashrc
中是否存在quote
?是/否等等...quote
实际上可以转义单引号,因此在shell中可用。对于这种用例,它的效果与printf %q
一样好用。 - Flimm。您将会看到类似于
预期结果: ~/.bashrc、
引用: ~/.bashrc和
printf %q: /home/your_username/.bashrc` 的输出。 - Rockallite(shopt -s extdebug; declare -F quote)
,它会告诉你函数的名称、定义的行号以及定义所在的文件名。 - wjandreaquote
是一个函数:
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
/usr/share/bash-completion/bash_completion
的第142行找到它。type quote
$INPUT
,该变量可能包含空格、引号或其他字符,并返回一个被bash确保仅作为单个参数处理的字符串。 - Ben XO