Como Stephen afirmou nos comentários, reconhecer arquivos por extensão e associá-los a um programa para abri-los geralmente seria feito pelo ambiente de área de trabalho (KDE, gnome, etc). Por outro lado, em muitos casos, os DEs (Desktop Environments) usarão o utilitário file
(ou utilitário similar) para determinar o tipo usando o arquivo número mágico . Se esse for o caso, talvez você precise definir uma regra mais específica. Por exemplo, no meu computador - que usa o Kubuntu, eu uso o Kate para abrir arquivos ascii e utf, mas quando os arquivos terminam com .c, .h, .cpp, .hpp, .cmake, etc, eles são abertos com o emacs em vez de. Como @quixotic apontou, essa combinação de extensões é geralmente feita com xdg-open
.
Na maioria dos DEs, você pode alterar essa configuração em algum lugar no menu de configurações do sistema ou definindo-a manualmente durante um [clique com o botão direito - > abrir com] operação.
Como uma nota lateral (não propriamente no tópico, mas relacionado), há também maneiras de reconhecer alguns arquivos ascii especializados, mesmo sem extensões: como exemplo, um script de shell feito adequadamente conterá um shebang antes de qualquer linha sem observação.