我可以将cd缩短到一些众所周知的目录中吗?


11

我发现自己打开一个终端,然后将很多CD放入同一目录,该目录的路径很长。

这意味着我要进行很多操作,并使用选项卡来加快速度。

如果我可以通过某种方式链接到该目录,然后仅通过cd链接到该目录,这样我就可以快速进入深层嵌套目录,那将非常棒。

这可能吗?


1
我有几个(bash)脚本,可以执行一些小(相关)任务,例如将cd加载到github项目并运行git status。我的帐户中也有一些别名.bash_profile。不完全是您的要求,而是相关的。
键盘手

Answers:


24

这是处理cd频繁出现的复杂路径的方法。

mkdir ~/Links
ln -s /complexpath/there ~/Links

这将创建符号链接

~/Links/there

要使用这个新的Links有效的目录,如果你的登录shell是bash 只在您的这个命令~/.profile(这是由所有的Bourne风格炮弹bashkshzsh...):

CDPATH=~/Links:.
export CDPATH

这意味着对于每个cd,您的外壳程序将在2个目录中查找以找到本地路径名:

~/Links
.

您无需重新启动会话即可对其进行测试,只需运行:

. ~/.profile

意思就是读我的~/.profile。(您不必将其放入您的表中,~/.bashrc因为无需更改时就无需重复相同的变量初始化。)

测试完之后,您将可以重新启动会话;)。

从现在开始,每次您想去的时候there都必须输入:

cd there

这是我所见过的最优雅的通​​用解决方案。我通常做的共同目标别名(如混叠cdora,以cd $ORACLE_HOME和这样的...)
bmike

任何人都可以通过Finder界面对简单的等效项感兴趣吗?
2013年

11

定义别名是对较长的命令进行简短缩写的一种非常简单的方法。正确使用别名后,可以在.bashrc文件(或其他启动文件)中创建一个节,这样您就不必为启动的每个新shell重新键入这些别名:

在.bashrc中:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

等等

注销并重新登录(或运行. ~/.bashrc),现在您可以键入httpdlog并执行cd了。或者ws4,它实际上执行ssh命令等。

这消除了创建(大量)空链接的需要,这些链接将导致您的主目录看起来太乱了。


10

尝试使用autojumpz

安装这两个目录中的任何一个之后,您cd就像正常人一样,它们会学习您访问量最大的目录,并允许您通过仅输入路径的一部分来进入它们:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

我更喜欢两者中的z。


不了解自动跳转,但是“ z”脚本很糟糕!
克里斯(Kris)

7

我强烈推荐fasd,它与autojump和z类似,但恕我直言。从网站:

Fasd(发音类似于“快速”)是命令行生产力的助推器。Fasd提供了对POSIX shell的文件和目录的快速访问。它的灵感来自于自动跳转,z和v之类的工具。Fasd跟踪您访问的文件和目录,以便您可以在命令行中快速引用它们。

fasd名称来自默认的建议别名f(文件),a(文件/目录),s(显示/搜索/选择),d(目录)。

Fasd通过“频率”(即“频率”和“频率”)对文件和目录进行排名。“频率”一词最早是由Mozilla创造的,并在Firefox中使用(链接)。


4

或者,您可以创建一个别名。将以下内容放入.bashrc或.aliases之类的内容中

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

然后,确保其中的文件为sourced。我的别名在.bashrc中,我从.bash_profile中的这一行获取该别名: source ~/.bashrc


2

添加便捷符号链接对于一个或两个特殊目录来说是不错的选择,但是很快它就会变得很难管理。一个更好的解决方案是使用环境变量CDPATH可在bash和另一个外壳只是这个目的。

CDPATH是用冒号分隔的列表(例如PATH),用于查找目录名称。它可以包含绝对路径名和相对路径名。我有我的一套喜欢的东西export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>"

设置完成后,我可以cd pdftools 在任何地方键入内容它将带我到~/projects/pdftools。(使用符号链接,cd ~/pdftools如果我不在HOME目录中,则必须输入。)我还可以快捷方式进入子目录:cd pdftools/bin

..在我CDPATH让我的类型cd sisterdir,而不是cd ../sisterdir等你可以想到,当我在任何地方创建新的目录CDPATH,他们将自动被发现cd-没有必要建立新的符号链接或别名。

如果您使用bash_completion分发的文件(例如在Debian系统中),此功能将变得更好。它没有随OS X盒一起提供,因此我获取了一份副本,并且工作正常。(brew此处获取或直接从此处手动下载。)此文件定义了命令行完成功能的增强,因此我可以键入cd pdf<TAB>pdftools目录,并且可以从上的任何位置进行扩展CDPATH


1

当然:创建一个符号链接

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut


1

另外,您也可以尝试安装鱼壳。

http://fishshell.com/

这对命令有很好的预测。它还可以智能地键入不区分大小写的字母,而无需进行任何操作。

鱼的缺点是它具有自己的脚本语言,并且与bash不兼容。


1

我所要做的就是键入“ cd”,然后将文件夹从Finder拖到终端中,该终端将粘贴到完整路径中。也许不那么优雅,但是可以用于所有文件夹,而不是一些保留的快捷方式?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.