【问题标题】:Automatically add aliases to .bashrc自动为 .bashrc 添加别名
【发布时间】:2011-07-19 08:24:07
【问题描述】:

我知道可能没有简单的方法可以做到这一点,但我想我可以把它放在那里。我有一个目录,其中包含我处理的每个客户的子目录。我希望能够在计算机上的任何位置键入该客户目录名称,然后切换到该目录。换句话说:

/dir/customers/
/dir/customers/customer1/
/dir/customers/customer2/
/dir/customers/customer3/

我希望将 customer1、customer2 和 customer3 都添加到我的 ~/.bashrc 文件中,并且每当我创建新客户时,它也会更新以添加它。

有接受者吗?

【问题讨论】:

    标签: bash alias aliases


    【解决方案1】:

    如果您在 ~/.bashrc 中添加此代码:

    for i in /dir/customers/*
    do 
       alias $(basename $i)="cd '$i'"
    done
    

    它将为customer1、customer2、customer3(/dir/customers/的所有子目录)设置别名,每次添加新客户(例如:customerN)时,它的别名customerN将在您登录时自动添加。

    例如:别名 customer1 是 cd /dir/customers/customer1 别名 customer2 是 cd /dir/customers/customer2 依此类推...

    【讨论】:

    • 感谢您的快速回复。我不知道为什么我没有想到一个循环。估计还在学习。非常感谢。
    • @DrewVS:NO! 没有必要使用ls,事实上这是个坏主意! Globbing 会解决这个问题:for i in /dir/customers/*。此外,eval 完全没有必要。 alias $i="cd '/dir/customers/$i'"
    • @Dennis Williamson:我同意你的建议,编辑了脚本,非常感谢。
    • @anubhava:由于单引号和eval 的删除,您的alias 命令将不再起作用。使用我在之前的评论中发布的引用,以便可以扩展变量,如果变量中有空格,它将受到保护。尽管空格会导致alias 命令出错,但始终引用包含文件名的变量名是一个好习惯。
    • @Dennis Williamson:再次同意并且非常好的建议。做出改变,谢谢伙计。
    【解决方案2】:

    一个值得一提的替代方案:你可以export CDPATH=/dir/customers

    然后,如果您在任何地方输入cd David_Johnson,如果存在这样的目录,您将被带到/dir/customers/David_Johnson

    这里的好处是您可以刚刚添加 David_Johnson 并且不需要为您的 .bashrc 提供资源以使其工作(我知道它不是别名,但似乎提供了一点灵活性)

    【讨论】:

    • 好点。这是一个更简单的解决方案,并且效果很好。但是,我看到的缺点是您无法自动完成选项卡,因此必须知道目录的确切名称。早期的别名解决方案为您提供了这种能力。
    • @DrewVS:命令完成很容易自定义,但是如果创建 N 个别名对你有用,那么就没有必要了 :)
    猜你喜欢
    • 2018-12-11
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多