Navegar em várias camadas de diretórios aninhados geralmente é um problema. No Firefox, é fácil porque eles têm marcadores. Então, o que eu gostaria de fazer para marcar um arquivo como favorito é digitar:
$ go --add classes "repo/www/public/util/classes"
Então, para ir para esse diretório, digite:
$ go classes
Anteriormente, usei links simbólicos para obter algo semelhante, mas não quero desorganizar meu diretório pessoal. Existem muitos outros recursos que podem ser úteis. Por exemplo, eu gostaria de começar a digitar go cl
e clicar em tab para concluir automaticamente. Às vezes, faço check-out de várias cópias de um repositório e, portanto, seria útil que o programa permitisse criar vários contextos e definir o marcador em relação ao diretório da base de contexto.
Então, antes de começar a montar meu próprio conjunto de scripts, já existe algo assim?
Respostas:
Eu estava procurando por alguma ferramenta de bookmarking de shell por muito tempo e não estou satisfeito com nenhuma das soluções que encontrei.
No entanto, acabei encontrando uma grande ferramenta universal: o buscador difuso da linha de comando .
Ele permite principalmente que você encontre arquivos "difusos" (verifique a rica animação gif no link acima), mas também permite alimentar dados de texto arbitrários e filtrar esses dados. Portanto, a ideia dos atalhos é simples: tudo o que precisamos é manter um arquivo com caminhos (que são atalhos) e filtrar esse arquivo com difusão. Veja como fica: digitamos
cdg
command (de “cd global”, se você preferir), obtemos uma lista de nossos favoritos, selecionamos o necessário com apenas alguns toques de tecla e pressione Enter. O diretório de trabalho é alterado para o item selecionado:É extremamente rápido e conveniente: geralmente apenas digito 3-4 letras do item necessário e todas as outras já estão filtradas. Além disso, é claro que podemos percorrer a lista com as setas ou com
Ctrl+j
/Ctrl+k
.Artigo detalhado sobre esta solução de atalhos / favoritos está aqui: Atalhos difusos para o seu shell .
fonte
Eu acho que você está procurando algo como salto automático . Você precisa se movimentar um pouco para desenvolver um conjunto de "pesos-chave" que se correlacionam com a quantidade de tempo gasto em um determinado diretório. Então, supondo que você tenha passado muito tempo no diretório 'classes', você pode ir diretamente para lá digitando
Você pode visualizar seus "pesos-chave" com
fonte
f
: github.com/clvv/fComo Saeedn menciona, os pseudônimos são um bom mecanismo. O shell bash também tem um mecanismo interno para saltar para a direita para um local:
CDPATH
. Defina comoPATH
, mas é usado emcd
vez de procurar programas.Na página de manual:
Eu mesmo, combinei isso com um diretório que possui links simbólicos para onde eu gostaria de ir:
Isso tem a desvantagem de que o diretório não parece estar correto, mas que pode ser corrigido usando
cd -P
ou configurandoset -P
.fonte
alias C='cd -P .'
, em vez deset -P
, uma vez por links simbólicos do sistema Eu não me importo de ser no diretório link simbólico.help cd
e ainda não entendo o que a opção -P faz.mkdir test; ln -s test linktotest; cd linktotest; pwd; cd -P .; pwd
Você pode combinar o histórico existente do Bash e os recursos de pesquisa de histórico. Pressione Ctrl-Rpara iniciar a pesquisa reversa incremental e comece a digitar a parte do caminho que provavelmente será única.
Você pode continuar digitando as letras até retornar ao
cd
comando mais recente envolvendo esse diretório ou pressionar Ctrl-Rnovamente para voltar ao histórico para o próximo comando mais recente correspondente ao que você digitou até agora.Eu faço isso toda hora.
Na verdade, eu dou um passo adiante. Uma vez que eu começar a descobrir sequências de comandos vale a pena manter na história, mas não vale a pena se comprometer com um script shell, eu começo a acorrentar-los com
&&
e;
combinadores para que eu possa inverter-procurar uma substring de que um comando longo, hit Entere executar toda a sequência em uma vez.Por exemplo, veja como eu construo e executo um dos meus programas durante o desenvolvimento:
Eu faço isso no diretório de instalação, que fica abaixo do diretório de origem de nível superior. Ao envolver
cd
, compilar e instalar a parte em um sub-shell, garanto que não importa o que aconteça durante esse processo, eu retorne ao meu shell normal sem que nada seja alterado. Somente se tiver êxito (&&) eu inicio o programa construído e instalado. Eu posso encontrar isso na minha história com apenas um Ctrl-Rmomento sta, sendo tudo o que geralmente preciso para encontrar exclusivamente essa sequência de comandos.Outro exemplo de como eu uso isso é a sequência que cria os RPMs para esse mesmo programa. A maior parte do trabalho tedioso está em scripts de shell, mas ainda existem alguns comandos que eu normalmente teria que digitar para fazer todo o trabalho de construção e implantação dos RPMs construídos, que agora raramente preciso digitar novamente, porque o Bash mantém na história para mim.
Combine tudo isso com
export HISTSIZE=bignum
eshopt histappend
e você acabou de construir uma memória de comando elephantine.Outra solução que eu codifiquei uma vez está na minha resposta a outra pergunta aqui . Pode ter que ser personalizado para seus propósitos, e apenas lida com
cd
comandos, enquanto a opção de pesquisa de histórico funciona em qualquer lugar e para cada comando.fonte
Eu mesmo uso
alias
para encurtar caminhos longos que visito frequentemente. Você pode colocar seu conjunto dealias
es no seubashrc
, para que o bash se lembre deles sempre que fizer login. Felizmente, o bash adiciona aliases à conclusão automática.Eu escreveria algo assim para o seu caso:
alias go-classes="cd ~/repo/www/public/util/classes"
fonte
Você pode estar procurando por marcas de base (no github).
No README:
Bashmarks é um script de shell que permite salvar e pular para os diretórios mais usados. Agora suporta a conclusão da guia.
fonte
Isso não é de forma alguma completo nem infalível, apenas um rascunho para começar. Ao adicionar o seguinte no seu,
~/.bashrc
você terá três comandos para adicionar indicadores de exclusão e lista de diretórios (que são baseados em aliases de shell, para que você também obtenha a conclusão automática).O uso é bem simples.
bmadd
com um argumento adiciona um alias nomeado após o argumento. Esse alias apenas cria um CD no diretório em que foi definido. Sem um argumento, ele usa o dirname atual como o nome do alias. Da mesma forma,bmdel
exclui um alias, se existir, ebmlist
lista os favoritos atuais.por exemplo
fonte
Encontrei a mesma necessidade há algum tempo e decidi montar alguns scripts para me ajudar a marcar caminhos absolutos / relativos e mapeá-los para nomes mais curtos dos quais me lembro facilmente.
O script é muito fácil de usar e simplesmente cria uma função com o nome abreviado que você fornece como um alias para o diretório no qual deseja pular. Tudo o que você precisa fazer é simplesmente digitar esse nome abreviado e ele o levará ao diretório marcado.
Aqui está um link para a fonte do script do marcador. A propósito, eu o chamei de Bookmarker.
Uso
Uma vez instalado, é bastante trivial de usar.
Para marcar um diretório:
Para navegar para um diretório marcado:
Para ver o que foi marcado:
Para excluir um diretório marcado:
Para mais exemplos, instruções de instalação, etc., consulte a documentação muito detalhada .
fonte
cdargs
é a melhor ferramenta para bookmarking de diretório.Para exemplos de uso, consulte os indicadores do vídeo de comando cd no YouTube.
Exemplo de uso
cdargs
é uma interface gráfica ncurses para que você possa navegar visualmente dentro do seu shell. Depois de instalado, você o configura em um determinado shell, fornecendo um script de shell:Isso habilita várias funções que você pode chamar do seu shell.
Convocar a GUI:
Resultando neste tipo de GUI:
Você pode usar as teclas de seta para mover para cima e para baixo e navegar na lista. A seta esquerda ( ←) sobe um nível na árvore de diretórios, uma seta direita ( →) é detalhada em um diretório.
diretórios de marcação:
Você pode usar co diretório atual em que está navegando ou aadicionar o diretório que está destacando no momento com o cursor.
modos de operação:
cdargs
é um pouco como vi / vim nesse sentido, onde tem essa noção de modos . Existem 2 deles, navegando (B) e listando (L). Você pode ver em qual modo está na tela na parte inferior do seu shell.Modo de listagem:
Modo de navegação:
Você pode alterar seu modo pressionando a tecla Tab ( TAB).
Esta é apenas a ponta do iceberg, consulte a página de manual (
man cdargs
) e também a ajuda interna para obter mais informações.fonte
A melhor ferramenta para isso é: wcd . Eu testei muitas outras ferramentas, e essa é usada exatamente da maneira que você está perguntando e é melhor em muitos sentidos do que em todas as soluções anteriores.
fonte
As outras respostas são ótimas e específicas. Outra maneira de ver isso é usar um processador de macro do teclado que pode fazer quase qualquer coisa que você possa imaginar.
Confira AutoKey. Ele pode substituir frases como a correção automática do processador de texto ou o histórico do bash e também pode executar um script python em uma tecla de atalho que você define, que pode fazer quase qualquer coisa e também pressionar as teclas do dispositivo de entrada de caracteres - como se você as tivesse digitado.
A única "falha" que possui (em relação a essa pergunta) é que ele precisa de uma interface gráfica para rodar no - gnome ou no kde. As outras respostas não têm esse requisito.
fonte
Existe uma outra alternativa chamada z .
Ele aprende em todas as alterações de diretório:
Em seguida, você pode mudar para esse diretório mais tarde com a correspondência difusa:
fonte
Apparix é outra ferramenta que faz isso. Um de seus recursos úteis é que você pode pular diretamente para os subdiretórios da marca e preencher tabulação nesses subdiretórios.
fonte
Outra solução que, acredito, é
autojump
ez
éfasd
.Ele monitora quais diretórios você visita e
z dir-name
mudará para o diretório com o nomedir-name
que você usa com mais frequência. Ele também possui algumas funcionalidades para arquivos usados com freqüência.Você pode cloná-lo em: https://github.com/clvv/fasd
A instalação é simples, clona, faz a instalação e modifica seu
.bashrc
(ou.zshrc
etc).fonte
Você precisa adicionar um alias ao seu
.bashrc
ou.bash_profile
.Agora, digamos que você queira um atalho
~/Desktop/Coding/Projects
para invocar o que você digitarágoto_Projs
. Você precisa adicionar a seguinte linha ao arquivo aberto no editor de texto:alias goto_Projs='cd ~/Desktop/Coding/Projects'
Agora faça o que seu editor de texto quiser que você salve (para
/User/<yourusername>/
ou é~/
claro) e saia e, quando o prompt do shell for retornado, vásource ~/.bash_profile
Seu alias agora deve estar disponível para chamar, conforme descrito acima.
fonte
Eu uso o método de anexar um comentário no final do comando e depois invocar
ctrl R
a pesquisa reversa para o comentário. Isso tem as seguintes vantagens:ctrl R
ctrl R
etab
em tempo real para fazer pequenos ajustes no próprio comando, tornando o comentário um tipo de atalho genérico para uma família de comandos semelhantesfonte