] Возможность легко переключаться между каталогами в разных областях [дубликат]

TagSpaces - это приложение для управления документами, которое также поддерживает запись заметок, и может работать как на Linux, так и на Android. В нем нет встроенной функции синхронизации, но вы можете объединить его с DropBox, OwnCloud или SpiderOak для синхронизации между вашими устройствами.

6
16.12.2018, 05:50
11 ответов

Я бы использовал переменные оболочки:

da=/really/long/path/to/directory/a
db=/other/really/long/path/to/directory/b

cd $da
cd $db

Преимущество этого метода в том, что вы можете использовать $ da и $ db вместо путей к файлам в любой команде, например:

cp $da/file1 $db/file2
6
27.01.2020, 20:20

Для точно двух каталогов используйте cd -

$ cd /tmp
$ cd /var/tmp
$ cd -
/tmp
$ cd -
/var/tmp
$ cd -
/tmp
$ 
11
27.01.2020, 20:20

Могу ли я как-то назначить короткое имя каждому из них

Да, конечно, с помощью команды alias:

alias directoryA='cd /path/to/directoryA'

Затем используйте directoryA как псевдоним для команды cd. Это действительно так просто ;)

9
27.01.2020, 20:20

В bash вы можете использовать параметр оболочки cdable_vars , чтобы сделать что-то подобное:

$ mkdir -p /tmp/a/b/c/d/e/f/g/h
$ mkdir -p /tmp/i/j/k/k/l/m/n/o
$ h=/tmp/a/b/c/d/e/f/g/h
$ o=/tmp/i/j/k/k/l/m/n/o
$ shopt -s cdable_vars
$ cd /tmp
$ cd h
$ pwd
/tmp/a/b/c/d/e/f/g/h
$ cd o
$ pwd
/tmp/i/j/k/k/l/m/n/o
1
27.01.2020, 20:20

Вы можете установить автопереход .

, чтобы вы могли ввести « j directoryA » или « j dire » для выбора в нескольких каталогах.

1
27.01.2020, 20:20

Для интерактивной работы используйте оболочку, отличную от Bash. Я использую Fish shell, который позволяет мне набрать

$ cd /u/sh/sounds

и затем нажать Tab. После этого в командной строке появляется

$ cd /usr/share/sounds/

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

3
27.01.2020, 20:20

Вы можете дать каталогу (или любому файлу) сокращенное имя, создав символическую ссылку на него. Символическая ссылка - это запись в каталоге, которая на самом деле не содержит никаких данных, но указывает на другой путь, где можно найти фактические данные. Операции над записью каталога (например, создание, переименование, удаление) манипулируют символической ссылкой, а операции над содержимым (например, чтение, запись, cd и ls для каталога и т.д.) действуют на цель ссылки. Например, создайте символическую ссылку с помощью команды ln:

ln -s /A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt ~/hurt

Тогда cd ~/hurt в основном эквивалентен /A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt. Это эквивалентно, потому что оболочка запоминает и отображает ~/hurt как текущий рабочий каталог; если вы хотите, чтобы оболочка забыла о символической ссылке, используйте cd -P ~/hurt.

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

CDPATH=.:/A/Really/Long/File/Path/Name/Makes/My
cd Fingers/Hurt

Вы также можете задавать сокращения внутри оболочки как переменные. Используйте $ перед именем переменной, чтобы использовать ее значение. Обратите внимание, что если значение переменной содержит специальные символы, такие как пробелы, то при ее использовании необходимо использовать двойные кавычки (если только вы не используете в качестве оболочки zsh или fish).

hurt=/A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt
cd $hurt
spaced='/A/Really Long/File Path Name/Makes My Fingers/Hurt'
cd "$spaced"

В bash опция cdable_vars делает это более удобным для пальцев.

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

2
27.01.2020, 20:20

pushd - это команда bash для этой цели.

Прочитайте раздел о том, как ее использовать в man bash, чтобы узнать, как она работает.

0
27.01.2020, 20:20

Используйте Apparix . Это позволяет вам определять закладки для ваших каталогов. Затем переключаться между ними, после настройки, так же просто, как

to foo
# Goes to /this/is/a/complex/path/for/foo

to bar
# Goes to /a/completely/unrelated/path/for/bar

to foo subdir
# Goes to /this/is/a/complex/path/for/foo/subdir

Etc. И все ярлыки и подкаталоги заполняются автоматически.

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

1
27.01.2020, 20:20

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

1
27.01.2020, 20:20

Не знаю насчет bash (я не использую его, если можно этого избежать), но в tcsh и других оболочках вы можете просто использовать механизм истории. Таким образом, вы должны ввести, например. "cd /" и ctl-UpArrow для прокрутки всех команд до cd до путей, начинающихся с корня.

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

-1
27.01.2020, 20:20

Теги

Похожие вопросы