Відповіді:
Оператор> перенаправляє вихідний файл зазвичай на файл, але це може бути на пристрій. Ви також можете використовувати >> для додавання.
Якщо ви не вказали число, тоді передбачається стандартний потік виводу, але ви також можете переспрямувати помилки
> file
redirects stdout to file
1> file
redirects stdout to file
2> file
redirects stderr to file
&> file
redirects stdout and stderr to file
/dev/null
це нульовий пристрій, він бере будь-який потрібний вхід і викидає його. З його допомогою можна придушити будь-який вихід.
2>&1
старший синтаксис, тому &>
не працював би роки тому, але обидва є рівнозначними.
Коротше кажучи, він перенаправляє stderr
(fd 2) до чорної діри (відкидає вихід команди).
Деякі більш поширені випадки використання для перенаправлення:
command > /dev/null 2>&1 &
Виконати command
у фоновому режимі, відкинути stdout
таstderr
command >> /path/to/log 2>&1 &
Запустіть command
та додайте stdout та stderr до файлу журналу.
У Bash 4+ функціонує коротша (але менш читабельна) форма
command &>> /path/to/log
> /dev/null 2>&1
замість цього &> /dev/null
?
&>
є новим у Bash 4, колишній - це лише традиційний спосіб, я просто так звик (легко запам’ятати).
&> /dev/null
може не працювати в деяких оболонках, але> / dev / null 2> & 1 працюватиме у всіх оболонках, сумісних з POSIX.
fn>target
, де fn
знаходиться номер файлу (0-2 зазвичай, деякі програми визначають більше числа) і target
, як правило , ім'я файлу , але тут це ще один Номер_файл - префікс , &
який є синтаксис "Я хочу ввести номер файлу замість імені файлу".
/dev/null
трактується як чорна діра в Linux / Unix, тому ви можете вкласти що завгодно, але ви не зможете отримати це назад /dev/null
.
Крім того, 2>
означає, що ви перенаправляєте (тобто >
) stderr (тобто 2
) в чорну діру (тобто /dev/null
)
Ваша команда:
grep -i 'abc' content 2>/dev/null
Не намагайтеся закінчити інший нахил наперед, як це - 2>/dev/null/
(це не каталог).
вміст grep -i 'abc' генерує вихід, який відображається на вашій консолі, включаючи будь-які помилки.
Якщо вказати 2>/dev/null
, вилучите помилки, щоб вони не виводилися на вашу консоль.
Більш детально: 2 представляє дескриптор помилок, куди записуються помилки. За замовчуванням вони роздруковуються на консолі.
\>
в цьому випадку переспрямовує вихід на вказане місце /dev/null
/dev/null
є стандартним пристроєм Linux, куди ви надсилаєте вихід, який ви хочете проігнорувати.
> /dev/null 2>&1
і&> /dev/null