【问题标题】:Bash alias containing a variable of the current directory包含当前目录变量的 Bash 别名
【发布时间】:2019-06-15 03:47:38
【问题描述】:

我想要一个使用当前目录作为参数/变量的别名。

例子:我目前在

/home/me/myproject

我想输入应该执行这个的“sds”:

./manage.py --settings=myproject.settings.dev

但是,对于不同的文件夹,“myproject”应该是不同的。所以如果我在

/home/me/myotherproject

别名应该执行:

./manage.py --settings=myotherproject.settings.dev

等等。

我已经知道了

echo "${PWD##*/}"

获取我的当前目录,但我无法将它与我的整个命令连接起来。

非常感谢您的任何帮助或指点!

【问题讨论】:

  • 写一个函数,而不是别名。别名应仅用于简单的文本替换。

标签: linux bash terminal sh


【解决方案1】:

确保在定义别名时使用单引号,以防止 bash 在定义时扩展 ${PWD}:

alias ooo='./manage.py --settings="${PWD##*/}.settings.dev"'

【讨论】:

  • 天哪。如此简单而美丽。我期待一些“更混乱”的东西。太棒了!非常感谢!
  • 一个函数更简单:sds () { ./manage.py --settings="${PWD##*/}.settings.dev"; },并且没有那么多引用困难。
  • @chepner 是的,与别名相比,函数的复杂性极低,并且更易于维护。
猜你喜欢
  • 2013-04-18
  • 2016-11-19
  • 2012-10-27
  • 1970-01-01
  • 2018-06-18
  • 2021-07-17
  • 2014-11-04
  • 1970-01-01
  • 2010-09-24
相关资源
最近更新 更多