Qualquer arquivo executável em um diretório em seu caminho pode ser um "comando". Pode ser um script, conforme sugerido em outras respostas, mas também pode ser um programa compilado em qualquer idioma suportado que você conheça.
Os 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 que o shell em que você os digita, eles podem facilmente ter efeitos colaterais indesejados, como deixar você em outro diretório ou deixar variáveis definidas que são necessárias apenas pela tarefa que o alias executa. (Claro, às vezes você pode querer usar um alias 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 local mais comum para colocá-los é em $ HOME / bin. Se esse diretório existir, ele será adicionado automaticamente ao seu caminho.
Duas coisas a ter em mente ao configurar isso são: 1) Geralmente, é melhor usar nomes exclusivos para seus comandos que não correspondam aos que já estão definidos 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 o seu sistema e que se acostumar com um comando comum fazendo algo especial pode causar problemas quando você trabalha em outro sistema onde não está definido dessa maneira.
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 caminho é a opção mais conveniente, pois sua versão de um comando sempre será a que será executada e será encontrada mais rapidamente. Também é uma vulnerabilidade de segurança, porque qualquer pessoa que possa obter permissão de gravação no seu $ HOME / bin (muito mais fácil do que obter acesso root) pode substituir comandos comuns por códigos potencialmente maliciosos 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 desarmado pelo comportamento especial de seus comandos personalizados, a menos que você gaste muito esforço extra explicando tudo, além de fazendo sua pergunta.
Adicioná-lo ao final de sua instrução de caminho é um pouco mais seguro, pois qualquer comando com o mesmo nome que já está em seu caminho será encontrado primeiro e executado - e qualquer outra coisa que dependa desse comando funcionando conforme o esperado ainda funcionará .
Para evitar tudo isso (à custa 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, de modo que quase nunca será executado acidentalmente porque você precisará digitar o nome completo do caminho para executá-lo.
Como a maioria das coisas no Linux, existem muitas maneiras de criar e usar novos comandos e cada uma delas tem suas próprias vantagens e limitações.