A bash-only Linux command line utility that displays helpful Linux tips automatically as you work, helping you learn new commands and improve your terminal skills.
Install clue with a single command:
curl -s https://tareqmahmood.github.io/clue/install.sh | bash
After installation, restart your terminal or run:
source ~/.bashrc
Once installed, clue integrates with your bash prompt and automatically displays tips based on your command usage:
$ ls -la
total 24
drwxr-xr-x 3 user user 4096 Sep 7 10:30 .
drwxr-xr-x 5 user user 4096 Sep 7 10:29 ..
-rw-r--r-- 1 user user 123 Sep 7 10:30 file.txt
$ cd projects
$ pwd
/home/user/projects
$ git status
On branch main
nothing to commit, working tree clean
$ ls
[clue tip #23 - beginner]
Use `head` to see the first 10 lines of a file. Great for checking file headers or previewing content.
Example: head filename.txt
$
Tips appear automatically every 5 commands (configurable). No action needed!
# Show random tip from current mode
clue
# Show tip from specific difficulty level
clue -m beg # Beginner tips
clue -m int # Intermediate tips
clue -m adv # Advanced tips
clue -m all # Random tip from any level
# Full names also work
clue -m beginner
clue -m intermediate
clue -m advanced
# Show specific tip by number
clue -i 15 # Show tip #15 from current mode
# Help
clue -h
Edit ~/.clue/config.sh to customize settings:
#!/bin/bash
# clue configuration
# Interval between tips (number of commands)
CLUE_INTERVAL=20
# Default mode (beg, int, adv, all)
# Aliases: beginner, intermediate, advanced, all
CLUE_MODE=beg
beg (or beginner): Basic file operations, navigation, text viewingint (or intermediate): Advanced searching, text processing, system toolsadv (or advanced): Complex scripting, process management, network toolsall: Random tips from any difficulty level[clue tip #12 - beginner]
Use `ls -lh` to see human-readable file sizes instead of raw bytes. The -h flag makes output much more readable.
Example: ls -lh
[clue tip #45 - intermediate]
Use `find` with `-type f` to search only for files, or `-type d` for directories. Much more precise than basic find.
Example: find /path -type f -name "*.txt"
[clue tip #78 - advanced]
Process substitution with `<()` lets you use command output as if it were a file. Powerful for complex pipelines.
Example: diff <(sort file1) <(sort file2)
curl -s https://tareqmahmood.github.io/clue/install.sh | bash
git clone https://github.com/tareqmahmood/clue.git
cd clue
./install.sh local
After installation, clue creates the following structure:
~/.clue/
βββ clue.sh # Main script
βββ config.sh # Configuration file
βββ beginner.txt # Beginner tips
βββ intermediate.txt # Intermediate tips
βββ advanced.txt # Advanced tips
βββ uninstall.sh # Uninstall script
To completely remove clue from your system:
~/.clue/uninstall.sh
This will:
~/.clue.bashrc.bashrcRestart bash to see the effect.
ls, cp, mv, rm, mkdircat, less, head, tailcd, pwd, directory operationswhoami, date, df, freechmod, chownzip, tar basicsawk, sed, grep with optionsdiff, comm, cmpgzip, advanced tarrsync, nc, ss, lsoflscpu, lsusb, dmesgscreen, tmux, jobsawk, sed, perl<(), >(), named pipesparallel, optimized xargsjq, xmllintnmap, tcpdump, iptablesdocker, kubernetes basicsContributions are welcome! Feel free to:
This project is open source. Feel free to use, modify, and distribute.
source ~/.bashrcgrep -A 5 "BEGIN CLUE" ~/.bashrcecho $CLUE_COUNTERrm ~/.clue/config.sh
curl -s https://tareqmahmood.github.io/clue/uninstall.sh | bash
curl -s https://tareqmahmood.github.io/clue/install.sh | bash
~/.clue/clue.sh -m beginner
Happy learning! π Clue helps you discover new Linux commands naturally as you work.