10

В bash я могу перейти в свой домашний каталог с помощью cd ~ и фактически обратиться к своему домашнему каталогу с помощью любой команды с помощью ~ .

Могу ли я создать новые пользовательские "псевдонимы каталогов" (?) ссылаться на другие каталоги? Гипотетический пример:

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

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

Как это можно сделать, если так? Если не может, то это задумано и почему так?

Приятно иметь: Где и как ~ устанавливается и привязывается к этому "~"?

1 ответ1

22

Тильда не является псевдонимом, она является частью расширения оболочки bash (так же, как *.txt или $((1 + 2))).

Расширение Bash Tilde поддерживает следующие префиксы тильды:

~            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 с помощью команды

foo=/mnt/photon/work/foo_project

к которому можно получить доступ через $foo , как обычно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .