Eu me pego precisando pular alguns diretórios na minha pasta pessoal com frequência e me canso de escrevê-los. Eu gostaria de uma abordagem mais rápida, que tradicionalmente seria um link simbólico.
No entanto, não quero encher meu diretório pessoal com dezenas de links simbólicos. Eu poderia criar um ~/links/
diretório e confundi- lo com links simbólicos, mas ainda é feio. Além disso, convém criar links simbólicos que mudam a cada dia (definidos em .bashrc) para ir para o diretório de dias atuais.
Existe uma maneira de criar um apelido eficaz para um link simbólico, criando algo que será reconhecido como um link para navegação rápida, mas na verdade não aparecerá quando eu fizer um ls
dos meus diretórios pessoais e não durará além da sessão atual?
fonte
cd -
willcd
no último diretório anteriormente. Portanto, se você fizer isso duas vezes, voltará para onde começou ... muito bom para a situação "oh, esqueci de editar someFile.txt no local anterior" => Simplesmente:cd -
edite someFile.txtcd -
Respostas:
Você pode usar a conclusão da guia. Por padrão, em muitas distribuições Linux, o bash é configurado para que, quando você pressiona a tecla [TAB], receba uma lista de possíveis correspondências ou, se houver apenas uma correspondência, tudo estiver preenchido. Para cd, normalmente é uma lista de subdiretórios do diretório de trabalho atual. Você pode sobrescrever isso, mas sugiro que crie um alias, como
jd
para "diretório de salto":e, em seguida, definindo os "indicadores" desejados como conclusões para o jd. Consulte a página de manual do bash para muito mais opções (incluindo a geração automática de resultados em tempo real a partir de um comando ou função), mas a maneira mais fácil é apenas uma lista de palavras, com
-W
:completo -W "/ srv / www ~ / tmp ~ / work" jd
Agora, digite
jd
e pressione [TAB] e você verá seus "favoritos". Digite qualquer parte ambígua e, em seguida, pressione [TAB] para concluir. (Acima, os~
s se expandem para o meu diretório pessoal, então o primeiro [TAB] me dá um/
, e se eu pressionarw
e [TAB] novamente,/srv/www
é preenchido.)Obviamente, coloque isso
~/.bash_profile
para fazê-lo persistir.Ou, podemos levar isso para o próximo nível. Crie um diretório
~/.shortcuts
- começando com um ponto, ele ficará oculto e não atrapalhe seu diretório pessoal limpo e agradável - e preencha-o com links simbólicos para os diretórios desejados. Em seguida, coloque isso em seu ~ / .bash_profile:Isso define uma conclusão um pouco mais complicada na função
_list_shortcuts
de criar a lista de nomes e faz com quejd
seja uma função e não um alias simples, pois queremos que ele atue de maneira diferente da justificadacd
. A-P
bandeiracd
faz com que resolva os links simbólicos, para que tudo se torne uma mágica transparente. Seus nomes de atalho nem precisam corresponder aos alvos.Então:
E, para uma dose extra de fantasia, faça uma
jd
lista de todos os seus atalhos quando executados sem nenhum parâmetro:Nota: eu uso em
compgen -W $( cmd )
vez decompgen -C 'cmd'
porque o último nunca funciona para mim e não entendo o porquê. Essa pode ser uma nova pergunta minha. :)fonte
Os aliases de shell têm o recurso que você pode executar (alguns) para completar nomes (geralmente vinculado a tab). Como alternativa, você pode usar o
CDPATH
recurso, que "recentemente" (nos últimos 5 a 6 anos) foi aprimorado para oferecer suporte ao preenchimento de nome. Se isso funcionar para você, tem a vantagem de que o que você digita é o nome real do diretório, em vez de um mnemônico para ele.De acordo com o manual do bash
Leitura adicional:
fonte
CDPATH
variável de ambiente, obrigado. Eu poderia adicionar meugit_repos
diretório a essa variável .... #Para os diretórios que você costuma frequentar, mas não muda diariamente, outra opção é apenas ter vários
alias
comandos no seu.bashrc
arquivo:Um amigo tem cerca de 50 deles; Eu tenho um punhado; Rápido e fácil. Somente
alterar o diretório para / u01 / app / oracle
fonte
Eu recomendo
pushd
epopd
.Pessoalmente, acho-os úteis ao realizar trabalhos de desenvolvimento / ler código-fonte, quando vários diretórios estão envolvidos.
Eles implementam efetivamente uma estrutura de pilha / LIFO, na qual você PUSH um diretório (
pushd
) e o próximo comando de diretório POP (popd
) o recupera.Então, quando dentro de um dir, você faria:
E quando você precisa recuperá-lo, você faz
Você pode executar múltiplos
pushd
, e fazer opopd
(s) correspondente (s) posteriormente, para retornar aos diretórios.Vou deixar aqui um link.
http://www.eriwen.com/bash/pushd-and-popd/
fonte
popd
muito. Encho minhadirs
lista (que é preenchida porpushd
comandos) com todos os diretórios em que quero visitar / trabalhar nesse período de tempo, depois corropushd +1
. Então, eu posso percorrer os diretórios com um simples!pu
que é muito rápido. (Note-se que em ambos Ubuntu e CentOS,pushd
é a única de comando disponíveis em uma instalação limpa que começa compu
.)Você pode simplesmente colocá-los como variáveis no seu
~/.bashrc
e então eles estão a uma certa$
distância.fonte
A resposta óbvia são as variáveis , aquelas coisas simbólicas no shell que representam outras coisas, da mesma forma que os links simbólicos no sistema de arquivos.
Em qualquer shell decente, você obtém a Tabconclusão de nomes de variáveis, o que ajuda ainda mais.
fonte