Поиск по сайту:
Стену непонимания следует разбирать по кирпичу (Авессалом Подводный).

Что такое /Dev/Null

25.05.2023
Что такое /Dev/Null

/dev/null — одно из наиболее часто используемых специальных виртуальных устройств в Linux. В этой статье мы обсудим это и продемонстрируем различные способы его использования.

 

Что такое /Dev/Null в Linux

Linux рассматривает все как файл, будь то драйвер или устройство. Каталог /dev используется для хранения всех физических и виртуальных устройств. Если вы работали с разбиением диска, вы, возможно, видели, как используется каталог /dev. Например: /dev/sda, /dev/sdb1 и т. д.

Каждое из специальных виртуальных устройств обладает уникальными свойствами. Например, чтение из /dev/zero возвращает символы ASCII NUL. Некоторые из популярных виртуальных устройств включают в себя:

  • /dev/null
  • /dev/zero
  • /dev/random
  • /dev/urandom

 

/dev/null — это нулевое устройство, которое отбрасывает любые записанные на него данные. Однако он сообщает, что операция записи прошла успешно. В терминологии UNIX это нулевое устройство также называется битовым ведром или черной дырой.

 

Использование /Dev/Null в Linux

Свойства /Dev/Null

При попытке чтения из /dev/null возвращается символ EOF:

$ cat /dev/null

 

root@andreyex:~# |

 

Несмотря на свои уникальные особенности, /dev/null является допустимым файлом. Мы можем проверить это с помощью следующей команды:

$ stat /dev/null

 

root@andreyex:-# stat /dev/nu11
File: /dev/nul1
Size: 0
Device: 5h/5d Inode: 5
glocks:
Links:
Access: ( (0666/crw-rw-rw-) uid: (65534/
Access: 2023-04-21 01:26:47.820896809 +0000
I0 Block: 4096 character special file nobody)
Device type: 1, 3
Gid: (65534/ nogroup)
Modify: 2 :2023-04-21 01:26:47.820896809 +0000
Change: 2 2023-04-21 01:26:47.820896809 +0000
Birth:
root@andreyex:~#

 

Основное использование

Все, что записывается в /dev/null, исчезает навсегда. Следующий пример демонстрирует это свойство:

$ echo "hello world" > /dev/null
$ cat /dev/null

 

root@andreyex:~# echo "hello world" > /dev/null 
root@andreyex:~# cat /dev/nu11 
root@andreyex:~# |

 

Читать  Чтение CSV-файла в Bash

Здесь мы перенаправляем STDOUT команды echo на /dev/null С помощью команды cat мы читаем содержимое файла /dev/null.

Поскольку /dev/null не хранит никаких данных, в выводе команды cat ничего нет.

 

Перенаправление выходных данных команды в /Dev/Null

Нужно запустить команду, не имея дело с ее выводом? Мы можем перенаправить данные в /dev/null для безопасного удаления. Для реализации этого метода требуется предварительное знание файловых дескрипторов: STDIN, STDOUT и STDERR.

Пример 1:

Проверьте первый пример:

$ echo "hello world" > /dev/null

 

root@ubuntu2204-1xc:~# echo "hello world" > /dev/nul1 
root@ubuntu2204-1xc:~# |

 

Здесь мы перенаправляем STDOUT команды echo на /dev/null. Вот почему он не будет выводить ничего на экран консоли.

 

Пример 2.

Посмотрите следующий пример:

$ asdfghjkl > /dev/null

 

root@andreyex:~# asdfghjk1 > /dev/nu11 
asdfghjk1: command not found 
root@andreyex:~# |

 

Здесь команды asdfghjkl не существует. Итак, Bash выдает ошибку. Однако сообщение об ошибке не было сброшено в /dev/null. Это потому, что сообщение об ошибке хранится в STDERR. Итак, нам также нужно указать перенаправление STDERR (2). Вот обновленная команда:

$ asdfghjkl 2> /dev/null

 

root@andreyex:~# asdfghjk1 2> /dev/nu11
root@andreyex:~# |

 

Пример 3:

Что, если мы хотим перенаправить и STDOUT, и STDERR на /dev/null? Структура команды будет выглядеть так:

$ <command> > /dev/null 2> /dev/null

 

root@andreyex:~# cat lorem-ipsum.txt > /dev/nu11 
2> /dev/nu11
root@andreyex:~# |

 

Хотя эта структура полностью действительна, она многословна и избыточна. Есть способ резко сократить структуру: сначала перенаправить STDERR на STDOUT, а затем перенаправить STDOUT на /dev/null.

Читать  Как использовать rsync с –ignore-existing

Проверьте обновленную команду:

$ <command> > /dev/null 2>&1

 

root@andreyex:~# cat 1orem-ipsum.txt > /dev/nu11 
2>&1
root@andreyex:~# |

 

Здесь STDOUT перенаправляется на /dev/null. Затем мы перенаправляем STDERR (2) на STDOUT (1). «&1» сообщает оболочке, что пунктом назначения является файловый дескриптор, а не имя файла.

Теперь команда более эффективна для реализации.

 

Заключение

Мы узнали о /dev/null, нулевом устройстве в Linux. Мы также продемонстрировали, как это работает, на различных примерах. Эти методы широко используются в сценариях оболочки.

Удачных вычислений!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
BOE представила массивный 110-дюймовый дисплей с разрешением 16K и достаточным…

Спасибо!

Теперь редакторы в курсе.