Как отключить команду ls?

Предположим, что я рекурсивный ls

 $ ls -R 

в корневом каталоге.

Я получаю много сообщений, подобных этим –

 ls: cannot open directory ./var/lib/sendmail: Permission denied ls: cannot open directory ./var/lib/sudo: Permission denied ... 

Есть ли способ избежать отображения вышеперечисленных сообщений « cannot open directory »?

  • Что означает «command1 -> command2» в результатах моего ls -al?
  • Как отключить мигание имен файлов в rlogin
  • Почему сортировка файлов по времени доступа не работает?
  • запуск vim с заменой команды
  • Поиск и удаление подпапок, содержащих только самые последние
  • Как перечислить только файлы в каталоге, разделенные запятыми
  • Определение количества файлов и подкаталогов в Linux
  • `ls -lS` не показывает истинный размер каталога
  • One Solution collect form web for “Как отключить команду ls?”

    Так как это сообщения об ошибках, они отправляются в stderr не stdout. Решение состоит в том, что вы перенаправляете stderr:

     ls -R 2>/dev/null 

    Объяснение:

    Любая команда имеет 3 стандартных дескриптора файла: стандартный вход (0) (обычно терминал, на который вы вводите команды), стандартный вывод (1) (обычно терминал, на котором команда печатает свой вывод) стандартная ошибка (2) (по умолчанию это то же, что и стандартный вывод).

    Большинство (если не все) программ / инструментов печатают предупреждения и ошибки в стандартный дескриптор файла ошибки. Теперь дескрипторы файлов не будут очень полезными, если они будут исправлены; поэтому оболочка предлагает перенаправление : вы можете перенаправить любой стандартный дескриптор файла в любой файл, который вы хотите.

    Перенаправление stdin (для ввода данных из файла вместо вашей клавиатуры):

     interactive_program 0< file_with_answers 

    Как вы можете видеть, это может помочь вам автоматизировать запуск простых программ, которые задают много вопросов, предоставляя так называемый «файл ответов», который подается на стандартный ввод.

    Это можно сократить до

      interactive_program < file_with_answers 

    поскольку < очищает перенаправление ( из файла в программу)

    Аналогично, stdout может быть перенаправлен через 1>... или >... или >>... (добавление к существующему файлу вместо его усечения)

    Для стандартного перенаправления ошибок требуется, чтобы дескриптор файла явно указывал так: 2>... , поэтому то, что указано выше, направляет все ошибки на специальный файл /dev/null который является черным дыркой для бит.

    Соответствующее чтение при перенаправлении, как указано MattDMo в комментариях ниже.

    Linux и Unix - лучшая ОС в мире.