Maneiras Rápidas de Cd'ing em * nix?

4

Eu me vejo constantemente digitando (usando tab, é claro) caminhos absurdos como

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

Além de fazer um ln -s (ou algum outro tipo de ln?), existe alguma outra maneira de se locomover mais rápido? Além disso, se a solução for usar ln , existe alguma maneira / local padrão para colocar os links de modo a não confundir meu diretório ~ ?

Eu não estou pedindo apenas atalhos: qualquer solução que ajude com o problema de "como se locomover" ajudaria.

    
por Dan Rosenstark 16.05.2010 / 20:58

8 respostas

11

No bash, a variável de ambiente $CDPATH contém uma lista de caminhos a serem procurados por diretórios ao usar cd .

CDPATH=".:~/long path to my projects"
cd eraseme
    
por 16.05.2010 / 21:31
9

Algumas pessoas usam aliases para essa finalidade. Tente isto por exemplo:

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

Agora você pode digitar cderaseme toda vez que quiser ir para esse diretório. O alias só será válido para a sessão de terminal atual, portanto, coloque-o em seu .bashrc para mantê-lo.

    
por 16.05.2010 / 21:10
6

Algumas ideias simples:

  • Use a conclusão da guia.
  • Use cd para voltar ao seu diretório pessoal. Use cd ~/<dir> para ir para um diretório relativo ao seu diretório pessoal.
  • Use cd - para voltar ao último diretório. Ou seja Com este comando, você pode alternar entre dois diretórios.
  • Use pushd <dir> para ir para um diretório e lembrar-se do local anterior na pilha de diretórios. Em seguida, use popd para voltar (na pilha de diretórios) para o local anterior.
  • Use caminhos relativos, ou seja, cd ../<dir> , em vez de caminhos absolutos.
  • Use cd !$ para ir para o diretório mencionado no último argumento do comando anterior (depende do seu shell). Exemplo: mkdir /tmp/dir seguido por cd !$ e seu diretório atual é /tmp/dir .
por 16.05.2010 / 21:14
4

zsh tem uma conclusão um pouco melhor - você pode digitar apenas alguns caracteres de cada diretório e pressionar a tecla para que todos sejam expandidos:

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

Além disso, há alguns utilitários que podem ser lembrados aonde você costuma ir e tentar adivinhar ou apenas se comportar como uma versão mais inteligente de cd , por exemplo. cdargs , wcd , apparix , kcd ... nunca os usou, sempre usei zsh completion.

    
por 17.05.2010 / 01:03
3

Eu costumo criar um script de shell chamado algo como 'mycd', que eu posso passar parâmetros para. Algo parecido com isto:

# 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

E, em seguida, no arquivo de alias, insira uma entrada como:

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

Então, posso chamá-lo com algo como mycd mylib e ele me levará direto para lá.

Semelhante à lista de aliases mencionados acima, mas isso os reúne em um só lugar e fornece um texto de ajuda se precisar ser lembrado de quais lugares eu armazenei.

    
por 17.05.2010 / 01:36
1

Tente isto:
a () {alias $ 1 = cd \ $ PWD; } Isso cria uma pequena função que facilita a criação de novos aliases para alternar diretórios.

    
por 17.05.2010 / 11:00
1

Fui brincar com algumas dessas respostas hoje. O que é interessante é uma combinação de globbing com o uso de tab no shell Bash. Por exemplo:

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

e clique no separador e, se for único, expande-se, caso contrário, oferece opções.

    
por 17.05.2010 / 11:21
1

No Mac OS X você (usando / bin / bash) pode usar todos os comandos cd de terminal e informações de cdpath típicos.

Existe um bom truque. Você pode arrastar uma pasta do Finder para o terminal e o caminho completo será exibido. Isso facilita a entrada rápida e visual de comprimentos de arquivo complicados no terminal.

    
por 18.05.2010 / 19:01

Tags