2014-04-03 6 views
2

Есть определенные папки, которые я делаю в течение всего дня ... например, «dev», который находится в папке «Мои документы».Как создать символическую ссылку для открытия каталога в Terminal on Mac osx?

У меня была эта яркая идея создать символические ссылки, поэтому я мог просто набрать «dev», а Terminal - cd в этот каталог. Однако это не работает. Мои две попытки ниже.

Кто-нибудь знает, как это сделать или есть лучший способ?

ln -s /Users/kelly/Documents/Dev/ dev 
ln -s 'cd /Users/kelly/Documents/Dev/' dev 

$ dev 
bash: dev: command not found 
+1

Подобно тому, как интересное примечание, 'zsh' предоставляет опцию' AUTO_CD', где «команда», как 'dev' трактуется как неявный' кд dev', если команда не может быть выполнена. В сочетании с 'CDPATH' это обеспечит функцию, которую вы ищете. – chepner

ответ

6

С линком вы можете использовать

ln -s your/dev/directory/ dev 

, но вы можете использовать его только в каталоге вы создали его и в виде cd dev.

Если вы просто хотите ввести dev в любой момент использовать псевдоним:

alias dev="cd your/dev/direcrory/" 

(это должно тогда быть в вашем ~/.bashrc)

+0

Спасибо! Я принял это, потому что вы объяснили, почему моя идея не сработает, а затем предложила альтернативу. – Kelly

+1

@Kelly Я узнал много ярлыков, включая псевдонимы (и некоторые из них очень удобные), просмотрев репозитории [.dotfiles] (https://github.com/mathiasbynens/dotfiles) на github.Это один из ориентированных на OSX, но я понимаю, что большинство из них будут работать в любой системе Unix, и есть одинаково хорошие .dotfiles repos для Linux. –

+0

Спасибо Адаму! Это было полезно. – Kelly

1

Вы должны написать cd dev в вашем случае, но это может быть лучше для вас, чтобы использовать bash aliases ...

Запись в файле $HOME/.bash_aliases:

alias dev='cd /Users/kelly/Documents/Dev/' 

после открытия нового терминал, выполняющий dev, даст вам то, что вы хотите ...

2

Вы можете использовать alias fo r dev. Добавить на $ {HOME}/Bashrc

alias dev='cd /Users/kelly/Documents/Dev/' 

и Баш правильно разбирает в качестве псевдонима ~:.

alias dev='cd ~/Documents/Dev/' 

Использование псевдонима устраняет необходимость символической ссылки на всех.

+1

Псевдоним должен содержать '=' и '~ Documents /' относится к домашнему каталогу пользователя 'Documents', а не папке' Documents' в домашней папке пользователя! –

+0

Спасибо ExP - исправлено сообщение. – suspectus

1

В вашем $ HOME/.bashrc, объявить массив который сопоставляет каталоги с псевдонимами.

declare -A __diraliasmap=(
    [dev]="/Users/kelly/Documents/Dev" 
    [other]="/Users/kelly/Documents" 
) 

Также определите функцию command_not_found_handle. Если определено, эта функция будет выполняться bash, когда команда не будет найдена. В этой функции проверьте, указана ли команда, которая была неудачной, как псевдоним для каталога и, если это так, cd в связанную директорию.

command_not_found_handle() 
{ 
    if [[ ${__diraliasmap[$1]+set} = set ]]; then 
    builtin cd "${__diraliasmap[$1]}" 
    else 
    false 
    fi 
}