Я просто хочу сделать простую вещь. Я получил следующие файлы в каталоге:Почему не работает, как я ожидаю?
AppInterface.h baa PEMsg.h PluginInterface.h
Затем я выполняю команду:
ls | grep -v ".h" | rm -rf
К моему ужасу, baa
не удаляются. Но это:
ls | grep -v ".h"
дает baa
, как я ожидал. Поэтому я думаю, проблема связана с тем, как принимает rm
, но я не знаю почему. Пробовал это как в csh, так и в bash.
Что делает `rm` принимать ввод от этого? И почему это различие? – nakiya 2010-12-06 10:58:32
Rm принимает список файлов для удаления только из командной строки. Версия backticks `` исполняет ls и grep и заменяет вывод в командной строке для rm. xargs принимает свой вход от stdin и вызывает команду (rm -rf в этом случае) с вводом в качестве аргументов командной строки. xargs лучше, когда есть много входных данных для обработки, или сложная обработка необходима на входе, прежде чем она будет передана команде. – 2010-12-06 11:15:22