bash, automatické doplňování, shell v c++
Zdravím, mám tu v C++ rozepsaný shell a potřebuju nějak využít systémového doplňování, abych to nemusel psát celý sám. Autodoplňování zajišťuje built-in complete a bash si ho interně nejspíš nějak volá a já potřebuju vědět jak. Jak lze přidat vlastní funkce pro vlastní doplnění vím, ale to s tím nijak nesouvisí.
Vyhledávání shody nejdříve probíhá v hledání konkrétních specifikací v /etc/bash_completion.d/, když tam to shodu nenajde, tak pokud slovo začíná $, tak hledá proměnné, pokud shodu nenajde a slovo začíná ~, tak hledá uživatele, pokud shodu nenajde a slovo začíná @, tak hledá hostname, pokud shodu nenajde, tak hledá podle jména všech funkcí v linuxu včetně aliasů a pokud ani tam shodu nenajde, tak hledá jméno souboru v akt. adresáři. Viz man bash.
Tohle musím celý implementovat sám nebo můžu využít nějak ten complete? A když už ho execem zavolám, je nějak možný nalezený alternativy dostat zpět do kódu?
Díky
Nič podobné som neimplementoval, takže len zhrniem, čo som vygooglil. Bash používa na dopĺňanie knižnicu readline (zdrojáky .tar.gz). Našiel som aj nejaký príklad použitia knižnice readline. Možno ti to pomôže, alebo možno som to zle pochopil a som lenivý študovať to podrobnejšie.
Tam se to věnuje převážně tomu, jak číst konzoli po znacích, to už mám vyřešené. Nicméně knihovně readline se budu muset věnovat asi víc, čtu o ní víc a víc, že jí bash používá. Snad v těch zdrojácích najdu něco užitečného. Už jsem se hrabal ve zdrojácích bashe a celkem rychle jsem to vzdal.