Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Cut, copy, and paste files in the terminal (github.com/slackadays)
3 points by netr0ute on Nov 21, 2022 | hide | past | favorite | 10 comments
This is my new little project to build something I've been needing but haven't been able to find, a clipboard system for the terminal. If you ever need to copy or move some file but don't know where exactly, that's exactly what Clipboard excels at. I can't believe this hasn't been done before.



Most operating systems have existing features which offer this capability already. I typically alias these to 'xc' (copy) and 'xp' (paste) within my shell.

For Linux, 'xclip -c' (copy) and 'xclip -p' (paste) respectively.

For MacOS, 'pbcopy' (copy) and 'pbpaste' (paste), respectively.

For Android, using Termux, 'termux-clipboard-set' (copy) and 'termux-clipboard-get' (paste) respectively. There are also keyboard mnemonics: Ctrl-Alt-C will copy, Ctrl-Alt-V will paste.

I believe there's also a feature on Windows via Cygwin, though it's been a couple of decades since I've had to use it.

Each of the above can read from stdin/stdout or file redirection.

E.g.:

  cmd | xc      # copy *from* command
  xp | cmd      # paste *to* command
  xc <file      # copy *from* file
  xp >file      # past *to* file


The problem here is that all of these tools are really unintuitive to use because you can't just discover them on your own, or I wouldn't have thought to make Clipboard. You also have to use stdin/stdout/redirection which is a huge pain if you just want to specify some random file. I also can't figure out how to use xclip. If even I on Hacker News can't figure it out, new users to the terminal never will. Also, none of these tools offer cutting.


NB, no, you don't have to use stdin/stdout, but rather you have the option to use those.

What pbcopy/pbpaste, xclip, and the Termux commands offer is an alternative to pasting via mouse actions.

You can still interact with mouse-based controls. I'll typically do that, for example, when case-normalising titles using a shell utility I'd created.

Since 'xc' will overwrite the clipboard if invoked in the same pipeline, this command fails to deliver expected results:

  xp | titlecase | xc
Instead, I can paste in some ALL CAPS TITLE, say:

  echo 'ALL CAPS TITLE' | titlecase | xc   # Where 'ALL CAPS TITLE' has been pasted via mouse
Running 'xp' alone, we see the result:

  $ xp
  All Caps Title
So, again, you seem not to understand either the problem space or the available tools.


For what it's worth, I discovered them on my own.

And, no criticism at creating your own implementation, but it's very, very far from the first CLI-clipboard integration.

If it makes you feel any better, I've coded up my own solutions to several problems, only to discover existing, and better, solutions myself. Multiple times.


The other problem here is that if an average user can't easily discover those other options, then they might as well not exist. In comparison, "Clipboard" is exactly what you'd search for and is exactly what you think it is.


Searching "command line clipboard for ...":

MacOS: <https://duckduckgo.com/?t=ffab&q=command+line+clipboard+maco...>

First result, pbcopy/pbpaste: <https://osxdaily.com/2009/12/09/access-the-clipboard-from-th...>

Linux: <https://duckduckgo.com/?q=command+line+clipboard+linux&t=ffa...>

First result, several, including xclip: <https://www.baeldung.com/linux/clipboard>

Android: <https://duckduckgo.com/?q=command+line+clipboard+android&t=f...>

This does worse, though there are, again, several options listed.

If you think to substitute "Termux" for "Android", this becomes the first result:

<https://wiki.termux.com/wiki/Termux-clipboard-set>

Again: it's fine to produce tools, even redundant ones. But you'd be more credible with greater accuracy in your claims and statements.


For what it's worth, I love working with stdin/stdout/redirection.


cygwin (presumably; i use msys2) has /dev/clipboard.


> I can't believe this hasn't been done before.

Well, it has! Not that that should stop you from building your own.


You should probably put "files" in the title: "Cut, copy and paste files in the terminal."




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: