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
.bashrc
Restart bash
to see the effect.
ls
, cp
, mv
, rm
, mkdir
cat
, less
, head
, tail
cd
, pwd
, directory operationswhoami
, date
, df
, free
chmod
, chown
zip
, tar
basicsawk
, sed
, grep
with optionsdiff
, comm
, cmp
gzip
, advanced tar
rsync
, nc
, ss
, lsof
lscpu
, lsusb
, dmesg
screen
, tmux
, jobs
awk
, sed
, perl
<()
, >()
, named pipesparallel
, optimized xargs
jq
, xmllint
nmap
, tcpdump
, iptables
docker
, kubernetes
basicsContributions are welcome! Feel free to:
This project is open source. Feel free to use, modify, and distribute.
source ~/.bashrc
grep -A 5 "BEGIN CLUE" ~/.bashrc
echo $CLUE_COUNTER
rm ~/.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.