在 *nix 上快速进行 CD 的方法?

在 *nix 上快速进行 CD 的方法?

我发现自己经常输入(当然是用 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,它就会直接带我到那里。

与上面提到的别名列表类似,但它将它们全部收集到一个地方,如果我需要提醒我存储了哪些地方,它会提供帮助文本。

相关内容