Подавить вывод ошибок доступа linux

Содержание
  1. Как я могу подавить весь вывод команды, используя Bash?
  2. 8.4.2. Подавление вывода сообщений об ошибках
  3. Читайте также
  4. Уровни вывода сообщений ядра
  5. Отправка сообщений об ошибках
  6. 7.2 Сообщения об ошибках ICMP
  7. 7.2.1 Типы сообщений об ошибках
  8. Подавление линий заднего плана
  9. В.З. Стандартные функции вывода сообщений об ошибках
  10. Отчет об ошибках
  11. Получение и пересылка сообщений. Создание ответных сообщений
  12. Шаг 20 — Временные объекты. Неявные вызовы конструкторов и их подавление.
  13. Настройка вывода сообщений об ошибках с помощью ‹customErrors›
  14. Подавление линий заднего плана
  15. Сообщение об ошибках gbak
  16. Подавление линий заднего плана
  17. Подавление линий заднего плана
  18. Отчеты об ошибках
  19. Перенаправление ввода-вывода
  20. STDIN
  21. STDOUT
  22. STDERR
  23. Перенаправление вывода в скриптах
  24. Временное перенаправление вывода
  25. Постоянное перенаправление вывода
  26. Перенаправление ввода в скриптах
  27. Подавление вывода
  28. unixforum.org
  29. find — каким ключом отключить сообщения «Отказано в доступе»?
  30. find — каким ключом отключить сообщения «Отказано в доступе»?
  31. Re: find — каким ключом отключить сообщения «Отказано в доступе»?
  32. Re: find — каким ключом отключить сообщения «Отказано в доступе»?
  33. Re: find — каким ключом отключить сообщения «Отказано в доступе»?
  34. Re: find — каким ключом отключить сообщения «Отказано в доступе»?
  35. Re: find — каким ключом отключить сообщения «Отказано в доступе»?
  36. Re: find — каким ключом отключить сообщения «Отказано в доступе»?
  37. Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Как я могу подавить весь вывод команды, используя Bash?

У меня есть скрипт Bash, который запускает программу с параметрами. Эта программа выводит некоторый статус (делает это, делает это . ). Эта программа не может быть тихой. Как я могу предотвратить отображение сценарием чего-либо?

Я ищу что-то похожее на Windows » echo off» .

Следующее посылает стандартный вывод на нулевое устройство (битовая корзина).

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

И, если вы хотите записать сообщения, но не видите их, замените /dev/null их реальным файлом, таким как:

Для полноты, в Windows cmd.exe (где «nul» является эквивалентом «/ dev / null»), это:

Это предотвратит стандартный вывод и вывод ошибок, перенаправляя их обоих /dev/null .

: это сокращение от «ничего не делать».

$() это просто ваша команда.

Альтернативой, которая может подходить в некоторых ситуациях, является присвоение результата команды переменной:

Поскольку Bash и другие интерпретаторы командной строки POSIX не рассматривают присвоение переменных как команду, код возврата настоящей команды соблюдается.

Примечание: присвоение с ключевым словом typeset or declare рассматривается как команда, поэтому в качестве оценочного кода возврата в данном случае используется само присвоение, а не команда, выполняемая в вложенной оболочке:

Как и в посте andynormancx , используйте это (если вы работаете в среде Unix):

Или вы можете использовать это (если вы работаете в среде Windows):

Источник

8.4.2. Подавление вывода сообщений об ошибках

8.4.2. Подавление вывода сообщений об ошибках

Допустим, вы хотите найти запись пользователя louise в системном файле паролей:

$ grep louise /etc/passwd

He исключена возможность, что вы забудете, как называется этот файл. В таком случае воспользуйтесь следующей командой:

$ grep louise /etc/password

grep: /etc/password: No such file or directory

Команда grep выводит сообщение об ошибке, в которой говорится о том, что указанного файла не существует. Можно попробовать провести поиск во всех файлах каталога /etc:

$ grep louise /etc/*

Однако в результате будут выведены многочисленные сообщения об ошибках, гласящие, что к определенным файлам доступ запрещен, а некоторые элементы каталога являются подкаталогами и поиск в них не ведется.

Читайте также:  New windows version release

В подобной ситуации можно воспользоваться опцией -s, которая подавляет вывод сообщений об ошибках:

$ grep -a louise /etc/*

Если ваша версия команды grep не поддерживает данную опцию, воспользуйтесь следующей командой:

$ grep louise /etc/* 2> /dev/null

Эта команда направляет поток ошибок (2>) в системную корзину (устройство /dev/null). На жаргоне системных администраторов это устройство называется битодробилкой.

Читайте также

Уровни вывода сообщений ядра

Уровни вывода сообщений ядра Главное отличие между функциями printk() и printf() — это возможность в первой указывать уровень вывода сообщений ядра (loglevel). Ядро использует уровень вывода сообщений для принятия решения о том, выводить сообщение на консоль или нет. Ядро выводит на

Отправка сообщений об ошибках

Отправка сообщений об ошибках Если вы обнаружили ошибку, то наилучшим решением будет исправить ее, сгенерировать соответствующую заплату, оттестировать и отправить, как это будет рассказано в следующих разделах. Конечно, можно и просто сообщить об ошибке, чтобы

7.2 Сообщения об ошибках ICMP

7.2 Сообщения об ошибках ICMP Бывают ситуации, приводящие к отбрасыванию (удалению из сети) датаграммы IP. Например, точка назначения может стать недоступной из-за обрыва связи. Или может завершиться время жизни датаграммы. Маршрутизатор не сможет переслать длинную

7.2.1 Типы сообщений об ошибках

7.2.1 Типы сообщений об ошибках На рис. 7.3 показаны обобщенные сообщения, формируемые маршрутизатором и хостом назначения для отчета о возникшей проблеме. В таблице 7.1 перечислены формальные имена сообщений об ошибках ICMP. Рис. 7.3. Типы сообщений об ошибках ICMPТаблица 7.1

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий. Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

В.З. Стандартные функции вывода сообщений об ошибках

В.З. Стандартные функции вывода сообщений об ошибках Мы определили свой набор функций, используемых во всех программах книги для обработки ситуаций с возникновением ошибок. Причина, по которой мы создаем эти функции, заключается в том, что теперь мы можем писать команды в

Отчет об ошибках

Отчет об ошибках На вкладке Дополнительно в окне Свойства системы нажимаем кнопку Отчет об ошибках. Откроется одноименное окно Отчет об ошибках (рис. 4.5), в котором устанавливаем переключатель в положение Отключить отчет об ошибках и оставляем установленным флажок Но

Получение и пересылка сообщений. Создание ответных сообщений

Получение и пересылка сообщений. Создание ответных сообщений Чтобы получить новую почту, выполните команду главного меню Сервис ? Отправить/Получить ? Доставить почту либо нажмите клавишу F9. Все полученные почтовые сообщения будут помещены в папку Входящие и помечены

Шаг 20 — Временные объекты. Неявные вызовы конструкторов и их подавление.

Шаг 20 — Временные объекты. Неявные вызовы конструкторов и их подавление. Не удается углубиться в какую-либо тему. Приходится касаться по верхам, потом переключаться на что-то другое. С другой стороны, может это и правильно, часто достаточно только знать, что есть ТАКОЕ

Настройка вывода сообщений об ошибках с помощью ‹customErrors›

Настройка вывода сообщений об ошибках с помощью ‹customErrors› Элемент ‹customErrors› может использоваться для автоматического перенаправления всех ошибок в пользовательский набор файлов *.htm. Это может оказаться полезным тогда, когда вы хотите построить более понятную для

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий. Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

Сообщение об ошибках gbak

Сообщение об ошибках gbak В табл. 38.3 описаны сообщения об ошибках, которые могут возникнуть в процессе копирования и восстановления, вместе с некоторыми советами, как поступать с этими ошибками.Таблица 38.3. Сообщения об ошибках gbak при копировании и восстановлении Сообщение

Читайте также:  Smb windows не может получить доступ

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий . Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий. Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

Отчеты об ошибках

Отчеты об ошибках В операционной системе Windows Vista реализован новый механизм отчетов об ошибках. Теперь ограничить и настроить его работу можно с помощью следующих параметров, расположенных в ветви реестра HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsWindows Error Reporting. Если не сказано иное,

Источник

Перенаправление ввода-вывода

Всё в Linux — это файлы, в том числе — ввод и вывод. Операционная система идентифицирует файлы с использованием дескрипторов. Каждому процессу позволено иметь до девяти открытых дескрипторов файлов. Оболочка bash резервирует первые три дескриптора с идентификаторами 0, 1 и 2. Вот что они означают.

  • 0, STDIN — стандартный поток ввода
  • 1, STDOUT — стандартный поток вывода
  • 2, STDERR — стандартный поток ошибок

STDIN

STDIN — это стандартный поток ввода оболочки. Для терминала стандартный ввод — это клавиатура. Когда используется символ перенаправления ввода — , Linux заменяет дескриптор файла стандартного ввода на тот, который указан в команде. Система читает файл и обрабатывает данные так, будто они введены с клавиатуры.

Многие команды bash принимают ввод из STDIN , если в командной строке не указан файл, из которого надо брать данные. Например, это справедливо для команды cat .

Когда вы вводите команду cat в командной строке, не задавая параметров, она принимает ввод из STDIN . После того, как вы вводите очередную строку, cat просто выводит её на экран. И останавливается после того как получает EOF . EOF вводится нажатием сочетания клавиш Ctrl+D.

STDOUT

STDOUT — стандартный поток вывода оболочки. По умолчанию это — экран. Большинство bash-команд выводят данные в STDOUT , что приводит к их появлению в консоли. Данные можно перенаправить в файл, для этого используется символ перенаправления вывода > .

Можно осуществить перенаправление вывода в файл с добавлением в конец с помощью >> . При этом информация, хранящаяся в файле не будет удалена, а вся новая информация будет добавлена в конец этого файла.

STDERR

STDERR представляет собой стандартный поток ошибок оболочки. По умолчанию этот дескриптор указывает на то же самое, на что указывает STDOUT , именно поэтому при возникновении ошибки мы видим сообщение на экране.

Рассмотрим простой пример — нужно записать в файл data.txt содержимое директории data . Если директория не существует, сообщение об ошибке надо записать в файл error.txt . Чтобы этого добиться, нужно использовать команды перенаправления для соответствующих дескрипторов с указанием файлов, куда должны попадать ошибки и стандартный вывод:

Если надо, STDERR и STDOUT можно перенаправить в один и тот же файл, воспользовавшись &> :

Устаревшая форма записи:

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

В этом случае сначала вывод ошибок перенаправляется в стандартный вывод (на экран), а потом стандартный вывод перенаправляется в файл data-error.txt . То есть, ошибки будут выведены в консоль, а данные — в файл.

Читайте также:  Сделать образ раздела linux

Для дозаписи в файл data-error.txt

Перенаправление вывода в скриптах

Существует два метода перенаправления вывода в сценариях командной строки:

  • Временное перенаправление, или перенаправление вывода одной строки
  • Постоянное перенаправление, или перенаправление всего вывода сценария

Временное перенаправление вывода

В сценарии можно перенаправить вывод отдельной строки в STDERR . Чтобы это сделать, достаточно использовать команду перенаправления, указав дескриптор STDERR , при этом перед номером дескриптора надо поставить символ амперсанда:

Если запустить этот скрипт, обе строки попадут на экран, так как, как вы уже знаете, по умолчанию ошибки выводятся туда же, куда и обычные данные.

Запустим скрипт так, чтобы вывод STDERR попадал в файл:

Теперь обычный вывод делается в консоль, а сообщения об ошибках попадают в файл error.txt .

Постоянное перенаправление вывода

Если в скрипте нужно перенаправлять много выводимых на экран данных, добавлять >&2 к каждому вызову echo неудобно. Вместо этого можно задать перенаправление вывода в определённый дескриптор на время выполнения скрипта, воспользовавшись командой exec :

После запуска сценария весь вывод будет перенаправлен в файл output.txt .

Команду exec можно использовать не только в начале скрипта, но и в других местах:

Перенаправление ввода в скриптах

Для перенаправления ввода можно воспользоваться тем же способом, который использовался для перенаправления вывода. Например, команда exec позволяет сделать источником данных для STDIN какой-нибудь файл:

Эта команда указывает оболочке на то, что источником вводимых данных должен стать файл data.txt , а не обычный STDIN . Посмотрим на перенаправление ввода в действии:

Подавление вывода

Иногда надо сделать так, чтобы команды в скрипте, который, например, может исполняться как фоновый процесс, ничего не выводили на экран. Для этого можно перенаправить вывод в /dev/null .

Вот, например, как подавить вывод сообщений об ошибках:

Тот же подход используется, если, например, надо очистить файл, не удаляя его:

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

find — каким ключом отключить сообщения «Отказано в доступе»?

Модератор: /dev/random

find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение pavelvat » 02.02.2010 00:29

Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение eddy » 02.02.2010 00:39

Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение pavelvat » 02.02.2010 01:04

Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение eddy » 02.02.2010 01:08

Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение pavelvat » 02.02.2010 01:17

Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение flank’er » 02.02.2010 07:09

Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение drBatty » 02.02.2010 09:52

Спасибо.
Но у этого способа есть недостаток — убираются все сообщения об ошибках, а нужно только не замусоривать вывод сообщениями о директориях к которым нет доступа. Я подумал, что разработчики find предусмотрели такую возможность, но беглый просмотр

Скоро придёт
Осень

Re: find — каким ключом отключить сообщения «Отказано в доступе»?

Сообщение pavelvat » 03.02.2010 12:23

Спасибо.
Но у этого способа есть недостаток — убираются все сообщения об ошибках, а нужно только не замусоривать вывод сообщениями о директориях к которым нет доступа. Я подумал, что разработчики find предусмотрели такую возможность, но беглый просмотр

Пожалуй, способ указанный flank’er наиболее простой, но и у него есть недостаток — если локаль произвольная.
Всё же интересно, можно ли добиться желаемого только средствами команды find, без организации конвеера?

Источник

Оцените статью