在 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'
回答你的具体问题~~
,是的,是的可能的将目录映射到它。只需创建一个名为的用户~
并将/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
。