我发现自己经常输入(当然是用 tab 键)荒谬的路径,比如
cd path/to/the/thing\ that\ I\ need/python/proj/eraseme
除了执行ln -s
(或其他类型的 ln?),还有其他方法可以更快地解决问题吗?此外,如果解决方案是使用ln
,是否有一些标准方法/位置来放置链接,以免弄乱我的~
目录?
我不是只想寻找捷径:任何有助于解决“如何出行”问题的解决方案都会有所帮助。
答案1
在 bash 中,$CDPATH
环境变量包含在使用时要搜索目录的路径列表cd
。
CDPATH=".:~/long path to my projects"
cd eraseme
答案2
有些人会使用别名来达到这个目的。例如,试试这个:
alias cderaseme='cd /home/user/whatever/path/to/the/thing\ that\ I\ need/python/proj/eraseme'
现在,每次要转到该目录时,都可以输入 cderaseme。该别名仅对当前终端会话有效,因此请将其放入 .bashrc 中以保留它。
答案3
一些简单的想法:
- 使用制表符补全。
- 使用
cd
返回到您的主目录。使用cd ~/<dir>
转到相对于您的主目录的目录。 - 用于
cd -
返回上一个目录。即,使用此命令,您可以在两个目录之间来回切换。 - 使用
pushd <dir>
转到目录并记住目录堆栈上的前一个位置。然后使用popd
返回(在目录堆栈中)前一个位置。 - 使用相对路径,即
cd ../<dir>
,而不是绝对路径。 - 使用
cd !$
转到上一个命令的最后一个参数中提到的目录(取决于您的 shell)。示例:mkdir /tmp/dir
后跟cd !$
,您的当前目录是/tmp/dir
。
答案4
我通常会创建一个名为“mycd”之类的 shell 脚本,我可以向其传递参数。如下所示:
# Shell script to CD into various locations.
if [ "$1" == "myhome" ] ; then cd ~;
elif [ "$1" == "mypref" ] ; then cd ~/Library/Preferences;
elif [ "$1" == "mylib" ] ; then cd ~/Library;
elif [ "$1" == "syslib" ] ; then cd /System/Library;
elif [ "$1" == "--help" ] ; then
echo "Usage: $0 location, which can be one of"
echo "myhome = My home dir."
echo "mypref = My Preferences dir."
echo "mylib = My Libraries dir."
echo "syslib = System library."
echo "--help = Show this message."
else echo "$0: $1 not known.";
fi
然后在别名文件中放入如下条目:
alias mycd='. /path/to/mycd'
然后我只需用类似的命令来调用它mycd mylib
,它就会直接带我到那里。
与上面提到的别名列表类似,但它将它们全部收集到一个地方,如果我需要提醒我存储了哪些地方,它会提供帮助文本。