Você prefere scripts ou aliases de bash para atalhos? [fechadas]

8

Eu tenho um ~/bindiretório (que está no meu PATH) onde armazeno muitos pequenos scripts de 1 ou 2 linhas. Alguns deles simplesmente cdentram em um diretório e executam um comando em um arquivo, como vimalgo assim. Mas também tenho muitos apelidos no meu .bash_aliasesarquivo que servem ao mesmo propósito.

Como você decide entre escrever um pequeno script bash e escrever um alias? Importa em todo o caminho que você segue?

dan
fonte

Respostas:

5

Se eu usá-los com freqüência suficiente para garantir a sobrecarga de tê-los carregados em cada shell. Vou escrevê-los como funções.

Se eles são específicos do projeto, eu poderia escrevê-los como um conjunto de aliases e funções que podem ser originadas em um shell quando estou trabalhando nesse projeto.

Somente se eles trabalharem de maneira independente, alguma coisa será transformada em um script no meu ~ / bin. Existem alguns liners que são basicamente aliases, mas são para rodar em locais diferentes de shells (executar prompts em outros programas, por exemplo). Na maioria das vezes, eles precisam ser scripts bastante substanciais.

Caleb
fonte
1

Em geral, as funções de script de shell são mais flexíveis que os alias e você deve preferi-las. Por exemplo, em um alias, você não pode testar se o número de argumentos fornecidos ou seus tipos são os esperados. Eu concordo com Caleb que aliases se encaixam bem com liners simples, por exemploalias cp='cp -i'

sakisk
fonte
1

Para algo mais complicado, uma substituição de cadeia de caracteres de um único comando, um script é provavelmente mais apropriado. Além disso, qualquer coisa que será usada por outros scripts ou que possa ser usada por outras pessoas provavelmente será melhor como scripts. Embora a execução de programas fora do diretório bin de outra pessoa não seja uma boa idéia, é melhor do que procurar o arquivo de aliases individuais de alguém.

Os aliases são melhores para personalizar seu ambiente interativo. Por exemplo,, e='emacs -nw'e esse tipo de coisa.

Goladus
fonte
0

Eu uso a abordagem mais simples possível.

Principalmente, se o comando não possui parâmetros, geralmente uso aliases.

Se o comando tiver parâmetros, eu uso uma função.

por exemplo, making e cd'ing para um diretório:

md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }

Eu também uso uma função se o comando usar uma função instalada que possui parâmetros

por exemplo, adicionando -v ao git:

git () { [ $1 = commit ] && command git commit -v "${@:2}" || command git "$@"; }
Michael Durrant
fonte