Eu tenho um script de shell que cria uma função (em um arquivo bashscript que é originado por .bashrc
) para cada arquivo Markdown para abri-lo no editor.
Exemplo:
ls /home/nikhil/Notes/Studies
Physics.md
Chemistry.md
Studies.md
index.md
ls /home/nikhil/Notes/Sports
Football.md
Cricket.md
index.md
Como você pode ver, algumas pastas (como Estudos) contêm um arquivo com o mesmo nome (Studies.md) e index.md, enquanto outras (como Sports) contêm index.md, mas não Sports.md
Agora, meu bashscript cria as seguintes funções
oPhysics(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Physics.md }
oChemistry(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Chemistry.md }
oStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Studies.md }
oiStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/index.md }
oFootball(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Football.md}
oCricket(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Cricket.md}
oiSports(){ ${Editor:-vim} /home/nikhil/Notes/Sports/index.md}
Observe que: oStudies
e oiStudies
existem, enquanto apenas oiSports
existe.
Inscrição
Agora, como usuário, gostaria de digitar oStudies
or oSports
(isso falharia) e not oiSports
, e ele deve ser executado automaticamente oiSports
quando oSports
a função não existir. Isso ocorre porque, na maioria das vezes, o usuário está interessado em abrir os arquivos normais de markdown, e somente quando eles não existem, o usuário gostaria de abrir os arquivos index.md
. O usuário não lembra para qual pasta existe apenas index.md (por exemplo, pasta Sports).
Como posso fazer isso? O padrão que procuro é executar uma função oiBlahBlah
caso oBlahBlah
não exista, dado que oBlahBlah
é invocada pelo usuário.
Respostas a sugestões
Fazer alias não funcionará, pois não quero oStudies
executaroiStudies
Uma resposta para um problema diferente. Se o usuário quiser editar o arquivo de remarcação principal e só quiser editar o arquivo de índice se ele não existir, por que não escrever a função para fazer isso? Depois é só ter a
oSports
função. Refatoração para ter o código comum em uma função.As circunstâncias não são óbvias, mas uma solução simples pode ser:
Primeiro defina todas as funções assim:
oStudies() { oiStudies; }
etc., em seguida, deixe seu script substituir essas funções quando necessário.