Как сделать "псевдоним" для длинного пути?



Я попытался сделать "псевдоним" для пути, который я часто использую при написании сценариев оболочки. Я попробовал что-то, но это не удалось:



myFold="~/Files/Scripts/Main"
cd myFold

bash: cd: myFold: No such file or directory


Как я могу заставить его работать ?

Однако,cd ~/Files/Scripts/Mainстроительство.

630   7  

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

    Ничего не найдено.