Навигация по нескольким слоям вложенных каталогов часто является болью. На Firefox это легко, потому что у них есть закладки. Итак, что я хотел бы сделать для закладки файла, так это набрать:
$ go --add classes "repo/www/public/util/classes"
Затем, чтобы перейти в этот каталог, я набрал бы:
$ go classes
Ранее я использовал символические ссылки для достижения чего-то похожего, но я не хочу загромождать мой домашний каталог. Есть много других функций, которые могут оказаться полезными. Например, я хотел бы иметь возможность начать печатать, go cl
а затем нажать Tab для автозаполнения. Иногда я извлекаю несколько копий репозитория, и поэтому было бы полезно, чтобы программа позволила мне создать несколько контекстов и установить закладку относительно базового каталога контекста.
Итак, прежде чем я приступлю к созданию собственного набора сценариев, уже есть что-то подобное?
Ответы:
Я слишком долго искал какой-нибудь инструмент для создания закладок на оболочку, и я не удовлетворен ни одним из найденных решений.
Однако в конце концов я наткнулся на отличный универсальный инструмент: нечеткий искатель командной строки .
Он в первую очередь позволяет вам «нечетко находить» файлы (проверьте анимацию rich gif по ссылке выше), но также позволяет передавать произвольные текстовые данные и фильтровать эти данные. Итак, идея ярлыков проста: все, что нам нужно, это поддерживать файл с путями (которые являются ярлыками) и нечеткой фильтрацией этого файла. Вот как это выглядит: мы набираем
cdg
команду (из «cd global», если хотите), получаем список наших закладок, выбираем нужную за несколько нажатий клавиш и нажимаем Enter. Рабочий каталог изменяется на выбранный элемент:Это очень быстро и удобно: обычно я просто набираю 3-4 буквы нужного элемента, а все остальные уже отфильтрованы. Кроме того, конечно, мы можем перемещаться по списку с помощью клавиш со стрелками или с помощью
Ctrl+j
/Ctrl+k
.Подробная статья об этом решении ярлыков / закладок находится здесь: Нечеткие ярлыки для вашей оболочки .
источник
Я думаю, что вы ищете что-то вроде autojump . Вам нужно немного покопаться, чтобы разработать набор «ключевых весов», которые коррелируют с количеством времени, проведенного в данном каталоге. Затем, предполагая, что вы провели много времени в этой директории 'classes', вы можете перейти туда напрямую, набрав
Вы можете просмотреть свои "ключевые веса" с
источник
f
: github.com/clvv/fКак упоминает Саидн, псевдонимы являются хорошим механизмом. Баш оболочка также имеет встроенный механизм , чтобы перейти прямо на месте:
CDPATH
. Установите его какPATH
, но он используетсяcd
вместо поиска программ.Из справочной страницы:
Я сам комбинировал это с каталогом, в котором есть символические ссылки, куда я хотел бы перейти:
Это имеет тот недостаток, что каталог выглядит не совсем корректно, но это можно исправить с помощью
cd -P
или настройкиset -P
.источник
alias C='cd -P .'
а неset -P
, так как для системных символических ссылок я не возражаю против того, чтобы быть в каталоге символических ссылок.help cd
и до сих пор не понимаю, что делает опция -P.mkdir test; ln -s test linktotest; cd linktotest; pwd; cd -P .; pwd
Вы можете объединить существующие возможности Bash и историю поиска. Нажмите, Ctrl-Rчтобы начать инкрементный обратный поиск, затем начните вводить часть пути, которая, скорее всего, будет уникальной.
Вы можете продолжать печатать буквы до тех пор, пока не вернетесь к самой последней
cd
команде, включающей этот каталог, или можете нажать Ctrl-Rснова, чтобы вернуться в историю к следующей новейшей команде, соответствующей тому, что вы уже набрали.Я делаю это все время.
На самом деле, я делаю это дальше. Как только я начинаю открывать последовательности команд стоят держать в истории , но не стоит передавание скрипта, я начинаю сцепление их с
&&
и;
комбинаторами , так что я могу обратный поиск подстроки этого один длинные команды, хит Enterи запустить всю последовательность в один раз.Например, вот как я собираю и запускаю одну из моих программ во время разработки:
Я делаю это из каталога установки, который находится под исходным каталогом верхнего уровня. Оборачивая
cd
, собирая и устанавливая деталь в подоболочку, я гарантирую, что независимо от того, что произойдет во время этого процесса, я вернусь обратно в свою обычную оболочку без изменений. Только в случае успеха (&&) я могу запустить собранную и установленную программу. Я могу найти это в своей истории только Ctrl-Rтогда sta, когда это все, что мне обычно нужно, чтобы однозначно найти эту последовательность команд.Другим примером того, как я использую это, является последовательность, которая входит в создание RPM для этой же программы. Большая часть утомительной работы выполняется в сценариях оболочки, но есть еще несколько команд, которые я обычно должен набирать, чтобы выполнить всю работу по сборке и развертыванию встроенных RPM, которые мне теперь редко приходится вводить повторно, потому что Bash сохраняет это в истории для меня.
Объедините все это с
export HISTSIZE=bignum
и,shopt histappend
и вы только что создали память команд для слонов.Другое решение, которое я однажды кодировал, находится в моем ответе на другой вопрос здесь . Возможно, он должен быть адаптирован для ваших целей и обрабатывать только
cd
команды, тогда как опция поиска в истории работает везде и для каждой команды.источник
Я сам использую,
alias
чтобы сократить длинные пути, которые я часто посещаю. Вы можете положить свой наборalias
es в свойbashrc
, чтобы bash мог помнить их при каждом входе в систему. И, к счастью, bash добавляет псевдонимы для автозаполнения.Я бы написал что-то вроде этого для вашего случая:
alias go-classes="cd ~/repo/www/public/util/classes"
источник
Возможно, вы ищете bashmarks (на github).
Из README:
Bashmarks - это скрипт оболочки, который позволяет сохранять и переходить к часто используемым каталогам. Теперь поддерживает завершение вкладки.
источник
Это ни в коем случае не полная и не дурацкая, просто черновик для начала. Добавив следующее в свой,
~/.bashrc
вы получите три команды для добавления удаления и отображения закладок каталога (которые основаны на псевдонимах оболочки, так что вы тоже получаете автоматическое заполнение).Использование довольно просто.
bmadd
с аргументом добавляет псевдоним, названный после аргумента. Этот псевдоним просто создает компакт-диск для каталога, в котором он был установлен. Без аргумента он использует текущее имя каталога в качестве имени псевдонима. Аналогичным образомbmdel
удаляет псевдоним, если он существует, иbmlist
перечисляет текущие закладки.например
источник
Некоторое время назад я столкнулся с такой же потребностью и решил собрать пару сценариев, которые помогут мне пометить абсолютные / относительные пути и сопоставить их с более короткими именами, которые я легко запомню.
Сценарий очень прост в использовании, и он просто создаст функцию с коротким именем, которое вы указываете в качестве псевдонима для каталога, в который вы хотите перейти. Все, что вам нужно сделать, это просто набрать это короткое имя, и оно перенесет вас в каталог с закладками.
Вот ссылка на источник скрипта закладки. Кстати, я назвал его «Закладка».
использование
После установки его довольно просто использовать.
Чтобы пометить каталог:
Чтобы перейти к отмеченному каталогу:
Чтобы увидеть, что было отмечено:
Чтобы удалить отмеченный каталог:
Дополнительные примеры, инструкции по установке и т. Д. См. В очень подробной документации .
источник
cdargs
это лучший инструмент для закладки каталога.Примеры использования см. В закладках для видео с командой cd на YouTube.
Пример использования
cdargs
это графический интерфейс ncurses, так что вы можете визуально перемещаться внутри вашей оболочки. После того, как он установлен, вы устанавливаете его в данной оболочке, используя сценарий оболочки:Это включает несколько функций, которые вы можете затем вызывать из вашей оболочки.
Вызвать GUI:
В результате этого типа GUI:
Вы можете использовать клавиши со стрелками для перемещения вверх и вниз для навигации по списку. Стрелка влево ( ←) поднимается на уровень в дереве каталогов, стрелка вправо ( ) углубляется →в каталог.
разметка каталогов:
Вы можете использовать либо cтекущий каталог, aпо которому вы перемещаетесь, либо добавить каталог, который вы в данный момент выделяете курсором.
режимы работы:
cdargs
немного похоже на vi / vim в этом отношении, где у него есть это понятие режимов . Есть 2 из них, просмотр (B) и список (L). Вы можете видеть, в каком режиме вы находитесь, через дисплей внизу вашей оболочки.Режим листинга:
Режим просмотра:
Вы можете изменить свой режим, нажав клавишу табуляции (TAB ).
Это только верхушка айсберга, обратитесь к странице
man cdargs
справки ( ), а также к встроенной справке для получения дополнительной информации.источник
Лучший инструмент для этого: wcd . Я протестировал много других инструментов, и этот используется именно так, как вы просите, и во многих отношениях он лучше, чем все предыдущие решения.
источник
Другие ответы велики и конкретны. Еще один способ взглянуть на это - использовать макропроцессор клавиатуры, который может делать практически все, о чем вы только можете подумать.
Проверьте AutoKey. Он может заменять фразы, такие как автозамена текстового процессора или историю bash, а также может запускать скрипт python для горячей клавиши, которую вы определяете, которая может делать практически все, а также отправлять нажатия клавиш на ваше устройство ввода символов - как если бы вы их набирали.
Единственный «недостаток», который у него есть (по отношению к этому вопросу), заключается в том, что ему нужен графический интерфейс для запуска - gnome или kde. Другие ответы не имеют этого требования.
источник
Существует еще одна альтернатива под названием Z .
Он учится при каждом изменении каталога:
Затем вы можете перейти в этот каталог позже с помощью нечеткого соответствия:
источник
Apparix это еще один инструмент, который делает это. Одна из его полезных функций заключается в том, что вы можете перейти непосредственно к подкаталогам метки и завершить их в этих подкаталогах.
источник
Другое решение, которое, я считаю, заключается в том, чтобы
autojump
иz
естьfasd
.Он отслеживает, какие каталоги вы посещаете, и
z dir-name
изменится на каталог с именемdir-name
которое вы используете чаще всего. Он также имеет некоторые функции для часто используемых файлов.Вы можете клонировать его с: https://github.com/clvv/fasd
Установка проста, клонировать, сделать установку, а затем изменить ваш
.bashrc
(или.zshrc
т. Д.).источник
Вам нужно добавить псевдоним в ваш
.bashrc
или.bash_profile
.Теперь предположим, что вы хотите ярлык
~/Desktop/Coding/Projects
для вызова, который вы будете печататьgoto_Projs
. Вам необходимо добавить следующую строку в файл, открытый в текстовом редакторе:alias goto_Projs='cd ~/Desktop/Coding/Projects'
Теперь делайте все, что ваш текстовый редактор хочет, чтобы вы сохранили (
/User/<yourusername>/
или,~/
конечно,) и вышли, а когда возвращается приглашение оболочки, -source ~/.bash_profile
Ваш псевдоним теперь должен быть доступен для вызова, как описано выше.
источник
Я использую метод добавления комментария в конце команды и последующего вызова
ctrl R
для поиска комментария. Это имеет следующие преимущества:ctrl R
ctrl R
иtab
на лету, чтобы внести незначительные изменения в саму команду, что делает комментарий своего рода общим ярлыком для семейства похожих командисточник