executable ve otomatik tamamlama

Bazı durumlarda, executable yani çalışabilir uygulama, kendisiyle ilgili dosyaları tab-completion yani tab’e basarak tamamlamayabilir.

Örneğin sqlite uygulaması kuruluysa, otomatik olarak *.sqlite ya da *.sqlite3 ya da *.db dosylarını otomatik olarak algılamasını bekleriz.

foo.db dosyasını açmak için; sqlite [TAB] yaptığımızda hemen foo.db’nin otomatik gelmesi şeklinde olmalıdır. Nasıl ki grafik arayüzlü ortamda, *.pdf dosyasına tıklanınca otomatik olarak ilgili açıcının dosyası açması gibi düşünebilirsiniz.

Mantık olarak istediğiniz executable’ın istediğiniz dosyalarla tamamlama bazında ilişkilenmesini sağlayabilirsiniz;

complete -f -X '!*.@(sqlite?(3)|db)' sqlite3

Bundan böyle, *.sqlite, *.sqlite3 ve *.db dosyaları sqlite3 ile ilişkilendi. -X pattern alıyor. ! paternin tersini yapıyor, yani bu kurala uymayanları tamamlama gibi :)

Daha detaylı bilgi burada.