用于更改目录的命令行快捷方式

use*_*505 6 command-line shell alias cd-command symlink

我正在寻找一种简单的方法来导航到跨越多个硬盘驱动器的目录,并希望在终端中设置与快捷方式等效的内容。

在 Windows 中,我将使用mklink并创建符号链接来跳转到目录,或者创建连接以将位置附加到当前文件路径的末尾。

由于这实际上只是关于导航,因此它也不需要是链接或任何东西,也许我可以设置一些环境变量以便我可以cd $myDir(最好)。

这样的事情是可能的,还是我真的需要更好地学习我的目录?

D_B*_*Bye 10

熟悉您的文件系统布局是成为合格用户的全部组成部分 - 任何时候您都牢记这一目标,这不会浪费时间。但是,话虽如此,您确实可以更轻松地在文件系统中移动。请注意,在 Linux/UNIX 中,无论有多少设备组成您的存储,文件系统都显示为单个树,这与在 Windows 中表示每个“驱动器”(物理或逻辑,取决于您的配置)不同,在默认配置,由一个独立的树。

有很多方法可以解决这个问题。当然可以设置一堆 shell 变量,每个变量都指向不同的目录。发出cd $SomeDir将导致 shell 扩展变量$SomeDir并在命令行中替换它,以便当它最终运行时,cd接收存储在变量中的目录的名称。这可能是最简单的方法,如果您使用绝对路径填充 shell 变量,它应该可以在文件系统中的任何位置工作。

您还可以使用符号链接到目标目录(大多数 UNIX 不支持到目录的硬链接)。但是,要使其有效,您仍然需要在路径参数中提供足够的信息以允许内核解析符号链接。也就是说,您需要提供符号链接的绝对路径,或足够的相对路径以允许内核找到链接,以便它可以跟随它。

另一种方法,可能可用也可能不可用,具体取决于您的 shell,是使用 shell 的cdpath功能。这是支持bashzshtcsh和undoudtedly等。使用这种技术,您可以将环境变量设置CDPATH为以冒号分隔的目录名称列表,在运行cd. 如果 上的目录之一$CDPATH包含名称与传递给 的子目录匹配的子目录cd,shell 将更改其当前工作目录。例如,如果CDPATHcontains /usr/local,并且如果您的系统有一个目录/usr/local/www,则发出cd www将查找 的内容$CDPATH,尝试查找/usr/local被调用的子目录www,如果存在,则将其当前工作目录更改为/usr/local/www. 请注意,shell$CDPATH按照指定的顺序搜索目录,因此如果$CDPATH包含多个目录,这些目录包含您作为参数传递给 的子目录cd则第一个匹配将获胜。这让我经常出局,以至于我不再是我们cdpath


小智 5

您可以设置一些别名,例如:

$ alias abc="cd /home/user/Desktop/Folder"
Run Code Online (Sandbox Code Playgroud)

要长期存储这些内容,请将它们添加到您的 .bashrc 文件中。

如果您只是在寻找导航,这将起作用 - 但是如果您想编写任何脚本,上面的“abc”将没有任何用处。

我个人认为从长远来看,学习和记住目录结构的[相关部分]可能会很容易。太多的别名只会让您需要记住更多的东西,而且它们无法在您可能需要及时使用的不同计算机上工作。