Я имею дело с проектами java, которые часто приводят к вложенным папкам (/ path / to / project / com / java / lang / что угодно и т. Д.) И иногда хотят иметь возможность перейти, скажем, на 4 уровня каталога вверх. Ввод cd ../../../ .. это боль, и я не хочу символическую ссылку. Есть ли какой-нибудь флаг для cd, который позволяет вам подняться на несколько уровней каталогов (в моей голове это будет что-то вроде cd -u 4)? К сожалению, я не могу найти какую-либо справочную страницу для CD, а просто получаю бесполезную «встроенную» страницу.
linux
command-line
Tossrock
источник
источник
cd ...
числа "." будет количество уровней, чтобы подняться. Может ли это вызвать конфликт, о котором я не знаю?zsh
иOh My Zsh
это лучшая альтернатива,bash
а затем вы можете просто сделатьcd ...
(несколько точек), как это должно бытьОтветы:
Или ... попробуйте это: (yay Google)
Смотрите Hack # 2
источник
..
,...
и так....
как они быстрее ввести, но принцип псевдонимов это же, конечно.cd ...
, иcd ....
т.д. Это было очень удобно.Простая функция с псевдонимом тоже:
(Вы можете определить это,
~/.bashrc
если хотите в каждом случае).Это просто в использовании:
источник
eval $(printf "cd ..;%.s" $(seq $1))
которыеcd
несколько раз, потому что~-
aka$OLDPWD
настроен на рабочий каталог до вызова, а не на промежуточный каталог. PS - это упрощает,cd $(printf %.s../ $(seq "$1"))
если хотите.Простое, низкотехнологичное решение, которое не требует настройки. Работает только в оболочках с
bash
редактированием команды -style.cd ..
источник
Оказывается, правильный ответ - «cd + n», где n - количество уровней, которые вы хотите пройти. Жаль, что это нигде не задокументировано!
источник
dirs
которая принимает [+ n] в качестве аргумента и печатает n-й уникальный каталог, который был добавлен черезpushd
. Если выalias
cd
доpushd
, то вы можете использовать это. Тем не менее, обратите внимание, что это технически не является ответом на вопрос OP, потому что это связано с уникальными каталогами, что означает, что со временем порядок будет испорчен, когда вы вернетесь к тем же каталогам.pushd
иpopd
также выберите опцию [+ n], поэтому она способна работать. Кроме того, хотя это и несовершенно и косвенно, я думаю, это можно использовать как ответ на вопрос. Часто вы недавно посещали каталоги над вами, поэтому они будут в последних 10 каталогах, хранящихся в стеке каталогов.Вы можете написать функцию (это должна быть функция, так как вы хотите изменить состояние самой оболочки, а именно рабочего каталога; внешняя команда будет влиять только на собственный процесс).
Вот функция, которая поднимется на несколько уровней, переданных в качестве аргумента (по умолчанию 1) в физической структуре каталогов (например
cd -P ..
, n раз):Используйте это так:
источник
up 4
не эквивалентноcd /some/dir/
предположению$PWD = "/some/dir/that/is/deeply/nested/"
?Не совсем то, что вы просите, но вы должны изучить
pushd
иpopd
. Я считаю их гораздо более полезными для навигации по папкам, чем некоторыеcd...
псевдонимыЕсли вы идете туда-сюда из пары фиксированных областей, обычно нужно иметь псевдонимы.
источник
Вместо использования псевдонимов вы также можете использовать следующую функцию bash:
(или как однострочник:
function mcd() { up=""; for ((i=1; i<=$1;i++)); do up="${up}../"; done; cd $up; }
)Добавление этого к вашему
~/.bashrc
файлу сделает его доступным в вашем терминале, а построение строки../../../../../../
перед вызовомcd
также позволит использовать ееcd -
для возврата в начальный каталог.Более полезная реализация может также содержать некоторые проверки пользовательского ввода:
источник
Вы знаете об автопрыжке ? Это сторонний взлом, но может быть полезен в вашем сценарии.
источник
Попробуйте редко используемый параметр среды
CDPATH
. Тогда вам, возможно, не придется явно устанавливать уровень.Пример:
Если вы работаете с несколькими проектами, вы можете превратить настройку CDPATH в файл среды проекта. И вызвать его с прокладкой для дополнительной автоматизации.
Я склонен использовать pushd и popd довольно часто. Я склонен использовать CDPATH, чтобы позволить мне переключаться между деревьями проекта, а не подкаталогами в проекте - но в данный момент я работаю над множеством небольших проектов, а не над несколькими большими проектами. :)
источник
Если вы ранее находитесь в целевом каталоге:
источник
Посмотрите на DirB . Это скрипт BASH, который позволяет создавать закладки следующим образом:
ОПЕРАЦИИ
Очень просто, очень эффективно.
источник
Отойдите от ответа @ Grigory:
То есть :
источник
Надоела эта точно такая же проблема, и в результате она написала CD-Plus . Утилита CLI с одним файлом, которая позволяет вам создавать несколько каталогов.
использование
источник
Добавление приведенного ниже кода к вашему
.bashrc
расширению продлитcd
завершение, чтобы соблюдать обозначение три плюс точкиКак только этот фрагмент будет запущен в вашей командной оболочке bash, при вводе
cd .../
и вводе<TAB>
пути будет указан полный путь ко../../
всем каталогам, например, на два уровня выше.Обновление :
bash-completion
должно быть установлено, чтобы иметь доступ к_cd
методу, указанному в приведенном выше коде. Это устанавливается через большинство менеджеров пакетов командной строкиисточник