Получение ошибки "xargs unterminated quote" при попытке распечатать количество строк в терминале
Я хочу получить количество строк в моем приложении. Я использую этот код:
find . "(" -name "*.m" -or -name "*.h" ")" -print | xargs wc -l
Он отлично работает в других приложениях, но для одного из моих приложений он дает ошибку "xargs unterminated quote".
Ответы
Ответ 1
Имеет ли в вашем имени один из ваших имен? Попробуйте что-то вроде этого:
find . "(" -name "*.m" -or -name "*.h" ")" -print0 | xargs -0 wc -l
Аргумент -print0
сообщает find
использовать символ NULL для завершения каждого имени, которое оно распечатывает. Аргумент -0
сообщает xargs
, что его токены ввода заканчиваются NULL. Это позволяет избежать проблем с символами, которые в противном случае будут рассматриваться как специальные, например, кавычки.
Ответ 2
Это может произойти, потому что у вас есть одна цитата в имени файла где-то...
ie → '
Чтобы найти файл проблемы, запустите в терминале следующее:
\find . | grep \'
и это также может произойти, если у вас есть псевдоним для установки xargs, вызывающий проблему. Чтобы проверить, если это так, просто запустите xargs с "\" перед ним, например.
\find . | \xargs ....
"\" просто означает "запустить команду без каких-либо псевдонимов"