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
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.
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.
Algumas ideias simples:
cd
para voltar ao seu diretório pessoal. Use cd ~/<dir>
para ir para um diretório relativo ao seu diretório pessoal. cd -
para voltar ao último diretório. Ou seja Com este comando, você pode alternar entre dois diretórios. 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. cd ../<dir>
, em vez de caminhos absolutos. 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
. 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.
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.
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.
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.
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.