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

时间:2018-01-16 09:30:32

标签: bash ubuntu alias windows-subsystem-for-linux

我正在使用Windows 10 Linux子系统(Ubuntu Bash)。

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

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

/mnt/c/Users/some folder1/some folder2/destination - folder/

我现在在Bash做的是:

~$ cd /mnt/c/Users/some\ folder1/some\ folder2/destination\ -\ folder/

因为目录太深,所以我不想每次都输入long命令。所以我想为该文件夹定义一个别名。

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

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

接下来,我想在~/.bash_aliases中添加以下行:

alias mf=<the correct format of the directory>

定义mf后,我想使用以下命令切换到目录:

~$ cd mf

你能帮我解决这个问题吗?

1)如何写<the correct format of the directory>

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

~$ cd mf

2 个答案:

答案 0 :(得分:3)

您可以使用bash中可用的echo "host.example.com: inet 10.242.177.24/24 brd" | awk -F ':| +|/' '{print $1 ", " $4}' 选项(记录在here中)来代替别名。要启用,请将cdable_vars添加到您的.bashrc中,然后创建一个包含目录路径的环境变量。例如,您可以将其添加到.bashrc

shopt -s cdable_vars

然后您将可以在外壳中使用它,如下所示:

shopt -s cdable_vars
mydir=/really/long/dir/path

答案 1 :(得分:2)

this page所述,&#34;别名仅在命令开头有意义&#34;。所以你的别名不能成为cd的参数。您可以做的是

alias cdmf='cd /mnt/c/Users/some\ folder1/some\ folder2/destination\ -\ folder/'

即。在您的别名中包含cd命令,以便键入&#39; cdmf&#39;带你到目标目录。

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

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

但是,它产生的链接仅驻留在当前目录中,因此您无法从任何地方导航到目标目录。