# Command Line Favs Command Line Favs is a CLI utility for organizing your commonly used shell commands. Commands are stored as a **Command Name** (think Alias) to **Command** map within your ~/.favs file and can be organized into groups. A *~/.favs* file might look something like: ``` #comments are supported so are un-grouped commands like this one #positional-based substitution is also suported pr = "echo $0" #a group for all your ssh commands [ssh] google = "ssh -P 25001 jonmbake@74.125.225.224" work = "ssh jbake@207.171.189.228" [dev] build = "mvn -Pdev -U clean install" arq = "mvn -Parq-jbossas-remote clean verify -Pdev" [Demo] files_mod = "hg status | awk 'NR>2{print $2}' | xargs cat" ``` You get the idea. ## Getting help A CLI utility is not complete without some decent help/documentation. Running *fav* with the *--help* flag will display all available options: ``` $ fav --help ``` The typically format for running a fav command is *fav [options] command_name*, where *options* usually contains an *Action* flag: ## Fav a command A command is added as a *Fav* by using the *-a* action flag. The following command will add a command as a *Fav*: ``` $ fav -a 'echo I am a Test Command' tc ``` Or to *Fav* a command to a group; ``` $ fav -a 'echo I am a Test Command in a group' -g Demo tgc ``` **In the event that the group does not yet exist when adding a *Fav* to group, the group will be automatically added.** You can also always manually add a *Fav* by modifying your *~/.favs* file. ### String Substitution There is support for position string substitution; the syntax is '$' (see the *pr* command in the examle .favs file). ## Remove a Fav A command is removed as a *Fav* by using the *-r* action flag. The following command will remove a command as a *Fav*: ``` $ fav -r tc ``` Or remove a group command: ``` $ fav -r -g Demo files_mod ``` You can also always manually remove a *Fav* by modifying your *~/.favs* file. ## List Avaliable Favs List favs within a group: ``` fav -ls -g ssh ``` List all commands: ``` fav -ls -g ``` ## Run a Fav To run a *non-grouped* command: ``` fav tc ``` To run a *single* grouped command: ``` $ fav -g TestGroup tgc ``` Or run the *entire* group of commands: ``` $ fav -g TestGroup --no_prompt ``` When running an entire group of commands the default behavior is to prompt on each command. This can be overridden by supplying the *--no_prompt* flag.