Могу ли я сократить набор текста, необходимый для `cd`, в некоторые хорошо известные каталоги

11

Я обнаруживаю, что открываю терминал, а затем много копирую в один и тот же каталог, путь к которому очень длинный.

Это означает, что я много работаю и использую вкладку, чтобы ускорить процесс.

Было бы здорово, если бы у меня была какая-то ссылка на этот каталог, а затем просто скопируйте его, чтобы я быстро оказался в глубоком вложенном каталоге.

Это возможно?

Breako Breako
источник
1
У меня есть несколько (bash) скриптов, которые выполняют небольшие (связанные) задачи, такие как cd'ing для проекта github и запуска git status. У меня также есть некоторые псевдонимы в моем .bash_profile. Не совсем то, что вы просите, но связано.
кейсер

Ответы:

24

Вот способ справиться со сложными путями cdчасто.

mkdir ~/Links
ln -s /complexpath/there ~/Links

это создаст символическую ссылку

~/Links/there

Для того, чтобы использовать этот новый Linksэффективно каталог, если ваш Логин оболочка bash просто включить эту команду в вашем ~/.profile(который используется всеми оболочками Bourne стиля bash, ksh, zsh...):

CDPATH=~/Links:.
export CDPATH

Это означает, что для каждого cdваша оболочка будет искать в двух каталогах, чтобы найти локальный путь:

~/Links
.

Вам не нужно будет перезапускать сеанс, чтобы проверить его, просто запустите:

. ~/.profile

что означает просто прочитать мой ~/.profile. (Вам не нужно будет вставлять его в свой файл, ~/.bashrcпоскольку нет необходимости повторять инициализацию той же переменной, если вы ее не меняете.)

После того как вы проверили его, вы сможете перезапустить сеанс;).

С этого момента каждый раз, когда вы захотите пойти к thereвам, вам нужно будет набирать:

cd there
Дан
источник
Это самое элегантное общее решение, которое я видел. Я обычно делаю псевдонимы для общих направлений (например , сглаживания , cdoraчтобы cd $ORACLE_HOMEи такой ...)
bmike
Будет ли кто-нибудь заинтересован простым эквивалентом через интерфейс Finder?
Дэн
11

Определение псевдонима - очень простой способ создать короткую аббревиатуру для более длинной команды. Если у вас есть правильные псевдонимы, вы можете создать раздел в своем файле .bashrc (или другом файле запуска), чтобы вам не приходилось повторно вводить эти псевдонимы для каждой новой оболочки, которую вы запускаете:

в .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

и т.п.

Выйдите из системы и снова войдите в нее (или просто запустите . ~/.bashrc), и теперь вы можете просто напечатать, httpdlogи она выполнит CD Или ws4он выполняет команду ssh и т. Д.

Это избавляет от необходимости создавать (большое количество) пустых ссылок, которые приведут к тому, что ваш домашний каталог будет выглядеть как беспорядок.

Dromendokter
источник
10

Попробуйте использовать либо autojump, либо z .

После установки любого из этих двух компонентов вы, cdкак обычно, работаете нормально, и они изучают ваши наиболее посещаемые каталоги и позволяют вам перейти к ним, введя только часть пути:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Я предпочитаю z из двух.

Tyilo
источник
не знаю об автопрыжке, но сценарий 'z' качается!
Крис
7

Я очень рекомендую fasd, который похож на autojump и z, но лучше ИМХО. С сайта:

Fasd (произносится как «быстрый») - это средство повышения производительности командной строки. Fasd предлагает быстрый доступ к файлам и каталогам для оболочек POSIX. Он вдохновлен такими инструментами, как autojump, z и v. Fasd отслеживает файлы и каталоги, к которым вы обращались, так что вы можете быстро ссылаться на них в командной строке.

Имя fasd происходит от предложенных по умолчанию псевдонимов f (файлы), a (файлы / каталоги), s (показать / искать / выбрать), d (каталоги).

Фасд ранжирует файлы и каталоги по «частоте», то есть как по «частоте», так и «по времени». Термин «вежливость» впервые был придуман Mozilla и использован в Firefox (ссылка).

Чонси Гарретт
источник
4

В качестве альтернативы вы можете создать псевдоним. Бросьте следующее в нечто вроде .bashrc или .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Затем убедитесь, что файл, в котором он находится, является sourced. Мои псевдонимы находятся в .bashrc, который я поставил с этой строкой в ​​.bash_profile: source ~/.bashrc

Амори
источник
2

Добавление удобных символических ссылок прекрасно подходит для одного или двух специальных каталогов, но очень быстро им становится трудно управлять. Гораздо лучшим решением является использование переменной среды CDPATH, доступной в bashи других оболочках, именно для этой цели.

CDPATHсписок разделенных двоеточиями (например PATH) мест для поиска имени каталога. Он может содержать как абсолютные, так и относительные имена путей. У меня есть что-то вроде export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

С этой настройкой я могу печатать cd pdftools из любого места, и это приведет меня к ~/projects/pdftools. (С линком, я должен был бы набрать , cd ~/pdftoolsесли бы я не был в моем домашнем каталоге.) Я могу также ярлык в подкаталоги: cd pdftools/bin.

In ..in CDPATHпозволяет мне печатать cd sisterdirвместо cd ../sisterdir, и т. Д. Как вы можете ожидать, когда я создаю новые каталоги в любом месте, CDPATHони будут автоматически найдены cd- не нужно создавать новые символические ссылки или псевдонимы.

Эта функция становится еще приятнее, если вы используете bash_completionфайл, распространяемый, например, в системах Debian. Он не поставлялся с моей коробкой OS X, поэтому я получил копию, и она отлично работает. (Получить его brew, или просто загрузить его вручную здесь .) Этот файл определяет усовершенствования командной строки завершения, так что я могу ввести cd pdf<TAB>и pdftoolsнайден каталог и расширен с нигде на CDPATH.

Alexis
источник
1

Конечно: создать символическую ссылку

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut
dstarh
источник
1

Мне нравится использовать bashmarks, чтобы легко создавать «закладки для каталогов» на лету.

См. Файл readme по адресу: https://github.com/huyng/bashmarks.

Примечание: вам нужно установить git, чтобы выполнить трехэтапный процесс установки bashmark: http://git-scm.com/download/mac

Удачи!

Кай Хиттл
источник
1

В качестве альтернативы вы также можете попробовать установить рыбные раковины.

http://fishshell.com/

Это имеет отличный прогноз для команд. Он также позволяет интеллектуально печатать без учета регистра без каких-либо ошибок.

Недостатком рыбы является то, что она имеет свой собственный язык сценариев, и они не совместимы с bash.

kumar0us
источник
1

Все, что я делаю, это набираю «cd» и перетаскиваю папку из Finder в терминал, который вставляет полный путь. Может быть, не так элегантно, но работает для всех папок по сравнению с несколькими сохраненными ярлыками?

Ewan Makepeace
источник