Заставить nano принять предыдущий конвейерный вывод как путь к файлу

2181
bobo

Когда я запускаю следующую команду в Linux:

find / -iname httpd.conf 

Я получил:

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

Я хочу использовать nano для редактирования этого файла, ленивый, чтобы снова ввести путь к файлу, я использовал:

find / -iname httpd.conf | nano 

Это не сработало, nano быстро открылся и вышел, затем я нашел файл nano.save в каталоге, где я выполнил эту команду. Используя команду cat на nano.save, он выводит текст: /usr/local/apache/conf/httpd.conf

Это означает, что nano думает, что предыдущий вывод по каналу представляет собой строку, которую я хочу записать в файл, но на самом деле я хотел бы, чтобы nano рассматривал его как путь к файлу, чтобы он фактически открыл файл для меня, чтобы выполнить редактирование.

Как мы можем заставить nano принимать предыдущий вывод по каналу как путь к файлу?

1

1 ответ на вопрос

4
Benjamin Bannier

Nano ведет себя как ожидалось, так как канал используется для подключения на выходе программы к входу другого.

Вместо этого вы хотите использовать выходные данные findв качестве аргумента для nano:

nano `find / -iname httpd.conf` 
Но почему nano рассматривает ввод как содержимое файла, а не путь к файлу? bobo 14 лет назад 0
Поскольку каналы соединяют вывод со входами http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html. Вы хотите заменить параметр `nano` программным выводом http://tldp.org/LDP/abs/html/commandsub.html. Benjamin Bannier 14 лет назад 0

Похожие вопросы