Alias ou Interceptar o comando bash complexo com args

3

Como você cria um alias de bash para um comando com flags? Por exemplo, se eu executar ls -l , quero que seja alias para ls -a .

Isso não funciona: alias "ls -l"="ls -a"

Outro exemplo: se eu digitar reboot now , quero que simplesmente execute reboot .

As funções do bash seriam úteis aqui?

EDIT: Desculpe pelo bobo ls -l exemplo. Isso é o que eu realmente quero: se você executou reboot now , eu quero que ele execute reboot . É por isso.

    
por Kevin Boos 11.04.2014 / 21:48

3 respostas

6

Another example: If I type reboot now, I want that to simply run reboot.

Crie uma função:

reboot() {
  command reboot
}

Agora, invocar o comando reboot invocaria a função reboot , que ignoraria todos os parâmetros passados para ela.

Isto é:

reboot

e

reboot now

executaria o comando reboot (sem nenhum argumento).

    
por 12.04.2014 / 05:12
4

Você deve apenas alias ls :

alias ls='ls -a'

depois disso, se você fizer ls -l , isso resultará em ls -la

    
por 11.04.2014 / 22:12
3

This is what I really want: if you executed reboot now, I want it to actually execute reboot.

Descubra o caminho absoluto de reboot (por exemplo, via whereis reboot ). Certifique-se de que /usr/local/bin esteja em $ PATH antes disso (provavelmente já está). 1 Agora crie um arquivo /usr/local/sbin/reboot com esta aparência:

#!/bin/sh

reboot

Isso deve ser de propriedade de root e chmod 755 /usr/local/bin/reboot . De agora em diante, por padrão

reboot whatever, blah-blah 

só invocará reboot sem argumentos.

1. Se não, veja este Q & A .

    
por 12.04.2014 / 21:29

Tags