LINUX.ORG.RU

Оба детекторы вендузных школьников.

anonymous
()

Особенно астериск порадовал.

anonymous
()

$ rm /var/mail/mike *

Бугага!

Deleted
()
Ответ на: комментарий от znenyegvkby

Спасибо. Что такое Девнул я знал.

Мне было интересно. С технической стороны, чем это в итоге будет отличаться от удаления. Оказывается ничем. Всё.

DeepDlueIV
() автор топика
Ответ на: комментарий от DeepDlueIV

Первой командой опустошается содержимое /var/mail/mike, при этом довольно идиотским способом. Удобнее делать

echo -n > /var/mail/mike
В случае какого-нибудь alias cp='cp -a' в результате можно получить копию устройства null в /var/mail/mike, что явно не то, что планировалось. Если уж так хочется использовать /dev/null, то лучше делать
cat /dev/null > /var/mail/mike
Вторая команда не опустошает, а просто удаляет файл /var/mail/mike и заодно все файлы в текущем каталоге (что явно не то, что хотелось сделать).

omnomnomnus
()
Ответ на: комментарий от anonymous

Чёрт подери, я неоднократно думал: «жаль так нельзя». А сейчас проверил - можно.

omnomnomnus
()
Ответ на: комментарий от omnomnomnus

Вот то, чего я и ожидал. Спасибо.

Интересно тут :)

А почему

cat /dev/null > /var/mail/mike

...удалить файлы в текущем каталоге? не понял

DeepDlueIV
() автор топика
Ответ на: комментарий от DeepDlueIV

Там была речь про вторую команду из ОП. Конкретно вот про эту:

$ rm /var/mail/mike *
Kiborg ★★★
()
Ответ на: комментарий от DeepDlueIV

rm /var/mail/mike *

/var/mail/mike и * написаны через пробел.

То есть, это 2 разных задания на удаление:

удалить /var/mail/mike

удалить * (то есть, все файлы в текущем каталоге, где находится «курсор»)

Более фееричный вариант - сделать «rm -Rf /»

slamd64 ★★★★★
()
Последнее исправление: slamd64 (всего исправлений: 1)
Ответ на: комментарий от ionanahin

Почему? ":" это аналог «true», команда. Без явной команды, как написал anonymous, тоже работает, всегда так делаю. Зачем лишний символ?

Andrey_Utkin ★★
()
Ответ на: комментарий от Andrey_Utkin

Так, вроде, гарантированно везде заработает.

ionanahin ★★★
()

/dev/null это вообще абстракция и следствие «everything is a file».

Так вот, с точки зрения пользователя — /dev/null это просто файл. «Магия» происходит только с чтением/записью:

  • Если пытаться /dev/null читать — он будет пустым (0 байт)
  • Если пытаться в него что-то записать — то он все равно останется пустым (т.е. записанные данные будут проигнорированны).

Основываясь на этих двух тезисах, можно попробовать понять, что случается в (простых) случаях из топика:

cp /dev/null /var/mail/mike

Тут cp пытается прочитать /dev/null и поместить его содержимое в /var/mail/mike. Предсказуемо, что конечный результат — пустой файл (однако он уже не будет иметь «магии» /dev/null). Пустой файл либо будет называться /var/mail/mike/null (если /var/mail/mike — директория) либо перезатрет файл /var/mail/mike и сделает его пустым.

В данном случае «магию» /dev/null можно скопировать с помощью специальных опций cp (однако в цивилизованном мире для этого используют mknod).

rm /var/mail/mike *

В данном примере случится две вещи:

  1. Если /var/mail/mike — файл, то он будет удален (с проверкой прав доступа), если же директория — то rm выведет ошибку (/var/mail/mike is a directory).
  2. аргумент * раскроется интерпретатором командной строки в список файлов и директорий в текущей директории ($PWD). Соответственно, все файлы будут удалены, директории — нет. Так же * (обычно) не захватывает файлы и директории, имена которых начинаются с точки (например .profile)
KennyMinigun ★★★★★
()
Ответ на: комментарий от KennyMinigun

Налейте этому человеку за мой счёт!

Вот почему на этом форуме не могут ограничиться подобным подходом к ответам на форуме на простые вопросы?

DeepDlueIV
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.