0

I am trying to pass result of which env to nano by this command nano < which env, but it seems, that I didn't understand the whole concept.

When I execute this I assume that: which env STDOUT will go to the nano STDIN. So this will equal to nano /some/path. But, apparently, I am wrong.

Also I tried which env | nano with same purpose, but output was:

Received SIGHUP or SIGTERM

Can somebody clarify this?

IgorNikolaev
  • 101
  • 2
  • 1
    which env | nano -, where - means stdin. – MetNP Nov 29 '16 at 17:35
  • @MetNP same result – IgorNikolaev Nov 29 '16 at 17:37
  • then your nano version is older (must be >=2.2 for stdin feature, you can check with nano -V ). then workarround would be: nano <(which env) – MetNP Nov 29 '16 at 17:41
  • I'm assuming that env in your system is something editable by nano (it's a 64-bit Mach executable on mine, so I don't really want to risk corrupting it), so I substituted the cd command and nano $(which cd) does what you are expecting, at least on OSX. – Thomas N Nov 29 '16 at 17:44
  • @ThomasN @MetNP Yes, also I can nanowhich env``, but also I hoped for a little bit more detailed answer with explanation how it works and why my solution does not. – IgorNikolaev Nov 29 '16 at 17:48

1 Answers1

1

nano, like most text editors, expects a file name to edit as its command-line argument, not as standard input.

$ which env | nano    # pass as standard input, does not work
$ nano "$(which env)" # pass as command-line argument, works

So it's not working because that's not how nano expects to be used.

With some editors (apparently not your version of nano), you can use:

$ which env | some-other-editor -  # note hyphen as file name

to edit standard input as text (you'd be editing a document with the string "/usr/bin/env", not the program /usr/bin/env itself).

Also, if you want to change delimited names on standard input into arguments, xargs will do that for you.

PS: which doesn't always do what you want, consider command -v instead. For details, see Why not use "which"? What to use then?

derobert
  • 109,670