Linux cd .. команда

9

Скажи, если мне нужно сделать это много:

cd ../../../../foo/sub1/bar/dest/
cd ../../../../foo2/sub1/bar/dest/
cd ../../../../foo3/sub1/bar/dest/
cd ../../../../foo/sub1/bar/dest/

Есть ли более быстрый способ не всегда печатать ../../../../так много раз? Есть креативные идеи?

Стан
источник
2
почему бы просто не выполнить cd ../../../..и не покончить с этим?
Красный Крикет
8
Вы можете наслаждаться pushdи popdили даже cd -.
Jscott
1
Если вы идете так далеко назад, возможно, имеет смысл просто указать cd / actual / path / you / want в зависимости от глубины залегания папок.
Дрю Хури
Это намного больше усилий, чем оно того стоит. Если вы перемещаетесь между каталогами, указывать полный путь или просто использовать cd -( для перехода в последний каталог ) проще. Я обычно alias h="history|grep"так, чтобы я мог вместо этого использовать ярлыки записи истории. Что-то вроде h foo3, а затем !450повторить эту команду.
Ewwhite
Откройте другое окно терминала и вообще не вводите cd ../../../ ..
Matt

Ответы:

18

Классический способ сделать это - установить CDPATHпеременную. В вашем случае это может быть установлено .:../../../../или .:/path/to/the/parent/of/fooдля достижения желаемого эффекта. Вы можете просто сделать cd foo/sub1/bar/destи добраться туда, куда вы хотите.

Преимущество этого в том, что завершение вкладки cdтакже выглядит $CDPATHи будет работать волшебным образом.

Деннис Каарсемакер
источник
9

Вы можете использовать autojump, который автоматически извлекает уроки из предыдущей команды cd, и вам нужно только указать уникальную строку из полного пути в следующий раз. ех. j foo, j foo1, j foo2

pragnesh
источник
7

Вы можете создать ярлыки для этих команд, добавив псевдонимы в файл конфигурации bash (~ / .bashrc или /etc/bash.bashrc).

alias cdd="cd ../../../../"

Затем при вводе cddон выполнит эту команду.

Джейсон
источник
3
Да, или function cdd () { cd ../../../../$1/bar/dest ; }, так , то вы можете просто ввести , например cdd foo, cdd foo2.
Эндрю Шульман
0

Недавно я наткнулся на https://github.com/rupa/z , который позволяет вам перейти к недавно использованному каталогу с помощью регулярных выражений. Так что вы можете сделать что-то вроде:

z foo3.*dest

вместо:

cd ../../../../foo3/sub1/bar/dest/

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

rjmunro
источник