Como fuzzy nomes completos de arquivos no bash como o plugin ctrlp do vim?

5

Digamos que meu pwd esteja em ~/myproject/ e eu tenha um arquivo em ~/myproject/scripts/com/example/module/run_main_script.sh

No vim com plug-in ctrlp , eu posso pressionar Ctrl + P , digite run_main_ Digite , estou editando esse script.

Eu quero rodar esse script (com alguns argumentos) no bash. E eu não quero digitar o caminho completo. Existe alguma maneira de fazer isso no bash?

    
por fqsxr 05.11.2012 / 09:33

3 respostas

1

Isso é o que normalmente é a variável PATH . No entanto, eu não adicionaria todo o seu diretório home ao seu PATH . Considere adicionar um diretório dedicado (como ~/bin ) para adicionar ao seu caminho seus executáveis.

No entanto, você pode adicionar uma função ao seu ~/.bashrc , que permite procurar e executar um script ... algo assim:

# brun stands for "blindly run"
function brun {
    # Find the desired script and store
    # store the results in an array.
    results=(
        $(find ~/ -type f -name "$1")
    )

    if [ ${#results[@]} -eq 0 ]; then   # Nothing was found
        echo "Could not find: $1"
        return 1

    elif [ ${#results[@]} -eq 1 ]; then   # Exactly one file was found
        target=${results[0]}

        echo "Found: $target"

        if [ -x  "$target" ]; then   # Check if it is executable
            # Hand over control to the target script.
            # In this case we use exec because we wanted
            # the found script anyway.
            exec "$target" ${@:2}
        else
            echo "Target is not executable!"
            return 1
        fi

    elif [ ${#results[@]} -gt 1 ]; then   # There are many!
        echo "Found multiple candidates:"
        for item in "${results[@]}"; do
            echo $item
        done
        return 1
    fi
}
    
por 05.11.2012 / 11:50
1

Eu também queria isso.
Eu escrevi este pequeno script perl para isso, sinta-se livre para verificar isso. Ctrl-P como script de linha de comando (bash).

    
por 09.07.2015 / 18:02
0

Não exatamente o que você está procurando, mas é muito bom, e embutido no bash que você já está usando é Ctrl-r link

Seria bom se fosse mais confuso, como ctrlp no vim. Existem algumas implementações de nível mais alto mencionadas aqui Existe um shell que suporta a conclusão difusa como no Sublime Text?

Você pode enganar todo o seu prompt bash para ser mais vim-like use readline e .inputrc link

    
por 22.01.2015 / 02:19