B S*_*ven 21 bash directory alias function
假设您有一个 alias go
,但希望它在不同的目录中做不同的事情?
在一个目录中它应该运行cmd1
,但在另一个目录中它应该运行cmd2
顺便说一句,我已经有一个用于切换到上述目录的别名,那么是否可以将go
别名分配附加到foo
别名?
alias "foo=cd /path/to/foo"
Run Code Online (Sandbox Code Playgroud)
在 OSX 上使用 bash(?)。
Ber*_*ard 17
不完全确定您要问什么,但别名只是扩展为别名中的内容。如果您有两个别名,则可以附加不同的命令,甚至是别名。
alias "foo=cd /path/to/foo; go"
alias "foo2=cd /path/to/foo2; go"
Run Code Online (Sandbox Code Playgroud)
在任何其他情况下,您可以在您的 .bashrc
function go ()
{
if [ "$PWD" == "/path/to/foo" ]; then
cmd1
elif [ "$PWD" == "/path/to/go" ]; then
cmd2
fi;
}
Run Code Online (Sandbox Code Playgroud)
如果您有更多选择,最好使用案例结构。
如果将以下函数添加到.bashrc中
function cd () {
builtin cd "$@" && [[ -f .aliases ]] && . .aliases
return 0
}
Run Code Online (Sandbox Code Playgroud)
每次您 cd 到包含 .aliases 文件的目录时,都会获取该文件。
如果其他人可以在您的计算机上创建文件,请注意安全。
使用这个技巧,别名永远不会被删除,但您可以在函数中编写任意数量的代码。
Ondir使用了这个技巧并且有大量的附加功能。
http://swapoff.org/ondir.html#download
我感觉您非常“面向目录”,在这种情况下,这可能更适合您的心态。
(但老实说,我认为这完全是个坏主意,您希望命令是全局的。)
在 中.bashrc
,放入alias go="./.cmd"
(然后source ~/.bashrc
)。
然后,在每个这样的目录中,放置一个名为.cmd
, then的脚本chmod +x .cmd
,然后go
做你想做的事。
我正在开发一个项目来实现这一目标。检查一下:localalias。
这是一个演示:
有趣的是,我实际上go
在演示中用作示例。我没有显示切换目录(我应该在演示中更改一些内容),但该la
命令的函数确实是它们定义的目录的本地函数。
归档时间: |
|
查看次数: |
16668 次 |
最近记录: |