Могу ли я создать собственный «псевдоним каталога», например «~» в bash?

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

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

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

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

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

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

9 голосов | спросил n611x007 14 MarpmThu, 14 Mar 2013 16:01:02 +04002013-03-14T16:01:02+04:0004 2013, 16:01:02

1 ответ


21

Тильда не является псевдонимом, это часть расширения оболочки 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, как обычно.

ответил Dennis 14 MarpmThu, 14 Mar 2013 16:36:34 +04002013-03-14T16:36:34+04:0004 2013, 16:36:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132