๐ฆ FUGA ๐ฆ

A CLI tool to operate files or directories in 2 steps.
ๆฅๆฌ่ชใฎREADMEใฏใใกใ
๐ฆ DESCRIPTION
fugais a CLI tool that performs file operations in two steps.- Developed as an alternative to commands like
mv,cp, andln. - Mark one or more files or directories using
fuga mark, and then perform copy/move/link operations together after navigating to another directory. - Launching
fugawithout arguments opens an interactive dashboard TUI so you can browse, mark, and run copy/move/link actions without leaving the terminal.
๐ฆ INSTALLATION
Pre-built Binaries
-
Pre-built binaries for the following architectures are available on releases.
- aarch64-apple-darwin (Mac - Apple Chip)
- x86_64-apple-darwin (Mac - Intel Chip)
- x86_64-unknown-linux-gnu (Linux - Intel Chip)
-
Place the binary for your architecture in a directory included in your system's PATH.
Build with Cargo
- You can install
fugaby building it using thecargocommand.
cargo install fuga
Verify Installation
- If the installation is successful, the version information can be displayed using the following command:
$ fuga -V
fuga v1.0.0
๐ฆ USAGE
Running
fugawithout a subcommand launches the dashboard TUI. Use the subcommands below when you prefer scripted CLI flows.
A CLI tool to operate files or directories in 2 steps.
Usage: fuga <COMMAND>
Commands:
mark Manage the marked targets
copy Copy the marked targets
move Move the marked targets
link Make symbolic links to the marked targets
completion Generate the completion script
version Show the version of the tool
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
Interactive Dashboard (TUI)
- Launch the dashboard by running
fugawith no arguments. - Browse the current directory, toggle hidden files with
.orCtrl+h, and filter entries with/plus fuzzy queries. - Move the cursor with arrow keys or
j/k, open directories withEnter/l, and return to the parent withhorBackspace. - Press
mor space to toggle marks,Ctrl+r/Rto clear the mark list, and?to view the in-app help overlay. - Exit with
c,v, orsto copy, move, or link the marked targets into the directory you were browsing, orqto leave without changes.
Managing Marked Targets
- Mark the files or directories you want to operate on with
fuga mark <PATH...>.
$ fuga mark target_file.txt docs
โ
: ๐ /home/user/path/to/target_file.txt marked.
โ
: ๐ /home/user/path/to/docs marked.
โน๏ธ : Mark list now tracks 2 target(s).
- To add more paths without duplicating existing entries, use
fuga mark --add <PATH...>.
$ fuga mark --add images/*.png
โ
: ๐ /home/user/path/to/images/banner.png added.
โ
: ๐ /home/user/path/to/images/logo.png added.
โน๏ธ : Mark list now tracks 4 target(s).
- To list the currently marked targets, use
fuga mark --list.
$ fuga mark --list
โน๏ธ : Marked targets:
๐ /home/user/path/to/target_file.txt
๐ /home/user/path/to/docs
๐ /home/user/path/to/images/banner.png
๐ /home/user/path/to/images/logo.png
- To clear all marked targets, use
fuga mark --reset.
$ fuga mark --reset
โ
: Marked targets cleared.
โน๏ธ : Mark list now tracks 0 target(s).
File Operations
Three file operations are possible: Copy, Move, and Symbolic Link creation.
Copy
- Navigate to the destination directory and use
fuga copyto copy all marked files or directories.
$ cd test_dir_copy
$ fuga copy
โน๏ธ : Copying ๐ /home/user/path/to/target_file.txt -> /current/dir/target_file.txt
โ
: ๐ /current/dir/target_file.txt copied.
โน๏ธ : Copying ๐ /home/user/path/to/docs -> /current/dir/docs
โ
: ๐ /current/dir/docs copied.
- You can also specify the destination directory, or a file name when exactly one target is marked.
$ fuga copy test_dir_copy
โน๏ธ : Copying ๐ /home/user/path/to/target_file.txt -> test_dir_copy/target_file.txt
โ
: ๐ test_dir_copy/target_file.txt copied.
$ fuga copy copy.txt
โน๏ธ : Copying ๐ /home/user/path/to/target_file.txt -> copy.txt
โ
: ๐ copy.txt copied.
Move
- Navigate to the destination directory and use
fuga moveto move the marked file or directory.
$ cd test_dir_move
$ fuga move
โน๏ธ : Moving ๐ /home/user/path/to/target_file.txt -> /current/dir/target_file.txt
โ
: ๐ /current/dir/target_file.txt moved.
โน๏ธ : Moving ๐ /home/user/path/to/docs -> /current/dir/docs
โ
: ๐ /current/dir/docs moved.
โน๏ธ : Mark list cleared after move.
- Similar to copying, you can specify the destination directory or file name.
$ fuga move test_dir_move
โน๏ธ : Moving ๐ /home/user/path/to/target_file.txt -> test_dir_move/target_file.txt
โ
: ๐ test_dir_move/target_file.txt moved.
$ fuga move move.txt
โน๏ธ : Moving ๐ /home/user/path/to/target_file.txt -> move.txt
โ
: ๐ move.txt moved.
Symbolic Link
- Navigate to the directory where you want to create a symbolic link and use
fuga linkto create a symbolic link to the marked file or directory.
$ cd test_dir_link
$ fuga link
โน๏ธ : Linking ๐ /home/user/path/to/target_file.txt -> /current/dir/target_file.txt
โ
: ๐ /current/dir/target_file.txt linked.
- You can also specify the destination directory or file name for the symbolic link.
$ fuga link test_dir_link
โน๏ธ : Linking ๐ /home/user/path/to/target_file.txt -> test_dir_link/target_file.txt
โ
: ๐ test_dir_link/target_file.txt linked.
$ fuga link link.txt
โน๏ธ : Linking ๐ /home/user/path/to/target_file.txt -> link.txt
โ
: ๐ link.txt linked.
Generating Completion Scripts
- Use
fuga completion <shell>to output a script for command completion. It supports the following five shells:- bash
- elvish
- fish
- powershell
- zsh
# For fish
$ fuga completion fish > ~/.config/fish/completions/fuga.fish
Contributors โจ
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!