9 releases (2 stable)
| 1.1.0 | Oct 31, 2025 |
|---|---|
| 1.0.0 | Oct 29, 2025 |
| 0.1.2 | Jun 26, 2024 |
| 0.1.1 | Jan 24, 2024 |
| 0.0.4 | Dec 27, 2023 |
#223 in Filesystem
1.5MB
3K
SLoC
📦 FUGA 📦
A CLI tool to operate files or directories in 2 steps.
📦 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. - Save frequently used mark sets as presets and reload them later from the CLI or dashboard.
- 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.1.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
preset Manage mark presets
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. - Open the preset loader with
P, save the current marks withS, and delete presets from the popup withDorx. - 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).
Managing Presets
- Save the current mark list as a preset with
fuga preset save <NAME>.
$ fuga preset save photos
✅ : Preset 'photos' saved with 3 target(s).
- Load the targets from a preset back into the mark list with
fuga preset load <NAME>.
$ fuga preset load photos
✅ : Preset 'photos' loaded. Mark list now tracks 3 target(s).
- Review stored presets with
fuga preset list, inspect their contents viafuga preset show <NAME>, and remove obsolete entries withfuga preset delete <NAME>.
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!
Dependencies
~11–24MB
~306K SLoC