O código simples aqui está funcionando conforme o esperado na minha máquina se iniciado com bash
:
function ⏰(){
date
}
⏰
Poderia haver um problema para outras pessoas usando isso, ou é universal?
Eu estou querendo saber porque eu nunca vi nada parecido com isso em outro código-fonte por enquanto.
Editar : Existem possibilidades ilimitadas, ele pode ser usado para distinguir rapidamente uma função de função com o uso de um emoji, por exemplo.
Um ? para algo que pode modificar ou remover arquivos, um ? se for um trabalho em andamento, ? para um menu interativo...
Acho que deveríamos criar um padrão para tudo isso, mas parece ser uma ideia interessante.
Talvez uma linha aleatória de ~5 caracteres possa nos ajudar muito a entender o que o código está fazendo. (É claro que precisamos aprender a lê-los.)
Mais edit: vou tentar. Por enquanto, se eu dobrar todas as minhas funções no meu editor (ou cat myscript.sh|grep function
), elas ficarão assim. (Meu unicode parece muito melhor no geany
meu terminal em comparação com aqui.)
function ⬚_1(){
function ⬚⬚_2(){
function ⬚⬚⬚_?_D(){
function ⬚⬚⬚⬚_?_X(){
function ⬚⬚⬚⬚⬚_?_Y(){
function ⬚⬚⬚⬚⬚⬚_❓_P(){
function ⬚⬚⬚⬚_?_Z(){
function ⬚⬚⬚⬚⬚_❓_U(){
function ⬚⬚⬚⬚⬚_❓_O(){
Eu uso um recuo estranho ⬚ para mostrar como as funções estão relacionadas entre si e um símbolo ?/❓ para distinguir claramente o seu papel. (Claro que esses não são meus nomes de funções reais, apenas coloquei uma letra aleatória no final, mas mesmo sem eles podemos ver claramente os relacionamentos.)
Uma diretriz útil para isso é a "Portable Operating System Interface" (POSIX), uma família de padrões que é implementada pela maioria dos sistemas do tipo Unix. Geralmente, é uma boa ideia limitar os scripts de shell aos recursos exigidos pelo POSIX para garantir que eles possam ser usados em diferentes shells e plataformas.
De acordo com a especificação POSIX de definições de função no "Shell Command Language" :
Seguindo o link para a definição de um "nome" :
Esse conjunto de caracteres contém apenas caracteres entre U0000 e U007E.
Portanto, caracteres como "⏰" (U23F0) não são válidos em um identificador compatível com POSIX.
Seu shell pode aceitá-los, mas isso não garante que outros também aceitem.
Para poder usar seu script em diferentes plataformas e versões de software, você deve evitar o uso de identificadores não compatíveis como este.