Use AI and Go to program a command-line predictor
Hand-Picked Commands
The main
program in Listing 6 then just needs to pass the path to the ~/.myhist.log
file to history()
(Listing 4), which includes the commands typed so far, including the timestamps and directories. The returned entries then get passed on to the predict()
predictor (Listing 5). The result is a prioritized list, which the promptui package (which I discovered on GitHub) shows us in a graphically appealing way on the command line.
The Run()
package function makes the command-line user interface interact with the user, lets the user select an item with the arrow keys or with vi
mappings, cleans up the menu display nicely when done, and returns the chosen command as the result
variable. If everything works without error (i.e., the user did not press Ctrl+C to escape), line 25 outputs the selected command to Stderr
, where the g
shell function from Listing 1 picks it up, writes it, and executes it.
Conclusions
My DIY command-line predictor significantly reduces typing work during development. Of course, there are no limits to your imagination in DIY projects like this: The algorithm in predict()
is still very simple and just cries out to be pimped out using AI tools like Markov chains. Let your creativity run wild.
Infos
- "Programming Snapshot – Run statistics on typed shell commands" by Mike Schilli, Linux Magazine, issue 243, February 2021, https://www.linux-magazine.com/Issues/2021/243/Making-History
- "Programming Snapshot – Go program stores directory paths" by Mike Schilli, Linux Magazine, issue 228, November 2019, https://www.linux-magazine.com/Issues/2019/228/Pathfinder/(offset)/3
- Bash preexec: https://github.com/rcaloras/bash-preexec
« Previous 1 2
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.
News
-
Red Hat Migrates RHEL from Xorg to Wayland
If you've been wondering when Xorg will finally be a thing of the past, wonder no more, as Red Hat has made it clear.
-
PipeWire 1.0 Officially Released
PipeWire was created to take the place of the oft-troubled PulseAudio and has finally reached the 1.0 status as a major update with plenty of improvements and the usual bug fixes.
-
Rocky Linux 9.3 Available for Download
The latest version of the RHEL alternative is now available and brings back cloud and container images for ppc64le along with plenty of new features and fixes.
-
Ubuntu Budgie Shifts How to Tackle Wayland
Ubuntu Budgie has yet to make the switch to Wayland but with a change in approaches, they're finally on track to making it happen.
-
TUXEDO's New Ultraportable Linux Workstation Released
The TUXEDO Pulse 14 blends portability with power, thanks to the AMD Ryzen 7 7840HS CPU.
-
AlmaLinux Will No Longer Be "Just Another RHEL Clone"
With the release of AlmaLinux 9.3, the distribution will be built entirely from upstream sources.
-
elementary OS 8 Has a Big Surprise in Store
When elementary OS 8 finally arrives, it will not only be based on Ubuntu 24.04 but it will also default to Wayland for better performance and security.
-
OpenELA Releases Enterprise Linux Source Code
With Red Hat restricting the source for RHEL, it was only a matter of time before those who depended on that source struck out on their own.
-
StripedFly Malware Hiding in Plain Sight as a Cryptocurrency Miner
A rather deceptive piece of malware has infected 1 million Windows and Linux hosts since 2017.
-
Experimental Wayland Support Planned for Linux Mint 21.3
As with most Linux distributions, the migration to Wayland is in full force. While some distributions have already made the move, Linux Mint has been a bit slower to do so.