A powerful cross-platform CLI tool that acts as a system-wide file/folder clipboard manager. Take files or folders from anywhere, roam around your filesystem, and put them wherever you needβall from the command line.
Author: Edward Terry
Email: sir_edward@icloud.com
GitHub: @ed-terry
Portfolio: ed-terry.github.io
- Take Command - Capture files or folders for later use
- Put Command - Paste captured items into any directory
- Copy Mode - Copy files without removing originals (use
-cflag) - Move Mode - Move files (cut and paste behavior) - default
- Clear Command - Purge the clipboard and temp storage
- Status Command - View what's currently in your clipboard
- Swap Command - Exchange positions of clipboard item with another file
- Cross-Platform - Works seamlessly on Windows, macOS, and Linux
- Verbose Mode - Get detailed output with
-vflag - Overwrite Protection - Safe handling of existing files with
--overwriteflag
git clone https://github.com/ed-terry/take-put.git
cd take-put
npm install
npm run install-clinpm install -g take-puttp take /path/to/file.txttp take /path/to/file.txt --copy
# or
tp take /path/to/file.txt -ctp puttp put /destination/pathtp statustp cleartp swap /path/to/another/file.txt# Navigate to source directory
cd ~/Documents
# Take the file (move mode - default)
tp take important.docx
# Navigate to destination
cd ~/Desktop
# Put the file
tp put
# Result: important.docx is now in ~/Desktop and removed from ~/Documents# Copy a file
tp take ~/Downloads/photo.jpg --copy
# Navigate elsewhere
cd ~/Pictures/Archive
# Paste the copy
tp put
# Result: photo.jpg is now in both locations# Take a folder
tp take ~/old-project --copy
# Check what's in clipboard
tp status
# Navigate to backup location
cd ~/backups
# Put the folder
tp put
# Result: entire old-project folder is copied to ~/backups# Take a file
tp take ~/config/old-config.json
# Swap with another file
tp swap ~/config/new-config.json
# Result: files are exchanged in their locations, new-config.json is now in clipboard# Take a folder
tp take ~/large-folder --copy
# Check status with verbose output
tp status --verbose
# Later, clear when done
tp clear --verboseCapture a file or folder to the clipboard.
Options:
-c, --copy- Copy the file instead of cutting (moving)-m, --move- Move/cut the file (default behavior)-v, --verbose- Show detailed output
Default Behavior: Cuts files (moves on put)
Examples:
tp take ./myfile.txt
tp take ./folder -c
tp take ~/document.pdf --copy --verbosePaste the taken file or folder.
Options:
-o, --overwrite- Overwrite existing files without prompting-v, --verbose- Show detailed output
Default Behavior: Pastes to current directory if no destination specified
Examples:
tp put
tp put ~/Desktop
tp put ./backup --overwrite
tp put /destination --verboseClear the clipboard and remove temporary files.
Options:
-v, --verbose- Show detailed output
Examples:
tp clear
tp clear --verboseDisplay what's currently in the clipboard.
Options:
-v, --verbose- Show detailed output
Examples:
tp status
tp status --verboseExchange the clipboard item with another file.
Options:
-v, --verbose- Show detailed output
Examples:
tp swap ~/Documents/config.json
tp swap ./backup.sql --verboseGet detailed information about operations:
tp take ~/large-project --verbose
tp put /destination --verbose
tp status --verbose# This will fail if destination exists
tp put ~/Desktop
# This will overwrite silently
tp put ~/Desktop --overwriteThe tool efficiently handles files and folders of any size:
# Take a large video file
tp take ~/Videos/movie.mkv --copy
# Take an entire project directory
tp take ~/workspace/project-nameClipboard data is stored in:
- Linux/macOS:
~/.take-put/ - Windows:
C:\Users\{username}\.take-put\
The state file maintains:
- Current item path
- Operation mode (copy or move)
- Item metadata (size, type, timestamp)
The tool is fully compatible with:
- β Windows (10+)
- β macOS (10.12+)
- β Linux (All major distributions)
File operations are optimized for each platform:
- Windows: Uses copy + delete for move operations
- Unix-like systems: Uses native rename operations
- Node.js: v14.0.0 or higher
- npm: v6.0.0 or higher
Check your versions:
node --version
npm --versiongit clone https://github.com/ed-terry/take-put.git
cd take-putnpm installnpm start -- take ./test-file.txtnpm testMIT License - Feel free to use this tool for personal and commercial projects.
Contributions are welcome! Please feel free to submit a Pull Request or open an Issue for bugs and feature requests.
Solution: Make sure you've installed the CLI globally:
npm install -g .Solution: Use absolute paths or verify the file exists:
tp take "$(pwd)/myfile.txt"Solution: Ensure you have read/write permissions for the file and destination:
# Check permissions
ls -la /path/to/file
# Make sure destination is writable
ls -ld /destination/pathSolution: Take a file first before putting:
tp take ~/myfile.txt
tp put ~/destination-
Create an alias for quick access:
alias tp='take-put'
-
Use with current directory:
tp take . --copy # Copy entire current folder
-
Combine with other CLI tools:
tp take $(find . -name "*.log" | head -1) -
Check before moving:
tp status --verbose tp put /destination
-
Safe overwriting:
# Always check first tp status tp put /destination --overwrite
- Email: sir_edward@icloud.com
- GitHub: @ed-terry
- Portfolio: ed-terry.github.io
For issues, feature requests, or suggestions, please open an issue on GitHub.
Built with β€οΈ using Node.js and inspired by clipboard management workflows.
Made with:
- Commander.js - Command line interface
- Chalk - Terminal string styling
Enjoy managing your files efficiently! π