Como você quebra os comandos executáveis para que eles funcionem em um alias ou função?

1

Ainda estou contornando as peculiaridades dos scripts de shell, mas sinto que estou ficando um pouco mais confortável com isso.

Eu tenho tentado criar um alias para gerar um arquivo tar que preciso criar com frequência, mas ele sempre me causa erros de tar. Apenas como teste, tentei criar um wrapper simples, mas também não funciona:

function eztar(){

    if [ -d $1 ]
    then
        export QTAR="$1.tar";
        tar –cvf ${QTAR} "$1/";

    else
        echo "Missing directory name";
    fi

}

>eztar mydir
tar: invalid option -- ''
Try 'tar --help' or 'tar --usage' for more information.

A opção -cvf neste caso está sendo comido de alguma forma?

De qualquer forma, aqui está outra.

Eu tive um problema em que o Apache ficava sem memória. Descobri que muitos shutdowns com falha fizeram com que o semáforo ficasse cheio, então, para consertar, descobri um script que gostei e tentei executá-lo no alias. (BTW existe uma maneira melhor de fazer isso?) Eu acho que preciso colocar isso em uma função, porque quando eu verificar os aliases o loop for expandiu para a lista de semáforos atuais, que não é o que eu pretendia. / p>

alias semfix='eval "for i in 'ipcs -s # grep apache # awk '{print $2}'' ; do ipcrm -s $i; done";'

Estou aprendendo que não posso simplesmente criar um alias ou uma função de wrapper de tudo no Unix!

    
por qodeninja 03.02.2012 / 19:36

2 respostas

4

Não há nada errado com sua primeira função, exceto que há um erro de digitação.
O caractere na frente do cvf não é um caractere negativo.
Você está usando um std. Teclado de teclas US 101?

Anulando isso (o menos é opcional na maioria dos switches tar) e a função funciona bem.
Ou então, você poderia consertá-lo com um bom -cvf

Além disso, não há necessidade de export
export faz com que uma variável de ambiente tenha mais persistência do que você precisa em uma função como essa.

Sugiro que você leia o Guia de scripts de script avançado
Veja let , local e export .
Veja como eles variam, quando usar um ou outro.

Sim, você deve tentar reescrever o segundo como uma função.
As citações e tubulações menos aninhadas, enquanto aprendem, facilitarão as funções de escrita e os aliases.

Os liners vêm depois:)

    
por 03.02.2012 / 20:02
2

Tente usar tar sem o sinal de menos, ou seja, apenas tar cfv

É o formato original, agora fora do padrão.

    
por 07.11.2014 / 13:04