Удалить его можно, избежав символа-нарушителя с обратной косой чертой. Вы можете ввести
rm \`which
, и это сделает трюк.
-121--119491-Если у вас есть «смешные символы» в имени файла и вы не можете ввести их, вы можете сделать:
rm -i *which*
где , который
является частью, которая состоит из обычных символов.
Перед удалением соответствующих имен файлов -i
(для интерактивного интерфейса) убедитесь, что вам будет предложено удалить соответствующие имена файлов, чтобы вы могли пропустить все совпадающие файлы, которые вы не хотите удалять.
Существует множество способов:
Укажите имя файла
rm "which '
Избегайте оскорбительного символа
rm\', который
Используйте команду shell globbing (с подсказкой, если есть другие соответствующие файлы)
rm -i?
rm -i * который
Вместо этого используйте find
(обратите внимание, что, как указано ниже в @ Braiam, будут найдены все файлы, соответствующие текущему каталогу, которые могут быть удалены больше, чем ожидалось)
find. -name "which '-exec rm {}\;
найти. -name "which '-delete
Как вы, наверное, догадались, не каждая ошибка может произойти с каждым системным вызовом.
Если вы начнете с /usr/include/errno.h
, вы, вероятно, сможете отследить константы манифеста, такие как «EPERM» или «EINTR». Я нашел их в:
/usr/include/asm-generic/errno-base.h
и
/usr/include/asm-generic/errno.h
но мне кажется, что могут быть некоторые вариации в зависимости от дистрибутива или версии libc.
Linux, кажется, действительно хорош в том, чтобы иметь ошибки, которые любой заданный системный вызов может проявить на странице руководства для этого системного вызова: man 2 read
или man 2 socket
например . Это традиционно не относилось к различным версиям Unix, которые, вероятно, все еще существуют. У меня нет доступа к системе * BSD, чтобы проверить это для современных Unix.