我可以在 bash 中创建像‘~’这样的自定义“目录别名”吗?

我可以在 bash 中创建像‘~’这样的自定义“目录别名”吗?

在 bash 中,我可以使用 转到我的主目录,cd ~并使用 中的任何命令实际上引用我的主目录~

我可以创建新的自定义“目录别名”(?) 来引用其他目录吗?假设示例:

make_alias "~~" /mnt/photon/work/foo_project/

cp ~/home.png ~~/set_8/home_4.png

如果可以,该如何做?如果不能,是设计使然吗?为什么?

很高兴有:在哪里以及如何~设置和绑定到这个“〜”?

答案1

波浪号不是别名,它是 bash 的 shell 扩展的一部分(就像*.txt或一样$((1 + 2)))。

Bash 波浪号扩展支持以下波浪符号前缀:

~            The value of $HOME

~/foo        $HOME/foo

~fred/foo    The subdirectory foo of the home directory of the user fred

~+/foo       $PWD/foo

~-/foo       ${OLDPWD-'~-'}/foo

~N           The string that would be displayed by `dirs +N'

~+N          The string that would be displayed by `dirs +N'

~-N          The string that would be displayed by `dirs -N'

dirs使用目录堆栈。您可以使用pushd向其中添加目录。

回答你的具体问题~~,是的,是的可能的将目录映射到它。只需创建一个名为的用户~并将/mnt/photon/work/foo_project/其设置为主目录:

sudo useradd '~'
sudo sed -i 's#:/home/~:[^:]*$#:/mnt/photon/work/foo_project:/bin/false#' /etc/passwd

当然,一个更“明智”的方法是使用以下~/.bashrc命令定义一个指向目录的 shell 变量

foo=/mnt/photon/work/foo_project

可以像往常一样通过 访问$foo

相关内容