要使这个在 ~/.bashrc 中起作用,需要转义哪个字符

要使这个在 ~/.bashrc 中起作用,需要转义哪个字符

我想将此iostat命令添加到我的命令中.bashrc并为其创建一个别名:

iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')

我将其添加到我的.bashrc

alias ios='iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')'

不幸的是,它不起作用。

iostat如果我在终端中运行上述命令,它会起作用,但是当我运行ios别名时它不再起作用。

是的,我每次都会重新启动我的shell。

答案1

使用函数来代替;引用更简单:

ios () {
  iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')
}

答案2

alias ios='iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')'

您不能在引号内使用引号。在引号和双引号之间交替使用是最简单的方法。因此,这样做有效:

$ alias ios="iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')"
$

来自编辑:

请注意,尽管它在这种情况下有效(因为~在此期间不会移动到不同的块设备),但“软”外引号会导致命令替换在定义时进行评估,而不是在别名调用时动态进行评估

如果需要单引号,可以使用以下方法将它们粘合在一起'"'"'

$ alias ios='iostat -xk 2 $(findmnt -T ~ | awk '"'"'END {print $2}'"'"')'
$

答案3

嵌套引号总是会带来麻烦。

你可以这样做:

echo 'Hello '\'~\'' world'

相关内容