É possível definir um comando no bash?

25

Por exemplo, posso definir:

gb = cd /media/Dan/evolution

... para que toda vez que executar gb no bash, eu possa cd para esse diretório específico?

Encontrei algo on-line: o comando alias . Mas parece que não pode fazer o trabalho acima.

É possível fazer isso? Como?

    
por Zen 15.07.2014 / 16:55

4 respostas

50

apenas digite:

alias gb='cd /media/Dan/evolution'

Para tornar essa configuração permanente (para que ela permaneça depois de reiniciar ou abrir outro console), adicione esta linha ao arquivo ~ / .bashrc (supondo que você use o bash como seu shell padrão)

    
por 15.07.2014 / 17:01
38

Alternativa ao aliasing

gb() { cd /media/Dan/evolution; }

Isto define a função shell gb, que não recebe argumentos, e executa cd / media / Dan / evolution. Como com outras sugestões, isso pode ser adicionado a ~ / .bashrc

    
por 15.07.2014 / 19:30
11

É possível e alias é o comando que você está procurando. Por exemplo, alias ll="ls -l" no bash permitirá que você digite ll em vez de ls -l . Por favor, note que não há espaços usados ao definir um apelido. man alias pode ser útil também.

    
por 15.07.2014 / 17:00
-3

Como alternativa, é possível escrever um programa em C que chame o comando desejado e salve-o em / usr / bin.

#include <stdio.h>
#include <string.h>

int main () {
    char command[50]; //notice you can change this to fit your needs
    int return_val;

    strcpy( command, "echo \"cd /media/Dan/evolution\" | bash -i" );
    return_val = system(command); 

   //this is equivalent to entering the command in a new bash, 
   //which will return and exit

    return return_val;
}

Para compilar, vá para o diretório onde a fonte foi salva (no bash) e execute (você pode precisar do sudo):

 gcc ./gb.c -o /usr/bin/gb

Depois de mais pesquisas aqui , percebi que estava jogando seu comando em system() não vai funcionar para bash construído em comandos. É por isso que você precisa criar uma instância de um bash interativo e ecoar seus comandos para ele. É extremamente complicado e provavelmente inútil, a menos que você queira, digamos, encurtar uma chamada para um script de shell ( some_script em vez de sh ~/radgeRayden/Scripts/some_script ).

Referência para a função system ()

    
por 16.07.2014 / 22:04