指向目录的符号链接以便于访问:.bashrc、usr/local/bin,还有其他吗?

指向目录的符号链接以便于访问:.bashrc、usr/local/bin,还有其他吗?

(Mint 19.1,基于 Ubuntu 18.04)

我有一个经常访问的目录,但路径很长。我厌倦了打字,所以我希望能够轻松跳转到这个目录。我能想到的最简单的方法是在 中创建一个别名.bashrc,例如:

alias goto_project="cd /projectdir"

这有效,但只有当我想使用时才有效cd。我认为在路径中添加符号链接会更通用,/projectdir这样我就可以全局使用cd projectmv file project(将文件移动到目录)或某些rsync调用之类的命令。我尝试将目录的符号链接放入/usr/local/bin(我使用的ln -s /projectdir /usr/local/bin/projects)中。但是,这似乎并不能cd project按预期使用。例如,调用which projects不会产生任何结果。

这种方法不可行吗?也许是因为这可能会产生冲突?

答案1

别名用于命令 - 您需要的是一个引用长目录名的简单变量。将这样的内容添加到您的 ~/.bashrc 中:

shortdir="/super/long/directory/name"

现在,像ls "$shortdir"或 这样的命令du "$shortdir"会给你你想要的。

答案2

有了 bash,你就有了CDPATH变量。对此,有如下说法:

CDPATH cd 命令的搜索路径。这是一个以冒号分隔的目录列表,shell 在其中查找 cd 命令指定的目标目录。示例值为“.:~:/usr”。

如果您有,/my/super/very/long/path/to/projectdir那么如果您输入/my/super/very/long/path/to/,则层次结构中任何位置的CDPATHacd projectdir都会使您转到特定的/my/super/very/long/path/to/projectdir

它有缺点(可能发生冲突),但我用它来指向我所有 git 工作树的顶部,这样我就可以只知道(或实际上自动完成)它们的名称来切换到它们,而不管它们真正存储在哪里。

当然,它只解决了问题的“简单方法 cd”部分,而不是以某种任意符号方式引用某个名称以供所有命令操作的全局问题。

您可能还想看看pushd/popd它们在某些情况下可以提供帮助。

答案3

当您创建符号链接时,它允许您从创建它的位置访问该目录。例如,在您的情况下,它允许您执行以下操作,cd /usr/local/bin/projects而不是cd /projectdir根据项目路径的长度可以节省一些击键。

例如cd /my/super/very/long/path/to/projectdir,如果cd ~/projectdir您之前使用ln -s /my/super/very/long/path/to/projectdir ~/projects.

除了这个,ajgringo619 解决方案这是我唯一想到的事情。

相关内容