Como minimizar a digitação ao alterar frequentemente os diretórios?

5

Quais são alguns bons comandos do Linux para facilitar a troca entre diretórios diferentes na linha de comando?

Muitas vezes tenho que alternar entre diretórios diferentes com nomes longos, por exemplo

cd foo/20100801-rev124-test2
ls 
cd ../20100801-rev124-test1
ls 
cd ../20100802-rev126-bar

Normalmente, uso a conclusão de guias, por isso é algo assim:

cd ../2010080<TAB>2<TAB>-rev12<TAB>6-<TAB>bar

Mas é irritante porque todos esses nomes são tão semelhantes, então a conclusão da tabulação não economiza muito trabalho.

Quais truques você usa para minimizar a digitação em tais situações?

BTW, eu uso pushd e popd às vezes, mas aqui não vai ajudar muito, porque eu não visito os diretórios em uma determinada ordem.

ATUALIZAÇÃO:

Para uma boa solução, consulte a resposta aceita ao meu outra, pergunta relacionada . Basicamente, basta criar um comando alternativo cd :

function cd2 { select a in $1*; do cd $a; break; done }

Ele listará todas as conclusões possíveis de uma só vez:

$ cd2 2010080
(1) 20100801-rev124-test2
(2) 20100801-rev124-test1
(3) 20100802-rev126-bar

e você pode escolher um digitando o seu número.

    
por dehmann 04.08.2010 / 17:47

10 respostas

3

O comando dirs -v listará a pilha de diretórios com números na frente de cada diretório e você poderá fornecer um argumento numérico ao comando pushd para que ele salte para esse diretório. Por exemplo, se dirs -v mostrar que o diretório que você deseja alterar tem 2 na frente dele (ou seja, é o terceiro diretório na lista), a execução de pushd +2 será alterada para esse diretório.

Para salvar a digitação, você pode encurtar esses comandos, dando a eles aliases como este:

alias dv="dirs -v"
alias pd=pushd
    
por 04.08.2010 / 18:39
2

Você pode usar curingas:

cd ../*test1 or even cd *t1
cd ../2010*test2
cd ../*bar

Eles são muito mais flexíveis e você não precisa planejar um script para cada situação diferente, uma vez que você está acostumado com eles, você os usará para todos os tipos de diretórios. Exemplos:

cd /e*/n*k will take you to /etc/network
cd /h* to /home

Eles podem ser usados em qualquer lugar ( ls , claro, para que você possa filtrar o que ver)

curingas do bash

    
por 04.08.2010 / 21:34
1
  1. Tente usar o comando hist para exibir o histórico de todos os comandos que você executou.
  2. Crie um script de shell com os comandos cd para cada diretório para o qual você costuma gravar.
por 04.08.2010 / 18:02
1
  • Conclusão da guia
  • Acesso ao histórico (especialmente naqueles shells que fornecem acesso por chave de seta)
  • No bash, considere usar popd e pushd
por 04.08.2010 / 18:16
1

Em uma pergunta como essa, eu diria para mencionar qual shell você usa. Cada shell tem ferramentas ligeiramente diferentes. Minhas respostas aqui se aplicam ao bash, que é o que você está provavelmente usando.

Além disso, para 'Frank Computer', você não pode usar um script de shell, ele cria seu próprio processo, o cd está nesse processo, sai e seu shell atual ainda está onde você está.

Eu acho que 'alias' é seu amigo. adicione algo como:

alias CD_test2-'cd /absolute/path/to/foo/20100801-rev124-test2'

para o seu .bashrc (ou .kshrc ou zshrc)

bash também tem o env var CDPATH , que pode ser usado como uma âncora para o cd'ing em caminhos relativos. Por exemplo:

CDPATH=/usr:.; cd bin

veria que há um /usr/bin e colocará você lá. Se não, coloque-o em ./bin . Isso provavelmente não ajudará, porque você provavelmente precisará digitar o subdiretório inteiro para que isso funcione:

CDPATH=/root/to/all/testing/dirs:.; cd 20100801-rev124-test2

O apelido Methinks é o melhor que você pode obter, pelo menos no bash. Pode haver ferramentas melhores no zsh.

    
por 04.08.2010 / 18:27
1

Midnight Commander ( mc ) é um gerenciador de arquivos baseado em terminal (modo de caractere). Ele tem um recurso de lista ativa que permite adicionar diretórios a uma lista daqueles que você usa com freqüência e selecioná-los da lista para o cd. Ele também possui um recurso de CD rápido que permite digitar um diretório completo para o CD, mesmo enquanto você digita um comando na linha de comando mc . Você também pode fazer a navegação habitual do gerenciador de arquivos.

Outra proteção de pressionamento de tecla é usar a variável CDPATH do shell (ela está disponível na maioria dos shells).

CDPATH=/some/top/dir:/another/one
cd foo

Se "foo" existir no diretório atual, cd irá movê-lo para lá. Caso contrário, ele pesquisará os diretórios em CDPATH e moverá você para o primeiro "foo" encontrado lá.

    
por 04.08.2010 / 19:19
0

quickcd é um bom script para alterar o diretório rapidamente economizando bastante digitação.

    
por 17.02.2013 / 22:41
0

Dê uma olhada no fastcd link Parece ser mais útil que aliases

    
por 05.11.2014 / 22:09
0

anc foi projetado exatamente para esse caso de uso.

link

Aqui está um trecho do README.md:

Exemplos:     # torna o diretório atual a âncora padrão:     $ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

Divulgação completa: sou o autor do anc

    
por 06.06.2016 / 09:45
0

Descobri que cd - reduz bastante a digitação, especialmente quando muito tempo é gasto navegando entre dois diretórios. cd - muda para o diretório anterior.

    
por 06.06.2016 / 09:55