Existe algum histórico de diretório para o bash?

23

Existe algo como o histórico de pesquisa reversa do bash (Ctrl-r), mas apenas para diretórios?

Eu tenho algumas hierarquias de pastas profundas para as quais quero pular, então gostaria de usar algo como reverse-search-history, mas ele procura apenas por nomes de pastas e me fornece caminhos absolutos.

Essencialmente, ele daria resultados semelhantes ao uso de !? , mas apenas comandos correspondentes com cd na frente, você pode percorrer resultados e caminhos completos.

Até agora, a melhor solução que encontrei é bashmarks .

    
por idbrii 20.06.2011 / 18:58

7 respostas

11

Dê uma olhada no autojump :

One of the most used shell commands is “cd”. A quick survey among my friends revealed that between 10 and 20% of all commands they type are actually cd commands! Unfortunately, jumping from one part of your system to another with cd requires you to enter almost the full path, which isn’t very practical and requires a lot of keystrokes.

autojump is a faster way to navigate your filesystem. It works by maintaining a database of the directories you use the most from the command line. The jumpstat command shows you the current contents of the database. You need to work a little bit before the database becomes usable. Once your database is reasonably complete, you can “jump” to a commonly "cd"ed directory by typing:
j dirspec

    
por 20.06.2011 / 19:03
6

Existe

cd -

é o comando "cd [espaço] [hífen]", que vai para o diretório que você estava antes, essencialmente um "histórico de profundidade 1". Repetido "cd -" alterna entre dois diretórios.

Citando página man:

The following operands shall be supported: [...]

When a [hyphen] is used as the operand, this shall be equivalent to the command:

      cd "$OLDPWD" && pwd

Infelizmente, não conheço um histórico de diretório interno real.

    
por 25.10.2015 / 14:13
3

o bash tem o pushd / popd / dirs. Eu tenho isso no meu .bashrc para auto-empurrar diretórios para a pilha do bash.

#let cd also pushd directories into stack. Use popd to reverse stack
function cd ()
{
  if [ -e $1 ]; then 
    pushd $1 &> /dev/null   #dont display current stack 
  fi
}

Estabeleça esses usando popd e exiba a pilha usando dirs

    
por 24.12.2013 / 11:15
1

Apenas para entrar em contato com minha própria experiência, escrevi um script simples para resolver esse requisito há algum tempo, ele substitui o comando cd interno por uma função simples que acrescenta o novo local do diretório a um arquivo de histórico, um script python é então usado para fornecer uma interface bash que dinamicamente atualiza uma lista ordenada de diretórios conforme você digita termos de busca, um pouco como a busca de comandos reversos do bash.

Ele está disponível em git-hub para aqueles que são curiosos.

    
por 02.12.2012 / 18:41
1

Gostaria de recomendar meu ltcd para navegação rápida por meio do histórico do diretório:

link

Eleforneceosseguintesrecursosparafacilitaravida:

  • Listadediretóriosglobais,quemostradiretóriosvisitadosrecentementedetodasasguias/janelasdoterminal.
  • Listadedirlocais,queélocalparaasessãodeshellatual.
  • Asduaslistagenssuportamnavegaçãorápidausandoj/k(descer/subir),númerosepesquisadepalavras.
  • Saltogloballivre(porexemplo,"cd dir" ou "cd ar" para ir para / path / to / foo / bar / directory /).
por 02.04.2017 / 20:10
0

Bem, você pode adicionar este snippet de código ao seu ~/.bashrc , que

  1. fornece um comando cd personalizado

        function cd ()
        {
            exists=false
            for dir in "${CDHIST[@]}"; do
                [ "$dir" == "$1" ] && {
                    exists == true
                    break
                }
            done
    
            $exists || {
                len=${#CDHIST[@]}
                ${CDHIST[$len]} = "$1"
            }
    
            builtin cd "$1"
        }
    
  2. e fornece um comando de pesquisa de histórico de cd.

    function cdhist ()
    {
        #TODO: Make this magical.
    
        for dir in "${CDHIST[@]}"; do
            echo "$dir"
        done
    }
    

Claro, o comando cdhist que eu forneci é muito básico, e não o que você queria; mas é possível usar instruções de caso ou expansão de parâmetro para obter algo semelhante ao que você deseja.

Você pode até adicionar uma função "Conclusão programável", que pode ser usada para adicionar o comando cd /path/to/mydir completo com base em uma subcadeia exclusiva de /path/to/unique/mydir , embora esse método ainda exija que você digite cd unique/mydir<tab> .

    
por 20.06.2011 / 20:43
-1

Eu juntei essa ferramenta, que combina soluções anteriores para armazenar um histórico abrangente da CLI global com uma ferramenta interativa chamada percol (mapeada para C ^ R). Eu uso para recuperar comandos por onde eles foram executados ou para encontrar um diretório por um comando. Ainda está bem na primeira máquina que comecei a usá-lo, agora com uma história CLI de dois anos de idade.

A ferramenta grep funciona no caminho e no comando, mas ainda pode ser útil para você. Veja também 'dirs -v' em zsh

link

    
por 18.08.2017 / 01:04

Tags