Быстрая навигация по каталогам в оболочке bash

119

Я хотел бы часто переключаться между каталогами, которые находятся в абсолютно не связанных путях, например /Project/Warnest/docs/и ~/Dropbox/Projects/ds/test/.

Но я не хочу печатать cd /[full-path]/все время. Существуют ли какие-либо команды быстрого доступа к ранее работавшим каталогам?

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

Но есть ли другое решение для этого?

saiy2k
источник
Символические ссылки также могут быть полезны для этого. en.wikipedia.org/wiki/...
user606723

Ответы:

135

Если вы просто переключаетесь между двумя каталогами, вы можете использовать cd -для перехода вперед и назад.

Крис Кард
источник
13
Как это ускользало от меня так долго, остается загадкой. Большое спасибо за этот отличный совет.
Мистер Шикаданс
3
+1 Конечно, один из моих любимых и тот, который так или иначе пропустили многие эксперты.
Майкл Даррант
62

Существует переменная оболочки CDPATHв bashи kshи cdpathв zsh:

CDPATH    The search path for the cd command. This is a colon-separated
          list of directories in which the shell looks for destination
          directories specified by the cd command.

Таким образом, вы можете установить в вашем ~ / .bashrc:

export CDPATH=/Project/Warnest:~/Dropbox/Projects/ds

Тогда cd docsи cd testвы попадете в первый найденный такой каталог. (Я имею в виду, что даже если в текущем каталоге будет существовать каталог с таким же именем, с ним CDPATHвсе равно будут консультироваться. Если он CDPATHбудет содержать больше каталогов, имеющих подкаталоги с данным именем, будет использоваться первый.)

manatwork
источник
16
Следует отметить, что в общем случае вы хотите, чтобы первая запись $CDPATHбыла .(запись явно, т.е. :также работает). В противном случае вы получите странное поведение, при котором CDPATHкаталоги имеют приоритет над каталогами в текущем рабочем каталоге, что вам, вероятно, не нужно.
jw013
4
Я делаю то же самое, но без export. Таким образом, CDPATHне экспортируется в сценарии с потенциально странными или вредными последствиями. Смотрите здесь для большего обсуждения и примеров.
Телемах
"bash и ksh и cdpath в zsh" ... и в tcsh (просто отвечая на вопрос, основанный на этом на Super User, и нашел это, когда искал похожие ответы на SE).
Хеннес
Я думаю, это указано в POSIX. По крайней мере, POSIX для cdотносится к нему.
mikeserv
48

Что-то еще, что вы можете попробовать, это инструмент под названием autojump . Он хранит базу данных обращений к своему псевдониму ( jпо умолчанию) и пытается принимать разумные решения о том, куда вы хотите пойти. Например, если вы часто вводите:

j ~/Pictures

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

j Pic

Он доступен для Debian и Ubuntu и включен для каждого пользователя в ~/.bashrcили ~/.zshrcпо умолчанию.

Кайл Смит
источник
5
Autojump, вероятно, является лучшим инструментом для этого, для создания базы данных общих каталогов требуется некоторое время, но, как только это произойдет, я думаю, вы обнаружите, что вы не можете жить без него. Я знаю, каждый раз, когда я на чужом компьютере, я чувствую себя калекой.
quodlibetor
1
спасибо, люблю этот инструмент! И хотя cd -полезно знать, если вы еще этого не знаете, я думаю, что это гораздо лучшее решение, чем текущий топовый ответ.
Пользователь
Установлен общесистемный на каких системах?
ctrl-alt-delor
1
@richard Он доступен как пакет (например, apt-get install autojumpв Ubuntu, но также и для многих других, как описано на их странице) для общесистемной установки, но каждый пользователь должен загрузить его в свою среду оболочки, чтобы он мог переопределить cd, чтобы отслеживать куда ты идешь
nealmcb
Важно source /usr/share/autojump/autojump.shдобавить, что ~ / .bashrc должен быть добавлен для работы autojump .
Пабло А
39

Если это небольшое количество каталогов, вы можете использовать pushdдля переключения между ними:

# starting point
$ pwd
/Project/Warnest/docs
# add second dir and change to it
$ pushd ~/Dropbox/Projects/ds/test
~/Dropbox/Projects/ds/test /Project/Warnest/docs
# prove we're in the right place
$ pwd
~/Dropbox/Projects/ds/test
# swap directories
$ pushd
/Project/Warnest/docs ~/Dropbox/Projects/ds/test

в отличие от cd -, вы можете использовать это с более чем двумя каталогами


Следуя предложению Ноаха, я теперь использую это:

function pd()
{
    if [[ $# -ge 1 ]];
    then
        choice="$1"
    else
        dirs -v
        echo -n "? "
        read choice
    fi
    if [[ -n $choice ]];
    then
        declare -i cnum="$choice"
        if [[ $cnum != $choice ]];
        then #choice is not numeric
            choice=$(dirs -v | grep $choice | tail -1 | awk '{print $1}')
            cnum="$choice"
            if [[ -z $choice || $cnum != $choice ]];
            then
                echo "$choice not found"
                return
            fi
        fi
        choice="+$choice"
    fi
    pushd $choice
}

пример использования:

# same as pushd +1
$ pd 1

# show a prompt, choose by number
$ pd
 0 ~/Dropbox/Projects/ds/test
 1 /Project/Warnest/docs
 2 /tmp
? 2
/tmp ~/Dropbox/Projects/ds/test /Project/Warnest/docs

# or choose by substring match
$ pd
 0 /tmp
 1 ~/Dropbox/Projects/ds/test
 2 /Project/Warnest/docs
? doc
/Project/Warnest/docs /tmp ~/Dropbox/Projects/ds/test

# substring without prompt
$ pd test
~/Dropbox/Projects/ds/test /Project/Warnest/docs /tmp

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

Бесполезный
источник
6
Ох, я знал об этом pushdи popdдля прохождения, но не то, чтобы pushd мог вращать то, что использовалось до сих пор ...
Izkata
14

Я использую aliasв Bashrc, чтобы сделать эти диски.
такие как:

alias wdoc='cd ~/Project/Warnest/docs'
alias dstest='cd ~/Dropbox/Projects/ds/test'
Феликс Ян
источник
bashrc - это файл типа .profile? в котором мне нужно добавить эти строки?
saiy2k
~/.bashrcили /etc/bash.bashrc. Я не использовал .profileраньше, поэтому не знаю, отношения между ними :-(
Феликс Ян
Скрипты bashrc будут запускаться при каждом открытии терминала. профиль с автозагрузкой.
добавил эти строки в мой, .bash_profileи это прекрасно работает ..
спасибо
У меня есть несколько конкретных папок проекта, к которым я регулярно обращаюсь, это самый простой способ их настройки и обслуживания. Кроме того, для меня это приводит к абсолютному наименьшему количеству символов, набранных из всех решений здесь. ПОЦЕЛУЙ! :-)
moodboom
11

Я нашел скрипт (обычно называемый acd_funch.sh), который решил эту проблему для меня. При этом вы можете напечатать, cd --чтобы увидеть последние 10 каталогов, которые вы использовали. Это будет выглядеть примерно так:

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

Чтобы ~/Music/thirddirпросто набратьcd -2

Рекомендации

ПРИМЕЧАНИЕ. Этот скрипт был первоначально опубликован в статье Linux linux, которая доступна здесь: acd_func.sh - расширяет компакт-диск bash для хранения, отображения и доступа к истории посещенных имен каталогов .

декан
источник
Тот же сценарий был также опубликован в Linux Gazette, выпуск № 109, декабрь 2004 года .
Серж Строобандт
@Dean Ссылка идет на музыкальное видео и говорит, что Geocities закрылся.
что-то что-то
1
@somethingSomething Добавлены альтернативные ссылки.
Дин
история | grep cd
user2180794
10

Попробуйте параметр cdable_varsоболочки в Bash. Вы включаете его с помощью shopt -s cdable_vars.

Затем вам нужно установить свои переменные export dir1=/some/path. и, наконец cd dir1, и т. д. Затем вы можете положить его в свой, ~/.bashrcчтобы заставить его придерживаться.

Войтек Жепала
источник
10

Используйте «pushd -n » (при условии, что вы используете bash).

Добавьте к вашему ~ / .bashrc:

pushd -n /Project/Warnest/docs/
pushd -n ~/Dropbox/Projects/ds/test/

тогда,

cd ~ твой дом,

cd ~1 является ~/Dropbox/Projects/ds/test/

cd ~2 является /Project/Warnest/docs/

Вы можете использовать ~1и ~2т. Д. Точно так же, как ~.

Eelvex
источник
7

Здесь много хороших предложений. Какой из них использовать, будет зависеть от того, есть ли у вас небольшой фиксированный список каталогов, между которыми вы переключаетесь, или же вы ищете более общее решение.

Если это небольшой фиксированный список, то настроить простые псевдонимы (как предложил Феликс Ян) было бы проще всего.

Если вы ищете более обобщенное решение (т. Е. Множество разных каталогов, меняющихся с течением времени), я бы использовал pushd и popd (как предложил Useless). Лично я считаю, что по умолчанию pushd / popd трудно использовать, особенно когда вы начинаете переключаться между многими папками; однако я написал несколько твиков, которые облегчили мне задачу. Добавьте следующее в ваш bashrc:

alias dirs='dirs -v'
pd () 
{ 
    if [ "$1" ]; then
        pushd "${1/#[0-9]*/+$1}";
    else
        pushd;
    fi > /dev/null
}
  • Используйте pd(как сокращенную форму pushd), чтобы перейти к новой папке, помня, где вы были.
  • Используйте dirsдля просмотра списка сохраненных каталогов.
  • Используйте pd 3для перехода к каталогу № 3.

Пример использования:

$ PS1='\w\$ '   ## just for demo purposes
~$ pd ~/Documents/data
~/Documents/data$ pd ../spec
~/Documents/spec$ pd ~/Dropbox/Public/
~/Dropbox/Public$ pd /tmp
/tmp$ pd /etc/defaults/
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 2
~/Dropbox/Public$ dirs
 0  ~/Dropbox/Public
 1  ~/Documents/spec
 2  ~/Documents/data
 3  ~
 4  /etc/defaults
 5  /tmp
~/Dropbox/Public$ pd 4
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 3
~/Documents/spec$ popd
~/Documents/data ~ /etc/defaults /tmp ~/Dropbox/Public
~/Documents/data$ 
Но
источник
6

Следующее, похоже, работает для одного случая, на котором я его тестировал, и вы можете просто удалить имена каталогов в виде символических ссылок в ~ / Bookmarks:

mkdir "$HOME/Bookmarks"
ln -s /tmp "$HOME/Bookmarks/testdir"

function ccd() { cd $(readlink "$HOME/Bookmarks/$1") ; }

ccd testdir && echo $PWD
# gives /tmp
Ульрих Шварц
источник
что функция ccd () должна быть набрана в терминале или где-то еще? Вы можете объяснить?
saiy2k
1
@ saiy2k: извините, да. functionЛиния входит в ваш .bashrc (вы можете ввести его в терминале , чтобы проверить, но уедут , когда вы закрываете это окно), линия , прежде чем создать тестовый случай «testdir» становится именем /tmp, и последняя строка - это проверка, работает ли она.
Ульрих Шварц
6

Вы могли бы сделать хуже, чем попробовать J2 .

Из README:

Тратите много времени на сложное дерево каталогов?

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

Я использую это широко и рекомендую это.

phildobbin
источник
5

Я бы посоветовал использовать zsh , эту оболочку как очень хорошее дополнение TAB для каталогов, файлов и даже опций для большинства программ cli.

Я использую эту оболочку в течение многих лет, и я бы пропустил функциональность, если бы она исчезла. Сценарии zsh также очень интересны, с большим количеством однострочников, которые могут помочь вам каждый день.

Полемон
источник
Для завершения TAB не нужно переходить на zsh, так как bash имеет все то же самое. Для другой функциональности может быть, но не для этого.
Peer Stritzinger
1
@PeerStritzinger Bash представила такую ​​функциональность в BASH 4.0, но по сравнению с zsh она все еще довольно далеко позади. Сказать «все то же самое», безусловно, неправильно.
Полемон
Ну, zsh, конечно же, является übershell, но просто для дополнения табуляции нет необходимости менять (вопрос был задан для bash). Кроме того, bash 4.0 был представлен около 3 лет назад ...
Peer Stritzinger
5

По моему опыту, наибольшее ускорение в навигации в оболочке заключается в использовании ее функции поиска по истории. В Bash вы можете искать в своей истории команд в обратном направлении, нажимая Ctrl+ Rи вводя какой-то шаблон. Эта модель затем сравнивается с предыдущими записями в истории - это могут быть cdкоманды или другие операции - и предложения сделаны , как вы печатаете. Просто нажмите Enter, чтобы снова запустить предложенную команду. Это называется reverse-search-historyв Bash, и мне это нравится. Это экономит мне много нажатий клавиш и экономит мою внутреннюю память.

Это хорошо, потому что вам нужно запомнить только небольшую часть команды, например Dropили, Waчтобы различать две записи истории cd ~/Dropbox/Projects/ds/test/и cd /Project/Warnest/docs/.


источник
5

Я также использую эти псевдонимы (добавьте их в ~ / .bashrc):

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'

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

reimai
источник
1
Это полезные псевдонимы, но я не совсем уверен, что они будут соответствовать потребностям ОП. Вы можете рассмотреть возможность расширения своего ответа, чтобы предложить, как они могут быть непосредственно полезны для проблемы ОП.
HalosGhost
4

если вы используете zsh:

  • вам не нужно вводить cd, просто введите путь /foo/bar/baz<Enter>к каталогу ( равно cd /foo/bar/baz<Enter>)

    требуется auto_cdопция, которая будет установлена

  • Вы можете расширить сокращенные пути с помощью Tabключа ( /u/sh/pi<Tab>расширяется до /usr/share/pixmaps; работает также для имен файлов)
Андрей Дзиахель
источник
3
Bash 4 выиграл shopt -s autocd, так что это уже не только zsh.
Жиль
4

Есть довольно хороший инструмент для быстрой смены каталогов:

xd - eXtra быстрое устройство смены каталогов http://xd-home.sourceforge.net/xdman.html

немного неловко, что вам нужно отобразить его в профиле bash или аналогичном, так как он выводит только каталог

# function to do `cd` using `xd`
# -g turns generalized directory search command processing on
# which improves the whole thing a bit
f() 
{
        cd `/usr/bin/xd -g $*`
}

Вы можете делать такие вещи, как:

# change to /var/log/a* (gives you a list to choose from)    
f vla
# to skip the list and go directly to /var/log/apache2
f vlapach
значение NULL
источник
Измените функцию на, f() { cd "$(xd -g "$@")"; }чтобы правильно обрабатывать разделенные каталоги и пробелы в аргументах xd(вам, вероятно, не нужен путь). Если вы никогда не используете xdпо-другому, вы можете использовать альтернативно xd() { cd "$(command xd -g "$@")"; }(альтернативно, использовать /usr/bin/xdвместо command xd- вы всегда можете запустить, command xd …если вам нужно обойти это).
Адам Кац
4

Вы никогда не должны вводить полный путь в оболочке в любом случае. Вы всегда можете использовать:

soffice /P*/W*/*/mydoc*

вместо

soffice /Project/Warnest/docs/mydoc.odt
gena2x
источник
1
Это похоже на завершение табов, но хуже во всех отношениях
Майкл Мрозек
Вы не можете сделать это с завершением табуляции с помощью одинакового количества нажатий клавиш, если только Project не является файлом, начинающимся с P и т. Д. Также вам придется каждый раз ждать завершения, используя *, вам не нужно ждать.
gena2x
Я думаю, что у вас это задом наперед - вы не можете сделать это, P*если Project не является единственным файлом, начинающимся с P. Завершение табуляции может циклически повторяться (по умолчанию в большинстве оболочек; вам нужно повторно привязать tab к menu-completein bash), и разрешается мгновенно в простых случаях как это, нет никакого ожидания этого
Майкл Мрозек
Что касается «вы не можете сделать это» - вы можете, попробуйте, вы пропустили весь смысл, если вы думаете, что не можете. Попробуйте echo / u * / b * / g ++
gena2x
1
Я понимаю, что вы имеете в виду, это быстрее, если вы уверены, что набрали однозначный путь, но что-то вроде /P*/W*/*/mydoc*звучит так, как будто это будет работать нормально, пока однажды вы не сделали другой файл, который соответствует этому глобусу, и вдруг вы закончите открываю оба одновременно. /u*/*/g++Это впечатляюще мало символов, но, надеюсь, больше ничего в любой из подпапок в любой из моих корневых папок, начиная с uимени g++. (Как хороший компромисс, в некоторых оболочках вы можете использовать вкладку, чтобы расширять глобусы на месте по мере продвижения)
Майкл Мрозек
3

Также OLDPWDимеется переменная окружения, которая, согласно IEEE 1003.1 (POSIX), должна обновляться с предыдущим рабочим каталогом каждый раз, когда cdизменяется рабочий каталог (для любопытных строка 80244 на странице 2506 IEEE 1003.1-2008).

njsg
источник
3

Существует также приложение "wcd", созданное специально для этого (также портированное на cygwin, так как я на этом). С его помощью вы можете создавать ярлыки, закладки из папок. Также поддерживает джокеры. Чтение справочной страницы и документации в / usr / share / wcd должно помочь.

http://manpages.ubuntu.com/manpages/hardy/man7/wcd.7.html

Сэм
источник
3

cdargs - самый эффективный инструмент для закладки каталога: http://www.youtube.com/watch?v=uWB2FIQlzZg

Emon
источник
Это продукт, с которым вы связаны?
Казарк,
Спасибо, что указал мне на cdargs. Просто sudo apt-get cdargsна убунту. Кстати, видео на YouTube действительно плохое, но инструмент отличный.
DavidG
3

Попробуйте fastcd ( https://github.com/frazenshtein/fastcd ). Он устанавливает ловушку для записи посещенных каталогов из bash. И устанавливает скрипт как псевдоним "j", который показывает вам последние посещенные каталоги, с возможностью быстрого cd (начните вводить для фильтрации каталогов). Модификация .bashrc необходима для создания псевдонима "j".

Получение инструмента

cd ~; mkdir Soft; cd Soft
git clone https://github.com/frazenshtein/fastcd

Установите необходимые модули

pip install --user urwid

Исходный файл set.sh в ваш bashrc

echo -e "\nsource /home/$USER/Soft/fastcd/set.sh\n" >> ~/.bashrc

И обновить Bashrc

source ~/.bashrc

Затем просто введите «J» в консоли

Сэм Толиман
источник
Как это работает? Если это псевдонимы, что этот инструмент делает для вас, что вы не можете сделать, редактируя вручную .bashrc?
G-Man
Он запускает демон, который записывает посещенные каталоги в ~ / .fastcd для запущенных оболочек (bash). «j» запускает инструмент, который показывает вам последние посещенные каталоги, с возможностью быстрого cd. Модификация .bashrc необходима для создания псевдонима "j". Вы можете увидеть исходный код для получения дополнительной информации, я думаю,
Сэм Toliman
Спасибо за ваш быстрый ответ. Это та информация, которая должна быть в ответе. Пожалуйста, отредактируйте свой ответ, чтобы включить эту информацию.
G-Man
3

У меня был тот же вопрос, и я впервые нашел этот ответ . Я установил утилиту z ( https://github.com/rupa/z ).

Это именно то, что вы ищете, потому что z учится на ваших командах cd и отслеживает каталоги по принципу frecency (часто и недавно). Так что после того, как вы выполните обе команды cd один раз, вы можете сделать что-то вроде:

z docs
z ds

прыгать /Project/Warnest/docs/и ~/Dropbox/Projects/ds/test/соответственно. Аргументы z - это регулярные выражения, поэтому вам даже не нужно вводить полное имя папки.

saroele
источник
3

Обновление (2016): теперь я использую для этого FASD , который позволяет выполнять нечеткий поиск по вашим последним каталогам.


Я создал инструмент для этого в Ruby. Это позволяет вам использовать файлы YAML для объявления ваших проектов.

Я написал небольшую статью об этом здесь: http://jrnv.nl/switching-projects-terminal-quickly/

Я также разместил источник на GitHub: https://github.com/jeroenvisser101/project-switcher

jeroenvisser101
источник
2

Я использовал свою собственную утилиту cdhist для управления этим в течение многих лет. Это псевдоним вашей команды CD и автоматически сохраняет стек каталогов.

bulletmark
источник
2

Вы можете использовать, exportчтобы назначить пути к каталогам переменным и затем ссылаться на них.

export dir1=/Project/Warnest/docs/
export dir2= ~/Dropbox/Projects/ds/test/
cd $dir1
cd $dir2
Фахад Наим
источник
Да, этого достаточно для нескольких любимых режиссеров. Не нужно устанавливать какие-либо другие утилиты. Просто поместите exportзаявления в свой ~/.bashrc, и они всегда будут доступны.
Висбуки
1

Некоторые предложения здесь:

Самая прямая идея, я добавлю псевдоним в файл .profile

vi ~/.profile
alias dir1='cd /myhome/onedir'
alias dir2='cd /jimmy/anotherdir'

Тогда используйте $ dir1 или dir2, можете CD

Если вы всегда переключаетесь только на две папки. Использование cd -будет переключаться между ними.

Дэн
источник
1

Решение, которое я использую для этой ситуации, таково screen. Начальный экран и создайте окно для каждого каталога с C-a cи перейдите туда. Переключайтесь между окнами / каталогами с помощью C-a nили C-a p. Назовите окна с C-a A. Затем вы можете открыть список ваших окон C-a "и перемещаться по номеру или имени окна. Поскольку это так screen, вы можете отсоединиться от сеанса, сохранив рабочее пространство, и подключиться позже с той же настройкой.

Дэвид Р. МакВильямс
источник
1

Кажется, что вам в основном нужен файл проекта для вашего рабочего процесса. С каталогами, которые принадлежат вашей деятельности, как в IDE программирования. Попробуйте Zsh Navigation Tools и инструмент n-cdтам. Это позволит вам перемещаться по последним посещенным папкам, а также определять Hotlistкаталоги по вашему выбору:

п-кд

n-cd может быть связан с комбинацией клавиш:

ZLE -N ZNT-CD-виджет

bindkey "^ T" znt-cd-widget

Адам Лиссон
источник
1

TL; DR

  1. Используйте Fishдля интерактивной оболочки , которые продвинут вас немедленно ( fish> zsh> bash).
  2. Используйте POSIX/ Bashдля сценариев , который является наиболее широко поддерживается синтаксис ( POSIX> Bash> Zsh> Fish).

ракушки

Опробовав различные оболочки, вот мой отзыв (в порядке тестирования / принятия):

  • Bash:
    • автозаполнение: базовое;
    • расширение пути: нет;
    • сценарии: отлично.
  • Zsh+ oh-my-zsh:
    • автозаполнение: хорошо (циклично);
    • расширение пути: да ( cd /e/x1cd /etc/X11/);
    • сценарии: хорошо.
  • Fish+ oh-my-fish(текущий) - лучший из коробки:
    • автозаполнение: родные и поддерживаемые опции;
    • расширение пути: да;
    • Сценарии: слишком большое отличие от POSIX-совместимых.

Используйте значимые псевдонимы

Каждая оболочка может быть расширена с помощью, functionи aliasвот те, которые я использую, связанные с вашей проблемой (POSIX-совместимый):

back () {  # go to previous visited directory
        cd - || exit
}

up () {  # go to parent directory
        cd ..|| exit
}

Существуют базовые, но действительно значимые, поэтому их легко запомнить и автозаполнить.

Знай свою раковину

Настройте CDPATHдля добавления наиболее часто используемых каталогов (например ~/projects/, /etc/init.d/), чтобы вы могли быстро перейти к ним.

См. Manatwork ответ для более подробной информацииCDPATH .

Тусовка и чтение

Эдуард Лопес
источник
Когда вызывается функция оболочки exit, вы выходите из интерактивной оболочки. Эти "значимые псевдонимы" могут быть просто alias back='cd -'и alias up='cd ..'- но не волнуйтесь, эти команды никогда не вернут false (нет предыдущего каталога? Он отправляет вас домой! Уже в корне? Это не работает!), И поэтому вы никогда не выйдете , Также подумайте alias back='cd $OLDPWD'(обратите внимание на одинарные кавычки), так как он не будет иметь никакого вывода ( cd -говорит вам, куда он отправляет вас, что, вероятно, не нужно, поскольку ваша подсказка содержит эту информацию)
Адам Кац
1

ancэто инструмент строки cmd (сокращение от якоря), который хранит закладки каталогов. (пока что тестируется только с bash)

В твоем случае:

anc a /Project/Warnest/docs/ ~/Dropbox/Projects/ds/test/

это добавляет оба каталога в список якорей (думаю, закладки)

Теперь, если вы хотите перейти /Project/Warnest/docs/из любого места в вашей системе типа:

anc Warn

и если вы хотите, чтобы перейти к ~/Dropbox/Projects/ds/test/типу:

anc ds test

Помимо сопоставления текста с отмеченными закладками путями, у anc есть много других удобных способов перемещения по каталогам.

anc i

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

Если вы введете:

anc Pro[TAB]

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

Получите anc на странице проекта github: https://github.com/tobimensch/anc

Там также README с примером использования.

Полное раскрытие: я автор этого сценария. Я надеюсь, что некоторые люди найдут это полезным.

tobimensch
источник