Posso reduzir a digitação necessária para `cd` em alguns diretórios conhecidos


11

Eu me pego abrindo um terminal e, em seguida, colocando um CD no mesmo diretório cujo caminho é muito longo.

Isso significa que estou gravando muito e usando a guia para acelerar bastante as coisas.

Seria ótimo se eu pudesse ter algum tipo de link para este diretório e, em seguida, apenas fazer um cd para isso, para que eu estivesse no diretório aninhado rapidamente.

Isso é possível?


1
Eu tenho vários scripts (bash) que executam pequenas tarefas (relacionadas), como cd'ing em um projeto do github e em execução git status. Eu também tenho alguns apelidos no meu .bash_profile. Não é exatamente o que você está pedindo, mas relacionado.
28413

Respostas:


24

Aqui está a maneira de lidar com caminhos complexos com cdfrequência.

mkdir ~/Links
ln -s /complexpath/there ~/Links

isso criará o link simbólico

~/Links/there

Para usar este novo Linksdiretório de forma eficiente, se o seu shell de login é bash apenas incluir este comando no seu ~/.profile(que é usado por todos os conchas estilo Bourne bash, ksh, zsh...):

CDPATH=~/Links:.
export CDPATH

Isso significa que, para todos cd, seu shell procurará em 2 diretórios para encontrar um nome de caminho local:

~/Links
.

Você não precisará reiniciar sua sessão para testá-la, basta executar:

. ~/.profile

o que significa apenas ler o meu ~/.profile. (Você não precisará colocá-lo no seu, ~/.bashrcpois não há necessidade de repetir a mesma inicialização de variável quando você não o alterar.)

Depois de testá-lo, você poderá reiniciar sua sessão;).

A partir de agora, toda vez que você quiser ir there, precisará digitar:

cd there

Esta é a solução geral mais elegante que eu já vi. Eu normalmente fazer aliases para destinos comuns (como aliasing cdorapara cd $ORACLE_HOMEe tal ...)
bmike

Alguém se interessaria por um equivalente simples através da interface do Finder?
dan

11

Definir um alias é uma maneira muito fácil de ter uma abreviação curta para um comando mais longo. Depois de acertar os aliases, você poderá criar uma seção no arquivo .bashrc (ou outro arquivo de inicialização) para não precisar digitar novamente esses aliases para cada novo shell iniciado:

em .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

etc.

Efetue logout e logon novamente (ou apenas execute . ~/.bashrc) e agora você pode apenas digitar httpdloge executar o CD. Ou então ws4ele realmente executa o comando ssh etc.

Isso elimina a necessidade de criar (uma grande quantidade de) links vazios que farão com que seu diretório pessoal também pareça uma bagunça.


10

Tente usar o salto automático ou z .

Depois de instalar qualquer um dos dois, você simplesmente cdvolta ao normal e eles aprendem os diretórios mais visitados e permitem que você os acesse digitando apenas uma parte do caminho:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Eu prefiro z dos dois.


não sei sobre autojump, mas o script 'z' é demais!
Kris

7

Eu recomendo fasd, que é semelhante ao autojump e z, mas melhor IMHO. A partir do site:

Fasd (pronuncia-se semelhante a "rápido") é um aumento de produtividade na linha de comando. O Fasd oferece acesso rápido a arquivos e diretórios para shells POSIX. Ele é inspirado em ferramentas como autojump, z e v. Fasd acompanha arquivos e diretórios que você acessou, para que você possa referenciá-los rapidamente na linha de comando.

O nome fasd vem dos aliases sugeridos padrão f (arquivos), a (arquivos / diretórios), s (mostrar / pesquisar / selecionar), d (diretórios).

O Fasd classifica os arquivos e diretórios por "frecência", ou seja, por "frequência" e "recente". O termo "frecência" foi cunhado pela Mozilla e usado no Firefox (link).


4

Como alternativa, você pode criar um alias. Jogue o seguinte em algo como .bashrc ou .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Depois, verifique se o arquivo em que está é sourced. Meus aliases estão em .bashrc, que eu forneço com esta linha em .bash_profile: source ~/.bashrc


2

Adicionar links simbólicos convenientes é bom para um ou dois diretórios especiais, mas muito rapidamente torna-se difícil de gerenciar. Uma solução muito melhor é usar a variável de ambiente CDPATH, disponível em bashe outros shells para esse fim.

CDPATHé uma lista (como PATH) separada por dois pontos de locais para procurar um nome de diretório. Pode conter nomes de caminho absolutos e relativos. Eu tenho o meu definido para algo como export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Com essa configuração, eu posso digitar cd pdftools de qualquer lugar e isso me levará ~/projects/pdftools. (Com um link simbólico, eu teria que digitar cd ~/pdftoolsse eu não estava no meu diretório home.) Eu também pode atalho para os subdiretórios: cd pdftools/bin.

O ..em meu CDPATHpermite-me digitar em cd sisterdirvez de cd ../sisterdiretc. Como você pode esperar, quando eu criar novos diretórios em qualquer lugar, CDPATHeles serão encontrados automaticamente cd- não há necessidade de criar novos links simbólicos ou aliases.

Esse recurso fica ainda melhor se você usar o bash_completionarquivo distribuído, por exemplo, com os sistemas Debian. Ele não veio com a caixa do OS X, então peguei uma cópia e funciona bem. (Get-lo com brew, ou simplesmente baixá-lo manualmente a partir de aqui .) Este arquivo define melhorias para a conclusão de comando, para que eu possa escrever cd pdf<TAB>eo pdftoolsdiretório é encontrado e expandido a partir de qualquer lugar no CDPATH.


1

Claro: crie um link simbólico

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut


1

Como alternativa, você também pode tentar instalar o shell do peixe.

http://fishshell.com/

Isso tem uma excelente previsão para comandos. Ele também permite que você digite com distinção entre maiúsculas e minúsculas sem necessidade de estragar tudo.

A desvantagem do peixe é que ele possui sua própria linguagem de script e não é compatível com o bash.


1

Tudo o que faço é digitar "cd" e, em seguida, arraste a pasta do Finder para o Terminal, que cola no caminho completo. Talvez não seja tão elegante, mas funciona para todas as pastas versus alguns atalhos salvos?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.