Como concluir a linha de comando com arquivos e pastas

1

Como um novo usuário Linux, uma das coisas que me afastou da Linha de Comando (CL) é que, para tarefas envolvendo arquivos e pastas (ou seja, tudo!), a quantidade de digitação envolvida torna o CL ineficiente. Eu mesmo tenho uma tendência a usar nomes detalhados de arquivos. Por exemplo, se eu tenho um livro chamado "Equações Diferenciais Elementares e Problemas de Valores de Fronteira", que está em sua 9ª edição e é escrito por William Boyce e Richard DiPrima, então eu vou nomear assim:

elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf .

Então, em meu esforço para aprender a usar o CL, eu procuro maneiras de superar esse problema e descobri sobre < em> Conclusão da linha de comando com a chave Tab . A coisa com isto é que faz a conclusão da palavra mas somente para comandos, não para arquivos e pastas. Gostaria de saber se existe um recurso semelhante que funciona para arquivos?

    
por Kevin Garcia 27.08.2014 / 05:01

3 respostas

2

Eu uso bash e, em tab , a conclusão do nome do arquivo também acontece.

Mas, para o exemplo específico que você tirou de nomes extensos de arquivos, se você tiver muitos arquivos com o mesmo prefixo no diretório, muitos tab s seriam necessários para chegar ao arquivo!

Eu enfrentei um problema semelhante com uma base de código com a qual eu estava trabalhando, e a solução que criei para mim foi ter uma combinação de script alias + Perl, à qual daria apenas as primeiras letras, do < em> palavras no nome do arquivo. Por exemplo,

$ ls
elementary_differentail_equations.pdf # 1
elementary_differentail_equations_and_boundary_value_problems.pdf # 2
elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf # 3

$ opdf e d e                      # opens 1
$ opdf e d e a b v p              # opens 2
$ opdf e d e a b v p 9 b d        # opens 3

em que opdf é o alias (digamos), que procura apenas a extensão .pdf .

    
por 27.08.2014 / 06:01
2

Ao usar o Bash e sua capacidade de realizar a conclusão por meio da tecla Tab , há dois aspectos na conclusão que podem estar ficando confusos.

Quando você digitar uma letra no prompt e começar a pressionar a tecla , , você notará o comportamento que está descrevendo.

Exemplo

$ elTab

el4-rpmlint  el5-rpmlint  elbadmin     elfedit      elif    elinks    else

Isso está pesquisando $PATH do seu sistema e apresentando executáveis que correspondem aos seus critérios de pesquisa, por exemplo, el .

No entanto, se você tiver um diretório de arquivos como este abaixo, você pode usar os mesmos recursos de conclusão via Tab da mesma forma.

Arquivos de amostra:

$ ls -1
efile.pdf
elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf
elements1.pdf

Exemplo

Realizando isso:

$ ls elTab

O Bash completaria isso automaticamente com a palavra element . Nesse ponto, ele seria interrompido, já que essa é a maior cadeia de caracteres comum entre um grupo de arquivos (ou um único arquivo) dentro do diretório atual. Se você clicar em Tab duas vezes, o Bash listará os arquivos que corresponderam até este ponto:

$ ls elementTabTab elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf elements1.pdf

$ ls element

Ele o levará de volta ao mesmo local no seu prompt. Bash basicamente fez um ls element* para você naquele momento. Se você digitar uma ou duas letras para ajudar a orientar o Bash sobre qual arquivo você deseja do subconjunto que apresentou e clicar em Tab novamente, ele tentará combinar mais alguns dos seus arquivos com sua string estendida. tem no prompt:

$ ls elementaTab

Seria o suficiente para você obter o restante do seu nome de arquivo:

$ ls elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf

    
por 27.08.2014 / 06:36
0

Uma abordagem alternativa para os detalhes da sua pergunta sobre o que você realmente está tentando alcançar: menos digitação.

Você também pode descobrir que bons aliases permitem que você tenha o melhor dos dois mundos, ou seja, nomes longos de pastas. Eu gosto de nomes de pastas longas e também gosto de nomes curtos para digitar e eu alcanço isso com aliases como:

alias zab='cd ~/mycar/activerecord-boolean-converter'
alias q='cd ~/Dropbox/95_2014/work/code/ruby__rails/ruby/ruby_quiz'
alias dummy='cd ~/zipcar/zipcar-rails-core/spec/dummy'

Então eu apenas digito, por exemplo, q e então pressiono return

    
por 28.08.2014 / 01:02