4

Я постоянно набираю (используя табуляцию, конечно) абсурдные пути вроде

cd path/to/the/thing\ that\ I\ need/python/proj/eraseme

Помимо выполнения ln -s (или другого типа ln?), Есть ли другой способ обойти быстрее? Кроме того, если решение заключается в использовании ln , есть ли какой-нибудь стандартный способ / место для размещения ссылок, чтобы не загромождать мой ~ каталог?

Я не прошу только ярлыки: любое решение, которое помогает с проблемой "как обойти", поможет.

8 ответов8

11

В bash переменная среды $CDPATH содержит список путей, по которым нужно искать каталоги при использовании cd .

CDPATH=".:~/long path to my projects"
cd eraseme
9

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

alias cderaseme='cd /home/user/whatever/path/to/the/thing\ that\ I\ need/python/proj/eraseme'

Теперь вы можете вводить cderaseme каждый раз, когда хотите перейти в этот каталог. Псевдоним будет действителен только для текущего сеанса терминала, поэтому сохраните его в вашем .bashrc.

6

Несколько простых идей:

  • Используйте вкладку завершения.
  • Используйте cd чтобы вернуться в свой домашний каталог. Используйте cd ~/<dir> чтобы перейти в каталог относительно вашего домашнего каталога.
  • Используйте cd - чтобы вернуться в последний каталог. Т.е. с помощью этой команды вы можете переключаться между двумя каталогами.
  • Используйте pushd <dir> чтобы перейти в каталог и запомнить предыдущее место в стеке каталогов. Затем используйте popd чтобы вернуться (в стеке каталогов) к предыдущему месту.
  • Используйте относительные пути, т.е. cd ../<dir> , вместо абсолютных путей.
  • Используйте cd !$ для перехода в каталог, указанный в последнем аргументе предыдущей команды (зависит от вашей оболочки). Пример: mkdir /tmp/dir и cd !$ и ваш текущий каталог - /tmp/dir .
4

zsh имеет немного лучшее завершение - вы можете просто ввести несколько символов в каждом каталоге и нажать Tab, чтобы развернуть их все:

$ cd p/t/t/t/p/p/er<tab>

Также есть некоторые утилиты, которые могут вспомнить, куда вы часто ходите и пытаетесь угадать, или просто вести себя как более умная версия cd , fe cdargs , wcd , apparix , kcd... никогда не использовал их, я всегда просто использовал zsh завершение.

3

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

# Shell script to CD into various locations.
if   [ "$1" == "myhome"  ]  ; then cd ~;
elif [ "$1" == "mypref"  ]  ; then cd ~/Library/Preferences;
elif [ "$1" == "mylib"  ]   ; then cd ~/Library;
elif [ "$1" == "syslib" ]   ; then cd /System/Library;
elif [ "$1" == "--help" ]   ; then
  echo "Usage: $0 location, which can be one of"
  echo "myhome = My home dir."
  echo "mypref = My Preferences dir."
  echo "mylib  = My Libraries dir."
  echo "syslib = System library."
  echo "--help = Show this message."
else echo "$0: $1 not known.";
fi

А затем в файле псевдонимов, поместите запись как:

alias mycd='. /path/to/mycd'

Тогда я могу просто назвать это с чем-то вроде mycd mylib и это приведет меня прямо туда.

Подобно списку псевдонимов, упомянутому выше, но это собирает их все в одном месте и дает текст справки, если мне нужно напомнить, какие места я сохранил.

1

Попробуй это:
a() {псевдоним $ 1 = cd\ $ PWD; }
Это создает небольшую функцию, которая позволяет легко создавать новые псевдонимы для переключения каталогов.

1

Дурачился с некоторыми из этих ответов сегодня. Что интересно, так это некоторая комбинация с использованием tab в оболочке Bash. Например:

cd /p*/t*/*need*/py*

и нажмите вкладку, и если он уникален, он расширяется, в противном случае он дает вам выбор.

1

В Mac OS X вы (используя /bin /bash) можете использовать все типичные команды терминала cd и информацию о cdpath.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .