2015-05-26 6 views
1

Я искал в Интернете, но, возможно, я использовал не ключевое слово, но я не мог найти синтаксис для моих очень простых проблем ниже:Перенаправление аргумента из файла команда Linux

Как перенаправить файл как аргументы командной строки для команды Linux «touch»? Я хочу создать файл с «touch abc.txt», но имя файла должно начинаться с имени файла «file.txt», который содержит «abc.txt», а не набирается вручную.


[[email protected] ~]# touch < file.txt 
touch: missing file operand 
Try `touch --help' for more information. 
[[email protected] ~]# cat file.txt 
abc.txt 
+0

Вы можете рассмотреть «echo» abc.txt »| xargs touch'. –

+2

Пожалуйста, не экспериментируйте на вашем компьютере как пользователь 'root'; вы можете сделать так много урона случайно! Используйте привилегии 'root', когда вам нужно, и только когда вы уверены, что знаете, что делаете. –

+0

Каковы подробности реального варианта использования здесь? Подробности - если вы хотите иметь возможность передавать все возможные списки аргументов, вам нужно будет работать с NUL-разделителями. Кроме того, если вам нужно обрабатывать аргументы с пробелами, аргументы с литеральными кавычками и т. Д., Это те вещи, которые не все правильные ответы не всегда правильно обрабатываются. –

ответ

3

Попробуйте

$ touch $(< file.txt) 

расширить содержание file.txt и передать его в качестве аргумента touch

+0

Это работает в Bash. Возможно, вам придется заменить '' '' на 'cat' в (некоторые) другие оболочки. –

+0

Извините, мне действительно нужно, чтобы следующее. Какой-то трубопровод, любая помощь приветствуется. [root @ machine ~] # echo "abc.txt" | touch touch: отсутствующий файловый операнд Попробуйте 'touch --help 'для получения дополнительной информации. – user1972031

+0

'touch' не принимает свой аргумент через' stdin'. Поэтому вам нужно использовать 'xargs':' echo 'abc.txt | xargs touch ' – damienfrancois

1

В качестве альтернативы, если у вас есть несколько имен файлов, хранящихся в файле, вы можете использовать xargs, например,

xargs touch <file.txt 

(Это будет работать только для одного, но более гибкое, чем простое «эхо»).

+0

Можете предложить 'xargs -d $ '\ n' touch

+0

да ... но, возможно, немного сложный для текущего вопроса OP. Это актуально, хотя на тег 'linux'. –

+0

Дело в том, что вопросы и их ответы снова используются другими людьми - поэтому мы все-таки строим базу знаний. Если они достаточно неполны, чтобы не покрывать правильное использование, то кто-то, кто нуждается в правильности, может уйти без адекватного понимания использования и ограничений. –

Смежные вопросы