Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

When I run the following command in linux:

find / -iname httpd.conf

I get:

/usr/local/apache/conf/httpd.conf

I want to use nano to edit this file, lazy to type the file path again, I used:

find / -iname httpd.conf | nano

It didn't work, nano quickly opened and exited, then I found a nano.save file in the directory that I ran this command. Using cat command on nano.save, it outputs the text: /usr/local/apache/conf/httpd.conf

This means nano thinks the previous piped output as a string that I want to write to a file, but the fact is, I would like nano to think it as the file path so that it actually opens the file for me to do the editing.

How can we make nano accept previous piped output as a file path?

share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

Nano behaves like expected, since a pipe is used to connect on program's output to another one's input.

What you want instead is to use the output of find as an argument for nano:

nano `find / -iname httpd.conf`
share|improve this answer
    
But why does nano consider the input as the file content rather than the file path? –  bobo Feb 7 '10 at 1:18
    
Because pipes connect output to inputs tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html. You want to substitute a nano parameter with a program output tldp.org/LDP/abs/html/commandsub.html. –  Benjamin Bannier Feb 7 '10 at 5:20
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.