Таблица или список видов отказа системного вызова?

Удалить его можно, избежав символа-нарушителя с обратной косой чертой. Вы можете ввести

rm \`which

, и это сделает трюк.

-121--119491-

Если у вас есть «смешные символы» в имени файла и вы не можете ввести их, вы можете сделать:

rm -i *which*

где , который является частью, которая состоит из обычных символов.

Перед удалением соответствующих имен файлов -i (для интерактивного интерфейса) убедитесь, что вам будет предложено удалить соответствующие имена файлов, чтобы вы могли пропустить все совпадающие файлы, которые вы не хотите удалять.

-121--119490-

Существует множество способов:

  1. Укажите имя файла

     rm "which '
    
  2. Избегайте оскорбительного символа

     rm\', который
    
  3. Используйте команду shell globbing (с подсказкой, если есть другие соответствующие файлы)

     rm -i?
    rm -i * который
    
  4. Вместо этого используйте find (обратите внимание, что, как указано ниже в @ Braiam, будут найдены все файлы, соответствующие текущему каталогу, которые могут быть удалены больше, чем ожидалось)

     find. -name "which '-exec rm {}\;
    найти. -name "which '-delete
    
1
10.09.2014, 22:00
1 ответ

Как вы, наверное, догадались, не каждая ошибка может произойти с каждым системным вызовом.

Если вы начнете с /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.

0
28.01.2020, 01:53

Теги

Похожие вопросы