Posso fazer meus próprios comandos?

12

Eu queria saber se eu poderia fazer meus próprios comandos como se eu fosse digitar 'música' na linha de comando, meu vlc deveria abrir e começar a tocar minha playlist. A coisa vlc é apenas um exemplo, mas a questão permanece.

Posso fazer meus próprios comandos? Se sim, como?

    
por harisibrahimkv 04.05.2012 / 11:33

3 respostas

18

Sim - crie um arquivo chamado música e coloque o seguinte dentro dele:

#!/bin/bash
echo "Hello world"

Em seguida, digite chmod +x music - isso torna o arquivo executável. Agora você pode digitar ./music para executar este script.

É uma boa idéia digitar echo $PATH e copiar o script em um desses diretórios. Sugiro criar $HOME/bin e adicioná-lo ao PATH por meio de ~/.bash_profile ou ~/.profile . Isso pode ser feito adicionando (a um desses arquivos): export PATH="$HOME/bin:$PATH" . Você então precisará executar source .bash_profile (supondo que você colocou isso nesse arquivo) para recarregá-lo.

Outra alternativa seria adicionar o comando que você deseja executar como um alias bash. Você pode fazer isso adicionando o seguinte a um arquivo chamado .bash_aliases em seu diretório pessoal:

alias music='vlc --some-option --foo'

Execute source ~/.bash_aliases ou faça o logout e faça o login e isso deve funcionar: -)

    
por Nick 04.05.2012 / 11:48
3

A melhor maneira de fazer isso é modificar (ou criar) um arquivo chamado .bash_aliases em sua pasta pessoal.

A sintaxe é bastante simples:

alias install='sudo apt-get -y install'

Com este comando, se você digitar install em um terminal, ele será interpretado como

sudo apt-get -y install

No entanto, esses comandos não funcionarão em lugar algum fora de um terminal.

    
por Basscal 04.05.2012 / 11:47
1

Qualquer arquivo executável em um diretório em seu caminho pode ser um "comando". Pode ser um script como sugerido em outras respostas, mas também pode ser um programa compilado em qualquer idioma suportado que você conheça.

Aliases também funcionarão, mas são limitados porque são "one-liners", de modo que fazer qualquer coisa intrincada com eles rapidamente gera código que é muito difícil de ler. Além disso, como eles são executados no mesmo escopo de variável do shell em que você os digita, eles podem ter efeitos colaterais inesperados, como deixá-lo em outro diretório ou deixar variáveis definidas que são necessárias apenas pela tarefa executada pelo alias. (Claro, às vezes você pode querer usar um pseudônimo precisamente porque ele tem efeitos colaterais desejáveis.)

Se você colocar seus novos comandos em um diretório em seu caminho, eles poderão ser encontrados pelo shell e executados. O lugar mais comum para colocá-los é em $ HOME / bin. Se esse diretório existir, ele será automaticamente adicionado ao seu caminho.

Duas coisas que você deve ter em mente ao configurar isso são: 1) Geralmente, é melhor usar nomes exclusivos para seus comandos que não correspondem a nenhum que já esteja definido em seu sistema. Há muito debate sobre isso, mas o ponto principal é que comandos familiares não devem ter resultados inesperados se alguém estiver usando seu sistema e que se acostumar a um comando comum fazendo algo especial pode causar problemas quando você trabalha em outro sistema. onde não está definido dessa forma.

2) Você pode adicionar $ HOME / bin no início ou no final do seu caminho (ou em qualquer outro lugar, mas isso geralmente não é feito).

Adicioná-lo à frente do seu caminho é a escolha mais conveniente, porque a sua versão de um comando será sempre aquela que executa e será encontrada mais rapidamente. Também é uma vulnerabilidade de segurança porque qualquer pessoa que possa obter permissão de gravação para seu $ HOME / bin (muito mais fácil do que obter acesso root) pode substituir comandos comuns com código potencialmente mal-intencionado com muita facilidade. Além disso, se você precisar pedir ajuda a alguém que não conhece seu sistema, é provável que ele seja prejudicado pelo comportamento especial de seus comandos personalizados, a menos que você gaste muito esforço extra explicando tudo além de apenas fazendo sua pergunta.

Adicioná-lo ao final da sua declaração de caminho é um pouco mais seguro porque qualquer comando com o mesmo nome do comando que já está no seu caminho será encontrado primeiro e será executado - e qualquer outra coisa que dependa desse comando funcionará como esperado ainda funcionará.

Para evitar tudo isso (às custas de um pouco de digitação extra), você também pode colocar seu comando em um diretório que não está no seu caminho, então ele quase nunca será executado de forma não intencional, porque você terá que digitar nome do caminho para executá-lo.

Como a maioria das coisas no Linux, há muitas maneiras de criar e usar novos comandos e cada um tem suas próprias vantagens e limitações.

    
por Joe 10.05.2012 / 07:13