Как сделать "псевдоним" для длинного пути?
Я попытался сделать "псевдоним" для пути, который я часто использую при написании сценариев оболочки. Я попробовал что-то, но это не удалось:
myFold="~/Files/Scripts/Main"
cd myFold
bash: cd: myFold: No such file or directory
Как я могу заставить его работать ?
Однако,cd ~/Files/Scripts/Mainстроительство.
7 ответов:
так как это переменная окружения (псевдоним имеет другое определение в
bash), вы должны оценивать его с чем-то вроде:cd "${myFold}"или:
cp "${myFold}/someFile" /somewhere/elseно я на самом деле найти его проще, если вы просто хотите, легкость переключения в этот каталог, чтобы создать реальные псевдоним (в одном из
bashзапуске файлы, такие как.bashrc), так что я могу сохранить клавиш:alias myfold='cd ~/Files/Scripts/Main'затем вы можете просто использовать (без
cd):myfold, чтобы избавиться от определения, вы используете
unalias. Следующая расшифровка показывает все из них в действии:pax> cd ; pwd ; ls -ald footy /home/pax drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd /home/pax/footy pax> cd ; pwd /home/pax pax> alias footy='cd /home/pax/footy' ; footy ; pwd /home/pax/footy pax> unalias footy ; footy bash: footy: command not found
есть опция оболочки
cdable_vars:
cdable_vars
Если это установлено, аргумент вcdвстроенные команда, которая не является каталогом считается имя переменная, значение которой является каталогом для изменения.вы можете добавить это к вашему
.bashrc:shopt -s cdable_vars export myFold=$HOME/Files/Scripts/Mainобратите внимание, что Я заменил Тильда с
вы можете использовать это следующим образом:$HOME; кавычки предотвращают расширение Тильды, и Баш будет жаловаться, что там нет каталога~/Files/Scripts/Main.cd myFoldнет
$требуются. В этом весь смысл, на самом деле – как показано в других ответах,cd "$myFold"работает без опции оболочки.cd myFoldтакже работает, если путь вmyFoldсодержит пробелы, кавычки не требуются.обычно это даже работает с автозаполнением вкладки как
во-первых, вам нужен
$чтобы получить доступ к значению "myFold", чтобы код в вопросе работал:cd "$myFold"
для упрощения этого вы создаете псевдоним в
~/.bashrc:alias cdmain='cd ~/Files/Scripts/Main'Не забудьте источник
.bashrcодин раз, чтобы сделать псевдоним доступным в текущем сеансе bash:source ~/.bashrcтеперь вы можете перейти в папку с помощью:
cdmain
во-первых, вам нужно удалить кавычки:
bashboy@host:~$ myFolder=~/Files/Scripts/Mainкавычки мешают оболочке расширить Тильду до ее особого значения быть вашим
вы можете добавить любые пути, которые вы хотите в хэш-таблицу вашего bash:
hash -d <CustomName>=<RealPath>Теперь вы сможете
cd ~<CustomName>. Чтобы сделать его постоянным, добавьте его в свой bashrc сценарий.обратите внимание, что эта хэш-таблица предназначена для обеспечения кэша для bash, чтобы не нужно было искать контент каждый раз, когда выполняется команда, поэтому эта таблица будет очищена от событий, которые делают кэш недействительным, например, изменение
$PATH.
другой вариант - использовать символическую ссылку. т. е.:
ln -s ~/Files/Scripts/Main ~/myFoldпосле этого вы можете выполнять операции до
~/myFold, например:cp some_file.txt ~/myFold, который поместит файл в
~/Files/Scripts/Main. Вы можете удалить символическую ссылку в любое время сrm ~/myFold, который будет хранить исходный каталог.
но фактический псевдоним для dir также возможен, попробуйте
myScripts="~/Files/Scripts/Main" alias myScripts="cd $myScripts"таким образом, у вас есть общее соглашение об именах (для каждой пары dir/alias), и если вам нужно скопировать что-то из текущего dir в myScripts, вам не нужно об этом думать.
IHTH
Comments