别名接受评估结果中的变量

别名接受评估结果中的变量

我试图定义一个别名来帮助我 cd 到最近创建的目录,并且我在 .bashrc 中使用以下内容:

alias cdlatest="latestdir=$(ls -td -- */|head -n 1); cd $latestdir"

但这个别名只能使用一次。如果我更改为新目录,它仍会尝试 cd 到最后一个目录。看来是因为该变量$(ls -td -- */|head -n 1)从一开始就只计算一次。如何解决这个问题?

答案1

将别名定义周围的双引号更改为单引号,然后就可以了。

alias cdlatest='latestdir=$(ls -td -- */|head -n 1); cd $latestdir'

不过,我建议进行一些精简:

alias cdlatest='cd "$(\ls -td -- */|head -n 1)"'

我们去掉中间变量“$latestdir”,引用命令评估的结果 $(...),并使用 ls 的非别名形式。

但您需要记住,这不会处理名称中带有换行符的文件。

相关内容