在Bash中将目录的别名定义为cd的参数

在Bash中将目录的别名定义为cd的参数,bash,ubuntu,alias,windows-subsystem-for-linux,Bash,Ubuntu,Alias,Windows Subsystem For Linux,我使用的是Windows10Linux子系统(UbuntuBash) 我想从Ubuntu Bash访问我的Windows文件夹 我要访问的文件夹是(请注意,名称中有空格): 我现在在Bash中所做的是: ~$ cd /mnt/c/Users/some\ folder1/some\ folder2/destination\ -\ folder/ 因为目录太深,我不想每次都键入long命令。因此,我想为该文件夹定义一个别名 在Bash中,我创建了一个文件~/.Bash\u别名。在文件~/.bash

我使用的是Windows10Linux子系统(UbuntuBash)

我想从Ubuntu Bash访问我的Windows文件夹

我要访问的文件夹是(请注意,名称中有空格):

我现在在Bash中所做的是:

~$ cd /mnt/c/Users/some\ folder1/some\ folder2/destination\ -\ folder/
因为目录太深,我不想每次都键入long命令。因此,我想为该文件夹定义一个别名

在Bash中,我创建了一个文件
~/.Bash\u别名
。在文件
~/.bashrc
中有以下命令:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
~$ cd mf
接下来,我想在
~/.bash\u别名中添加以下行:

alias mf=<the correct format of the directory>
你能帮我吗

1) 如何编写

2) 我还需要做什么才能使用

~$ cd mf
如前所述,“别名仅在命令开头有意义”。所以你的别名不能是cd的参数。你能做的就是

i、 e.在别名中包含
cd
命令,以便键入“cdmf”可以将您带到目标目录

要使用
cd-mf
,通常需要使用符号链接(或bash函数),而不是别名。试一试

ln -s /mnt/c/Users/some\ folder1/some\ folder2/destination\ -\ folder/ mf

但是,这样生成的链接只驻留在当前目录中,因此您无法从任何位置导航到目标目录。

您可以使用bash中提供的
cdable\u vars
选项,而不是alias(有文档记录)。要启用,请将
shopt-s cdable_vars
添加到.bashrc中,然后创建一个包含目录路径的环境变量。例如,您可以将其添加到.bashrc中

shopt -s cdable_vars
mydir=/really/long/dir/path
然后您将能够在shell中使用它,如下所示:

mike:/home/mike$ cd mydir
/really/long/dir/path
mike:/really/long/dir/path$ 

是的,符号链接是最好的选择。我通常会把这样的符号链接放在
~
(例如
ln-s…~/mf
)中,这样你就可以在任何地方制作
cd~/mf
。如果你喜欢其他驱动器上的文档,但仍然想使用cd文档(也可以在nautilus中重新映射)我想要相同的功能,所以我制作了一个简单的CLI,它创建了一个
cdd
terminal命令,该命令的工作原理几乎类似于
cd
,但有助于在移动中为任何路径创建别名。希望有帮助:)
shopt -s cdable_vars
mydir=/really/long/dir/path
mike:/home/mike$ cd mydir
/really/long/dir/path
mike:/really/long/dir/path$