Псевдонимы предназначены для использования ядром Linux, но не могут использоваться в исходной конфигурации дерева устройств (DTS ).
Между тем, метки могут использоваться в ваших файлах DTS для последующего расширения или изменения узла.
напр. У вас может быть собственный файл DTS, например:
#include "imx6qdl.dtsi"
&gpio2 {
[your modifications here]
}
Обратите внимание, что это относится к меткеgpio2
, а не к псевдониму.
Ср.https://elinux.org/Device_Tree_Mysteries#Label_vs_aliases_node_property
Вы уже используете правильный синтаксис. Вполне вероятно, что нет имен файлов, соответствующих шаблону (, на самом деле это было подтверждено в комментариях ). В этом случае ваша оболочка оставляет шаблон нераскрытым и пытается вызвать rm
с этим аргументом.
У вас была бы такая же проблема без использования ssh
локально:
$ rm /tmp/wont*match
rm: cannot remove '/tmp/wont*match': No such file or directory
Касательное обсуждение:
Некоторые оболочки, такие как оболочка zsh
по умолчанию, рассматривают несовпадающий шаблон подстановки как ошибку, что означает, что он даже не запустит команду, если шаблон ничему не соответствует:
$ rm /tmp/wont*match
zsh: no matches found: /tmp/wont*match
Оболочку bash
можно заставить работать таким же образом, используя опцию оболочки failglob
. В следующем примере rm
никогда не вызывается:
$ shopt -s failglob
$ rm /tmp/wont*match
bash: no match: /tmp/wont*match
Вы можете использовать это в своем вызове ssh
вот так:
ssh user@ip 'bash -O failglob -c "rm /home/files/*.csv"'
Очевидно, вы могли бы использовать rm -f
, чтобы отключить диагностическое сообщение о невозможности найти имя файла, который вы пытаетесь удалить (, если это то, о чем вы на самом деле спрашиваете ), но это также замаскируйте любой статус выхода изrm
на случай, если вы хотите убедиться, что команда действительно что-то удалила .
Вы можете отключить rm
с помощью его флага -f
, который говорит ему не беспокоиться об удалении файлов, которые он не может найти
ssh user@ip 'rm -f home/files/*.csv'