自动将别名添加到.bashrc
我知道可能没有简单的方法可以做到这一点,但我想我可能会把它放在那里。我有一个目录,其中包含我处理的每个客户的子目录。我希望能够在计算机上的任何位置键入客户目录名,然后切换到该目录。换言之:自动将别名添加到.bashrc,bash,alias,aliases,Bash,Alias,Aliases,我知道可能没有简单的方法可以做到这一点,但我想我可能会把它放在那里。我有一个目录,其中包含我处理的每个客户的子目录。我希望能够在计算机上的任何位置键入客户目录名,然后切换到该目录。换言之: /dir/customers/ /dir/customers/customer1/ /dir/customers/customer2/ /dir/customers/customer3/ 我希望customer1、customer2和customer3都被添加到我的~/.bashrc文件中,每当我创建一个新
/dir/customers/
/dir/customers/customer1/
/dir/customers/customer2/
/dir/customers/customer3/
我希望customer1、customer2和customer3都被添加到我的~/.bashrc文件中,每当我创建一个新客户时,它也会更新以添加该客户
有人吗?如果在~/.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,依此类推……值得一提的另一种选择:您可以
导出CDPATH=/dir/customers
然后,如果您在任何地方,键入cd David_Johnson
,如果存在这样的目录,您将被带到/dir/customers/David_Johnson
这里的好处是,您可以只添加
David_Johnson
,而不需要为.bashrc
提供资源,就可以使用它(我知道它不是别名,但似乎提供了一点灵活性)感谢您的快速响应。我不知道为什么我没有想到一个循环。我想还在学习。非常感谢。@DrewVS:不!没有必要使用ls
,事实上这是个坏主意!Globbing会处理它:对于i in/dir/customers/*
。而且,eval
完全没有必要alias$i=“cd'/dir/customers/$i'
@Dennis Williamson:我同意你的建议,编辑了脚本,非常感谢。@anubhava:由于单引号和删除了eval
,你的alias
命令将不再有效。使用我在上一篇评论中发布的引用,这样变量就可以展开,如果变量中有空格,它就会受到保护。虽然空格会导致alias
命令出错,但总是引用包含文件名的变量名是一个好习惯。@Dennis Williamson:同意,这是一个非常好的建议。做了改变,谢谢,伙计。说得好。这是一个更简单的解决方案,效果很好。然而,我看到的缺点是,您不能使用tab auto complete,因此必须知道目录的确切名称。早期的别名解决方案为您提供了该功能。@DrewVS:Command completion很容易自定义,但如果创建N个别名对您有效,则无需:)