Почему echo * | rm -f не -f работать? Насколько я понимаю, echo * должен перечислять все файлы в каталоге, а pipe должен отправлять этот список в качестве аргумента команде rm -f , которая должна удалить файлы. Что мне не хватает?
2 ответа
7
Труба отправляет данные в стандартный ввод. И не список аргументов. Это две совершенно разные концепции.
Аргументы - это то, что стоит в строке после командной строки. Stdin в основном похож на файл, который уже открыт, из которого вы можете читать.
Также обратите внимание, что делать такие вещи: echo * | xargs rm -f - плохая идея, потому что она может делать странные вещи в случае файлов с пробелами в именах или с «-» в начале.
1
Передайте вывод echo * качестве аргументов, а не ввод стандартных данных из pipe.
rm -f `echo *`
