Estou lidando com projetos java que geralmente resultam em pastas profundamente aninhadas (/ path / to / project / com / java / lang / etc) e às vezes quero saltar, digamos, 4 níveis de diretório para cima. Digitar cd ../../../ .. é uma dor, e eu não quero vincular. Existe algum sinalizador para cd que permita subir vários níveis de diretório (na minha cabeça, seria algo como cd -u 4)? Infelizmente, não consigo encontrar nenhuma página de manual para o cd especificamente, apenas obtendo a página "builtins" inútil.
linux
command-line
Tossrock
fonte
fonte
cd ...
onde o número de '.' seria o número de níveis para subir. Isso causaria um conflito do qual não estou ciente?zsh
eOh My Zsh
qual é a melhor alternativabash
e, em seguida, pode fazercd ...
(vários pontos) como deveria serRespostas:
Ou ... tente o seguinte: (yay Google)
Ver Corte # 2
fonte
..
,...
e....
como eles são mais rápidos de digitar, mas o princípio dos aliases é o mesmo, é claro.cd ...
,cd ....
etc. Foi muito útil.Uma função simples, com um alias também:
(Você pode definir isso
~/.bashrc
se quiser em todas as instâncias).É simples de usar:
fonte
eval $(printf "cd ..;%.s" $(seq $1))
quecd
várias vezes, porque~-
aka$OLDPWD
está definido para o diretório de trabalho de antes invocação, ao invés de um diretório intermediário. PS - simplifica paracd $(printf %.s../ $(seq "$1"))
se você quiser.Uma solução simples e de baixa tecnologia que não precisa de configuração. Só funciona em shells com
bash
edição de comandos -style.cd ..
fonte
Acontece que a resposta correta é 'cd + n', onde n é o número de níveis que você deseja subir. Pena que isso não está documentado em qualquer lugar!
fonte
dirs
interno que usa [+ n] como argumento e imprime o enésimo diretório exclusivo que foi adicionado viapushd
. Se vocêalias
cd
parapushd
, em seguida, você pode usar este. No entanto, observe que essa não é tecnicamente uma resposta à pergunta do OP, porque isso tem a ver com diretórios exclusivos , o que significa que o pedido fica confuso ao longo do tempo, à medida que você retorna aos mesmos diretórios.pushd
epopd
também use uma opção [+ n], e é por isso que isso pode funcionar. Além disso, embora seja imperfeito e indireto, acho que isso pode ser usado como resposta à pergunta. Muitas vezes, você visitou os diretórios acima recentemente, para que estejam nos últimos 10 diretórios armazenados pela pilha de diretórios.Você pode escrever uma função (ela deve ser uma função, pois você deseja alterar o estado do seu próprio shell, ou seja, o diretório de trabalho; um comando externo afetaria apenas seu próprio processo).
Aqui está uma função que subirá vários níveis passados como argumento (padrão 1) na estrutura do diretório físico (assim
cd -P ..
, n vezes):Use-o assim:
fonte
up 4
realmente equivalente acd /some/dir/
assumir$PWD = "/some/dir/that/is/deeply/nested/"
?Não é exatamente o que você está pedindo, mas você deve procurar
pushd
epopd
. Acho-os muito mais úteis para a navegação de pastas do que algunscd...
apelidosSe você estiver indo e voltando de algumas áreas fixas, o normal é ter aliases.
fonte
Em vez de usar aliases, você também pode usar a seguinte função bash:
(ou como uma linha:
function mcd() { up=""; for ((i=1; i<=$1;i++)); do up="${up}../"; done; cd $up; }
)Adicionar isso ao seu
~/.bashrc
arquivo o tornará disponível no seu terminal e a construção de uma String../../../../../../
antes da chamadacd
também possibilitará o usocd -
para voltar ao diretório inicial.Uma implementação mais útil também pode conter algumas verificações de entrada do usuário:
fonte
Você conhece o autojump ? É um hack de terceiros, mas pode ser útil no seu cenário.
fonte
Experimente o parâmetro de ambiente raramente usado
CDPATH
. Talvez você não precise definir explicitamente o nível.Exemplo:
Se estiver trabalhando em vários projetos, você poderá transformar a configuração CDPATH em um arquivo de ambiente específico do projeto. E ative-o com um calço para automação adicional.
Eu costumo usar pushd e popd bastante. Costumo usar o CDPATH para me deixar saltar entre as árvores do projeto, em vez de subdividir-se em um projeto - mas, no momento, estou trabalhando em muitos projetos pequenos, não em alguns grandes. :)
fonte
Se você já estava no diretório de destino:
fonte
Dê uma olhada no DirB . É um script BASH que permite criar indicadores da seguinte maneira:
OPERAÇÕES
Muito simples, muito eficaz.
fonte
Afaste-se da resposta de @ Grigory:
Isso é :
fonte
Fiquei cansado desse mesmo problema e acabei escrevendo o cd-plus como resultado. Um utilitário de CLI de arquivo único que permite criar vários diretórios.
Uso
fonte
Adicionar o código abaixo à sua
.bashrc
extensão estenderácd
para honrar a notação de três pontosDepois que esse snippet for executado no seu shell bash, a digitação
cd .../
e a batida<TAB>
completarão o caminho../../
e listarão os caminhos relativos de todos os diretórios que estão dois níveis acima, por exemplo.Atualização :
bash-completion
deve ser instalado para ter acesso ao_cd
método mencionado no código acima. É instalável através da maioria dos gerenciadores de pacotes de linha de comandofonte