Я хотел бы часто переключаться между каталогами, которые находятся в абсолютно не связанных путях, например /Project/Warnest/docs/
и ~/Dropbox/Projects/ds/test/
.
Но я не хочу печатать cd /[full-path]/
все время. Существуют ли какие-либо команды быстрого доступа к ранее работавшим каталогам?
Одним из решений, которое я мог бы придумать, является добавление переменных окружения в мои bash
.profile
для часто используемых каталогов и cd
для них, используя эти переменные.
Но есть ли другое решение для этого?
bash
shell
command-line
alias
cd-command
saiy2k
источник
источник
Ответы:
Если вы просто переключаетесь между двумя каталогами, вы можете использовать
cd -
для перехода вперед и назад.источник
Существует переменная оболочки
CDPATH
вbash
иksh
иcdpath
вzsh
:Таким образом, вы можете установить в вашем ~ / .bashrc:
Тогда
cd docs
иcd test
вы попадете в первый найденный такой каталог. (Я имею в виду, что даже если в текущем каталоге будет существовать каталог с таким же именем, с нимCDPATH
все равно будут консультироваться. Если онCDPATH
будет содержать больше каталогов, имеющих подкаталоги с данным именем, будет использоваться первый.)источник
$CDPATH
была.
(запись явно, т.е.:
также работает). В противном случае вы получите странное поведение, при которомCDPATH
каталоги имеют приоритет над каталогами в текущем рабочем каталоге, что вам, вероятно, не нужно.export
. Таким образом,CDPATH
не экспортируется в сценарии с потенциально странными или вредными последствиями. Смотрите здесь для большего обсуждения и примеров.cd
относится к нему.Что-то еще, что вы можете попробовать, это инструмент под названием autojump . Он хранит базу данных обращений к своему псевдониму (
j
по умолчанию) и пытается принимать разумные решения о том, куда вы хотите пойти. Например, если вы часто вводите:Вы можете использовать следующее, чтобы получить в крайнем случае:
Он доступен для Debian и Ubuntu и включен для каждого пользователя в
~/.bashrc
или~/.zshrc
по умолчанию.источник
cd -
полезно знать, если вы еще этого не знаете, я думаю, что это гораздо лучшее решение, чем текущий топовый ответ.apt-get install autojump
в Ubuntu, но также и для многих других, как описано на их странице) для общесистемной установки, но каждый пользователь должен загрузить его в свою среду оболочки, чтобы он мог переопределить cd, чтобы отслеживать куда ты идешьsource /usr/share/autojump/autojump.sh
добавить, что ~ / .bashrc должен быть добавлен для работы autojump .Если это небольшое количество каталогов, вы можете использовать
pushd
для переключения между ними:в отличие от
cd -
, вы можете использовать это с более чем двумя каталогамиСледуя предложению Ноаха, я теперь использую это:
пример использования:
и т. д. Очевидно, что это только для вращения в стеке и не обрабатывает добавление новых путей - возможно, я должен переименовать его.
источник
pushd
иpopd
для прохождения, но не то, чтобы pushd мог вращать то, что использовалось до сих пор ...Я использую
alias
в Bashrc, чтобы сделать эти диски.такие как:
источник
~/.bashrc
или/etc/bash.bashrc
. Я не использовал.profile
раньше, поэтому не знаю, отношения между ними :-(.bash_profile
и это прекрасно работает ..Я нашел скрипт (обычно называемый acd_funch.sh), который решил эту проблему для меня. При этом вы можете напечатать,
cd --
чтобы увидеть последние 10 каталогов, которые вы использовали. Это будет выглядеть примерно так:Чтобы
~/Music/thirddir
просто набратьcd -2
Рекомендации
ПРИМЕЧАНИЕ. Этот скрипт был первоначально опубликован в статье Linux linux, которая доступна здесь: acd_func.sh - расширяет компакт-диск bash для хранения, отображения и доступа к истории посещенных имен каталогов .
источник
Попробуйте параметр
cdable_vars
оболочки в Bash. Вы включаете его с помощьюshopt -s cdable_vars
.Затем вам нужно установить свои переменные
export dir1=/some/path
. и, наконецcd dir1
, и т. д. Затем вы можете положить его в свой,~/.bashrc
чтобы заставить его придерживаться.источник
Используйте «pushd -n » (при условии, что вы используете bash).
Добавьте к вашему ~ / .bashrc:
тогда,
cd ~
твой дом,cd ~1
является~/Dropbox/Projects/ds/test/
cd ~2
является/Project/Warnest/docs/
Вы можете использовать
~1
и~2
т. Д. Точно так же, как~
.источник
Здесь много хороших предложений. Какой из них использовать, будет зависеть от того, есть ли у вас небольшой фиксированный список каталогов, между которыми вы переключаетесь, или же вы ищете более общее решение.
Если это небольшой фиксированный список, то настроить простые псевдонимы (как предложил Феликс Ян) было бы проще всего.
Если вы ищете более обобщенное решение (т. Е. Множество разных каталогов, меняющихся с течением времени), я бы использовал pushd и popd (как предложил Useless). Лично я считаю, что по умолчанию pushd / popd трудно использовать, особенно когда вы начинаете переключаться между многими папками; однако я написал несколько твиков, которые облегчили мне задачу. Добавьте следующее в ваш bashrc:
pd
(как сокращенную формуpushd
), чтобы перейти к новой папке, помня, где вы были.dirs
для просмотра списка сохраненных каталогов.pd 3
для перехода к каталогу № 3.Пример использования:
источник
Следующее, похоже, работает для одного случая, на котором я его тестировал, и вы можете просто удалить имена каталогов в виде символических ссылок в ~ / Bookmarks:
источник
function
Линия входит в ваш .bashrc (вы можете ввести его в терминале , чтобы проверить, но уедут , когда вы закрываете это окно), линия , прежде чем создать тестовый случай «testdir» становится именем/tmp
, и последняя строка - это проверка, работает ли она.Вы могли бы сделать хуже, чем попробовать J2 .
Из README:
Я использую это широко и рекомендую это.
источник
Я бы посоветовал использовать zsh , эту оболочку как очень хорошее дополнение TAB для каталогов, файлов и даже опций для большинства программ cli.
Я использую эту оболочку в течение многих лет, и я бы пропустил функциональность, если бы она исчезла. Сценарии zsh также очень интересны, с большим количеством однострочников, которые могут помочь вам каждый день.
источник
По моему опыту, наибольшее ускорение в навигации в оболочке заключается в использовании ее функции поиска по истории. В Bash вы можете искать в своей истории команд в обратном направлении, нажимая
Ctrl
+R
и вводя какой-то шаблон. Эта модель затем сравнивается с предыдущими записями в истории - это могут бытьcd
команды или другие операции - и предложения сделаны , как вы печатаете. Просто нажмите Enter, чтобы снова запустить предложенную команду. Это называетсяreverse-search-history
в Bash, и мне это нравится. Это экономит мне много нажатий клавиш и экономит мою внутреннюю память.Это хорошо, потому что вам нужно запомнить только небольшую часть команды, например
Drop
или,Wa
чтобы различать две записи историиcd ~/Dropbox/Projects/ds/test/
иcd /Project/Warnest/docs/
.источник
Я также использую эти псевдонимы (добавьте их в ~ / .bashrc):
С ними гораздо быстрее перейти в верхний каталог (но он решает только половину навигации).
источник
если вы используете zsh:
вам не нужно вводить
cd
, просто введите путь/foo/bar/baz<Enter>
к каталогу ( равноcd /foo/bar/baz<Enter>
)требуется
auto_cd
опция, которая будет установленаTab
ключа (/u/sh/pi<Tab>
расширяется до/usr/share/pixmaps
; работает также для имен файлов)источник
shopt -s autocd
, так что это уже не только zsh.Есть довольно хороший инструмент для быстрой смены каталогов:
xd - eXtra быстрое устройство смены каталогов http://xd-home.sourceforge.net/xdman.html
немного неловко, что вам нужно отобразить его в профиле bash или аналогичном, так как он выводит только каталог
Вы можете делать такие вещи, как:
источник
f() { cd "$(xd -g "$@")"; }
чтобы правильно обрабатывать разделенные каталоги и пробелы в аргументахxd
(вам, вероятно, не нужен путь). Если вы никогда не используетеxd
по-другому, вы можете использовать альтернативноxd() { cd "$(command xd -g "$@")"; }
(альтернативно, использовать/usr/bin/xd
вместоcommand xd
- вы всегда можете запустить,command xd …
если вам нужно обойти это).Вы никогда не должны вводить полный путь в оболочке в любом случае. Вы всегда можете использовать:
вместо
источник
P*
если Project не является единственным файлом, начинающимся с P. Завершение табуляции может циклически повторяться (по умолчанию в большинстве оболочек; вам нужно повторно привязать tab кmenu-complete
in bash), и разрешается мгновенно в простых случаях как это, нет никакого ожидания этого/P*/W*/*/mydoc*
звучит так, как будто это будет работать нормально, пока однажды вы не сделали другой файл, который соответствует этому глобусу, и вдруг вы закончите открываю оба одновременно./u*/*/g++
Это впечатляюще мало символов, но, надеюсь, больше ничего в любой из подпапок в любой из моих корневых папок, начиная сu
имениg++
. (Как хороший компромисс, в некоторых оболочках вы можете использовать вкладку, чтобы расширять глобусы на месте по мере продвижения)Также
OLDPWD
имеется переменная окружения, которая, согласно IEEE 1003.1 (POSIX), должна обновляться с предыдущим рабочим каталогом каждый раз, когдаcd
изменяется рабочий каталог (для любопытных строка 80244 на странице 2506 IEEE 1003.1-2008).источник
Существует также приложение "wcd", созданное специально для этого (также портированное на cygwin, так как я на этом). С его помощью вы можете создавать ярлыки, закладки из папок. Также поддерживает джокеры. Чтение справочной страницы и документации в / usr / share / wcd должно помочь.
http://manpages.ubuntu.com/manpages/hardy/man7/wcd.7.html
источник
cdargs - самый эффективный инструмент для закладки каталога: http://www.youtube.com/watch?v=uWB2FIQlzZg
источник
sudo apt-get cdargs
на убунту. Кстати, видео на YouTube действительно плохое, но инструмент отличный.Попробуйте fastcd ( https://github.com/frazenshtein/fastcd ). Он устанавливает ловушку для записи посещенных каталогов из bash. И устанавливает скрипт как псевдоним "j", который показывает вам последние посещенные каталоги, с возможностью быстрого cd (начните вводить для фильтрации каталогов). Модификация .bashrc необходима для создания псевдонима "j".
Получение инструмента
Установите необходимые модули
Исходный файл set.sh в ваш bashrc
И обновить Bashrc
Затем просто введите «J» в консоли
источник
.bashrc
?У меня был тот же вопрос, и я впервые нашел этот ответ . Я установил утилиту z ( https://github.com/rupa/z ).
Это именно то, что вы ищете, потому что z учится на ваших командах cd и отслеживает каталоги по принципу frecency (часто и недавно). Так что после того, как вы выполните обе команды cd один раз, вы можете сделать что-то вроде:
прыгать
/Project/Warnest/docs/
и~/Dropbox/Projects/ds/test/
соответственно. Аргументы z - это регулярные выражения, поэтому вам даже не нужно вводить полное имя папки.источник
Обновление (2016): теперь я использую для этого FASD , который позволяет выполнять нечеткий поиск по вашим последним каталогам.
Я создал инструмент для этого в Ruby. Это позволяет вам использовать файлы YAML для объявления ваших проектов.
Я написал небольшую статью об этом здесь: http://jrnv.nl/switching-projects-terminal-quickly/
Я также разместил источник на GitHub: https://github.com/jeroenvisser101/project-switcher
источник
Я использовал свою собственную утилиту cdhist для управления этим в течение многих лет. Это псевдоним вашей команды CD и автоматически сохраняет стек каталогов.
источник
Вы можете использовать,
export
чтобы назначить пути к каталогам переменным и затем ссылаться на них.источник
export
заявления в свой~/.bashrc
, и они всегда будут доступны.Некоторые предложения здесь:
Самая прямая идея, я добавлю псевдоним в файл .profile
Тогда используйте
$ dir1
илиdir2
, можете CDЕсли вы всегда переключаетесь только на две папки. Использование
cd -
будет переключаться между ними.источник
Решение, которое я использую для этой ситуации, таково
screen
. Начальный экран и создайте окно для каждого каталога сC-a c
и перейдите туда. Переключайтесь между окнами / каталогами с помощьюC-a n
илиC-a p
. Назовите окна сC-a A
. Затем вы можете открыть список ваших оконC-a "
и перемещаться по номеру или имени окна. Поскольку это такscreen
, вы можете отсоединиться от сеанса, сохранив рабочее пространство, и подключиться позже с той же настройкой.источник
Кажется, что вам в основном нужен файл проекта для вашего рабочего процесса. С каталогами, которые принадлежат вашей деятельности, как в IDE программирования. Попробуйте Zsh Navigation Tools и инструмент
n-cd
там. Это позволит вам перемещаться по последним посещенным папкам, а также определятьHotlist
каталоги по вашему выбору:n-cd
может быть связан с комбинацией клавиш:источник
TL; DR
Fish
для интерактивной оболочки , которые продвинут вас немедленно (fish
>zsh
>bash
).POSIX
/Bash
для сценариев , который является наиболее широко поддерживается синтаксис (POSIX
>Bash
>Zsh
>Fish
).ракушки
Опробовав различные оболочки, вот мой отзыв (в порядке тестирования / принятия):
Bash
:Zsh
+oh-my-zsh
:cd /e/x1
→cd /etc/X11/
);Fish
+oh-my-fish
(текущий) - лучший из коробки:Используйте значимые псевдонимы
Каждая оболочка может быть расширена с помощью,
function
иalias
вот те, которые я использую, связанные с вашей проблемой (POSIX-совместимый):Существуют базовые, но действительно значимые, поэтому их легко запомнить и автозаполнить.
Знай свою раковину
Настройте
CDPATH
для добавления наиболее часто используемых каталогов (например~/projects/
,/etc/init.d/
), чтобы вы могли быстро перейти к ним.См. Manatwork ответ для более подробной информации
CDPATH
.Тусовка и чтение
источник
exit
, вы выходите из интерактивной оболочки. Эти "значимые псевдонимы" могут быть простоalias back='cd -'
иalias up='cd ..'
- но не волнуйтесь, эти команды никогда не вернут false (нет предыдущего каталога? Он отправляет вас домой! Уже в корне? Это не работает!), И поэтому вы никогда не выйдете , Также подумайтеalias back='cd $OLDPWD'
(обратите внимание на одинарные кавычки), так как он не будет иметь никакого вывода (cd -
говорит вам, куда он отправляет вас, что, вероятно, не нужно, поскольку ваша подсказка содержит эту информацию)anc
это инструмент строки cmd (сокращение от якоря), который хранит закладки каталогов. (пока что тестируется только с bash)В твоем случае:
это добавляет оба каталога в список якорей (думаю, закладки)
Теперь, если вы хотите перейти
/Project/Warnest/docs/
из любого места в вашей системе типа:и если вы хотите, чтобы перейти к
~/Dropbox/Projects/ds/test/
типу:Помимо сопоставления текста с отмеченными закладками путями, у anc есть много других удобных способов перемещения по каталогам.
запускает интерактивный режим, который перечисляет все закладки по номеру, поэтому все, что вам нужно набрать, это число
Если вы введете:
отобразится список, соответствующий всем закладкам (в вашем случае обеим закладкам), и вы можете выбрать его с помощью клавиш со стрелками, это очень быстрый и интуитивно понятный способ.
Получите anc на странице проекта github: https://github.com/tobimensch/anc
Там также README с примером использования.
Полное раскрытие: я автор этого сценария. Я надеюсь, что некоторые люди найдут это полезным.
источник