Мне часто приходится прыгать по нескольким каталогам в моей домашней папке и уставать от их написания. Я хотел бы более быстрый подход, который традиционно будет символической ссылкой.
Однако я не хочу загромождать свой домашний каталог десятками символических ссылок. Я мог бы создать какой-то ~/links/
каталог и загромождать его символическими ссылками, но он все еще уродлив. Кроме того, я могу захотеть создать символические ссылки, которые меняются каждый день (определяется в .bashrc) для перехода в каталог нынешних дней.
Есть ли способ эффективно использовать псевдоним символической ссылки, создавая что-то, что будет распознаваться как ссылка для быстрой навигации, но на самом деле не появится, когда я создаю ls
свой домашний каталог, и не будет действовать после текущего сеанса?
источник
cd -
воляcd
к последнему каталогу была ранее. Следовательно, если вы сделаете это дважды, вы вернетесь к тому, с чего начали ... очень хорошо для ситуации "о, я забыл отредактировать файл someFile.txt в предыдущем месте" => Просто:,cd -
отредактировать файл someFile.txtcd -
Ответы:
Вы можете использовать вкладку завершения. По умолчанию во многих дистрибутивах Linux bash настроен так, что когда вы нажимаете клавишу [TAB], вы получаете список возможных совпадений, или, если есть только одно совпадение, оно заполняется полностью. Для cd это обычно список подкаталогов текущего рабочего каталога. Вы можете перезаписать это, но я предлагаю вместо этого создать псевдоним, например,
jd
для «jump directory»:а затем, определяя «закладки», которые вы хотите в качестве дополнения для JD. Посмотрите на man-странице bash гораздо больше опций (включая автоматическую генерацию результатов на лету из команды или функции), но самый простой способ - это просто список слов с
-W
:полный -W "/ srv / www ~ / tmp ~ / work" jd
Теперь напечатайте
jd
и нажмите [TAB], и вы увидите свои «закладки». Введите любую неоднозначную часть, а затем нажмите [TAB], чтобы завершить. (В приведенном выше~
примере s расширяется до моего домашнего каталога, поэтому первый [TAB] дает мне a/
, и если яw
снова нажму и [TAB],/srv/www
будет заполнено.)Конечно, вставьте это,
~/.bash_profile
чтобы оно сохранялось.Или мы можем перейти на следующий уровень. Создайте каталог
~/.shortcuts
- начиная с точки, он будет скрыт и не будет мешать вашему хорошему чистому домашнему каталогу - и заполните его ссылками на нужные вам каталоги. Затем поместите это в ваш ~ / .bash_profile:Это определяет чуть более сложное завершение в функции
_list_shortcuts
построения списка имен и делаетjd
его функцией, а не простым псевдонимом, поскольку мы хотим, чтобы он действовал иначе, чем простоcd
.-P
Флагcd
делает его разрешить символические ссылки, так что все становится прозрачной магией. Ваши ярлыки даже не должны совпадать с целями.Так:
И, для дополнительной дозы фантазии, составьте
jd
список всех ваших ярлыков при выполнении без каких-либо параметров:Примечание: я использую
compgen -W $( cmd )
вместо того,compgen -C 'cmd'
потому что последний никогда не работает для меня, и я не понимаю, почему. Это может быть мой новый вопрос. :)источник
У псевдонимов оболочки есть функция, с которой вы можете (некоторые) дополнять имена (обычно привязаны tab). Кроме того, вы можете использовать
CDPATH
функцию, которая "недавно" (в течение последних 5-6 лет) была улучшена для поддержки завершения имени. Если это работает для вас, у вас есть преимущество в том, что вы вводите фактическое имя каталога, а не мнемонику для него.Согласно руководству по bash
Дальнейшее чтение:
источник
CDPATH
переменной среды, спасибо. Я мог бы добавить свойgit_repos
каталог в эту переменную ....Для каталогов, которые вы часто посещаете, но не меняете ежедневно, другой вариант - просто добавить несколько
alias
команд в ваш.bashrc
файл:У друга около 50 из них; У меня есть горстка; быстро и просто. Только
изменить каталог на / u01 / app / oracle
источник
Я рекомендую
pushd
иpopd
.Лично я нахожу их удобными при разработке / чтении исходного кода, когда задействовано несколько каталогов.
Они эффективно реализуют структуру стека / LIFO, где вы нажимаете на каталог (
pushd
), а следующая команда каталога POP (popd
) получает его.Итак, когда внутри dir, вы бы сделали:
И когда вам нужно получить его, вы делаете
Вы можете выполнить несколько
pushd
операций, а затем выполнить соответствующие действияpopd
, чтобы вернуться в каталоги.Я оставлю здесь ссылку.
http://www.eriwen.com/bash/pushd-and-popd/
источник
popd
. Я заполняю свойdirs
список (который заполняетсяpushd
командами) всеми каталогами, которые я хочу посетить / работать в течение этого куска времени, затем я запускаюpushd +1
. Затем я цикл может просматривать каталоги с простым ,!pu
который очень быстро. (Обратите внимание, что как в Ubuntu, так и в CentOSpushd
это единственная команда, доступная в чистой установке, которая начинается сpu
.)Вы можете просто поместить их как переменные в свой
~/.bashrc
, и тогда они будут только$
отсутствовать.источник
Очевидный ответ - переменные , те символические вещи в оболочке, которые обозначают другие вещи, аналогично символическим ссылкам в файловой системе.
В любой приличной оболочке вы получаете Tabзавершение имен переменных, что в дальнейшем помогает.
источник