alias para 'emacs / usr / local / nagios / etc / objects'

2

Estou tentando fazer o seguinte funcionar:

alias banana='emacs /usr/local/nagios/etc/objects/'

Então eu quero apenas digitar "banana firewall.cfg" para editar este arquivo (/usr/local/nagios/etc/objects/firewall.cfg). Se eu digitar isso, o emacs abre dois buffers, um para "/ usr / local / nagios / etc / objects" no modo de edição de diretório, e o outro apenas como um segundo arquivo em branco chamado firewall.cfg, que é esperado, e obviamente o O comando "bananafirewall.cfg" não funciona.

Eu tenho coçado a cabeça por uns bons 30 minutos. É alias mesmo o comando certo para isso? Eu acho que eu poderia ln -s todos esses arquivos para / root, mas quaisquer outras sugestões?

    
por bk201 23.10.2013 / 02:29

2 respostas

2

Aliases são bons para dar outro nome a um comando ou para passar argumentos padrão. Eles não são bons além disso, por exemplo, para modificar um argumento. Use uma função em vez disso.

Para suportar facilmente vários nomes de arquivos, primeiro mude para o diretório de destino. Use parênteses em vez de chaves para criar uma subchave para que a alteração do diretório não afete o shell pai.

banana () (
  cd /usr/local/nagios/etc/objects/ &&
  emacs "$@"
)
    
por 23.10.2013 / 18:47
2

Você pode querer usar uma função de shell como esta:

banana () { emacs /usr/local/nagios/etc/objects/"$1"; }

Funciona somente com um nome de arquivo. Apoiar mais do que um tornaria mais complicado.

    
por 23.10.2013 / 03:08

Tags