.bash_profile中是否可以创建两个做相同事情的别名?

时间:2018-10-30 17:11:50

标签: bash macos alias

我的.bash_profile中有一些简单的别名(OS X El Capitan,10.11.6)。有时,我想要执行相同操作的多个别名。例如,我有一个文件夹,这是我进行项目编程的起点。目前,我对代码有一个别名,而对于编程则有一个别名:

alias code='cd /path/to/Programming/; clear; pwd; ls'
alias programming='cd /path/to/Programming/; clear; pwd; ls'

这使我不必记住如何别名此目录。有没有一种方法可以设置多个别名而不必重复执行该命令?简而言之,有这样的事情吗?

alias code,programming='cd /path/to/Programming/; clear; pwd; ls'

4 个答案:

答案 0 :(得分:2)

您可以使用

SubFlow

甚至在单个alias code='cd /path/to/Programming/; clear; pwd; ls' alias programming='code' 语句中有多个分配,请参见chepner's answer

扩展别名时,将再次检查第一个单词是否是别名,因此您可以“链接”它们,请参见the manual

  

测试替换文本的第一个单词是否具有别名,但是与被扩展的别名相同的单词不会第二次扩展。

这允许使用别名

alias

没有无限递归。

答案 1 :(得分:2)

每个正文只能提供一个名称,但是可以在同一命令中将一个名称定义为另一个名称的别名。例如,

void showObjText(Object obj)
{
 bool bTableCell = cell(obj)

 if(bTableCell == true)
 {
    print "Table Cell! \n"
    displayRich("Am atleast finding tables")
 }

 if (obj."Object Heading" "" != "")
 { 
    font(getCanvas, level(obj), 1)
    displayRich(number(obj) " " obj."Object Heading" "")
 }
 if (obj."Object Text" "" != "")
 { 
    font(getCanvas, level(obj), 0)
    displayRich(richTextWithOle(obj."Object Text"))
 }
}

showObjText(obj)

在实践中,我建议为“实际”函数定义一个函数而不是别名。

alias code='cd /path/to/Programming/; clear; pwd; ls' programming=code

在不相关的切线上,code () { cd /path/to/Programming clear pwd ls } alias programming=code 确实允许为单个函数定义多个名称:

zsh

答案 2 :(得分:2)

  

简而言之,有这样的东西吗?

     

alias code,programming='cd /path/to/Programming/; clear; pwd; ls'

是的,大括号扩展:

alias {code,programming}='cd /path/to/Programming/; clear; pwd; ls'

答案 3 :(得分:1)

您可以这样做:

alias foo='ls'   # Arbitrary command. I've used ls for example
alias bar='foo'  # Use alias from previous definition

这也可以是一行:

alias foo='ls' bar='foo'

有关更多信息,请在您的shell中输入help alias


顺便说一句,我将这些别名放入.bashrc而不是.bash_profilehttps://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html#Bash-Startup-Files