/numberwang

Easily copy file names from shell command output

Primary LanguageGoOtherNOASSERTION

What

Numbers any valid file path in stdin (one per line). Copies chosen file names to the clipboard.

Why

For example you want to undo some changes you made to a git project:

$ git st
## master
 M README.md
 M somwhere/in/a/deeply/nested/directory/program.go

You can't be bothered reaching for the mouse to copy this file name so you pipe the output to numberwang:

$ git st | nw
## master
{1}  M {README.md}
{2}  M {somwhere/in/a/deeply/nested/directory/program.go}

to clipboard: 

You now got prompted to choose file names to copy to the clipboard. You choose "2" (you can select multiple files by typing multiple numbers separated by a space).

$ git st | nw
## master
{1}  M {README.md}
{2}  M {somwhere/in/a/deeply/nested/directory/program.go}

to clipboard: 2
nw: wrote "somwhere/in/a/deeply/nested/directory/program.go " to clipboard

Now you can simply paste the file name(s) you selected when performing a checkout:

$ git checkout somwhere/in/a/deeply/nested/directory/program.go 

Usage with git

I recommend a git alias that preserves colored output, for example:

st = -c color.status=always status -sb

Or if you want to go all-in and always call numberwang:

snw = ! git -c color.status=always status -sb | nw

Other commands might have similar options to preserve color.