Во-первых, в простой команде (в основном, название программы, сопровождаемой некоторыми аргументами), относительное положение аргументов и перенаправлений не имеет значения. У Вас могут даже быть перенаправления перед названием команды. Следующее является всем эквивалентом:
foo --bar qux >out 2>err
foo >out --bar 2>err
>out 2>err foo --bar qux
(Я не перечислю все возможности.) Обычно поместить перенаправления в конец, таким образом, Вы могли бы удивить будущего читателя, если Вы не делаете этого. Однако это - только вопрос стиля. Существует некоторое преимущество для помещения перенаправлений ввода перед командой и перенаправлениями вывода позже, особенно в конвейерах, потому что это сохраняет порядок чтения идентичным заказу обработки:
output.txt
(контраст command1
В составных командах действительно необходимо поместить перенаправления в конец; например, в следующих отрывках, Вы не можете поместить перенаправление больше нигде:
while some_predicate; do some_action; done out
{ command1; command2; } out
Когда существует несколько перенаправлений, порядок важен, если они накладываются, т.е. если у них есть общие дескрипторы файлов. Посмотрите Порядок перенаправлений
В конвейере перенаправления относятся к каждой переданной по каналу команде. В Ваших примерах перенаправления относятся (1) sort
управляйте только, (2,3) echo
команда только. Как объяснено выше, (2) и (3) эквивалентны.
В (2) и (3), вывод от echo
заканчивается в том же месте, которым это было перед перенаправлением. Если Вы записали echo -en "C\nB\nA\n" >&2 | sort
, не было бы никакого вывода к stdout от команды на левой стороне канала, таким образом, sort
видел бы пустой stdin.
Можно перенаправить ввод или вывод блока команд путем помещения их в фигурные скобки:
{ command1 | command2; } 2>error.log
Я предполагаю, что Ваш выбор перенаправлений был в демонстрационных целях только — 2>/dev/stdout >&2
сложный способ записать 2>&1
(перенаправьте стандартную погрешность (т.е. fd 2), в то везде, где стандартный вывод (т.е. fd 1) в настоящее время переходит).
Чтение приложений /etc/resolv.conf
когда они запускают. При изменении того файла Вы, возможно, должны перезапустить приложения тот доступ сеть. Firefox перезапуска.
Для предотвращения этого неудобства можно выполнить локальный прокси кэширования DNS, поместить nameserver 127.0.0.1
в Вашем /etc/resolv.conf
к точечным приложениям в Вашем прокси, и настраивают Ваш прокси однако, Вам нравится. Это обладает дополнительным преимуществом создания запросов DNS быстрее. Dnsmasq является популярным выбором. Не посмотрите DNS на Wi-Fi Debian после отключения кабеля DNS, и Процесс, звоня getaddrinfo () при начальной загрузке постоянно застревает в плохом/etc/resolv.conf? для примеров.
Перезагрузка была бы самым простым способом иметь resolv.conf файл, автоматически зафиксированный.
Как несколько комментариев справедливо указывают, существуют определенно более тонкие способы восстановить файл, однако, они - зависимый распределения:
Вы могли бы проверить который соответствие Ваш, если таковые имеются:
service network-manager restart # Debian/Ubuntu/Mint
/etc/init.d/network restart # Suse
/sbin/service NetworkManager restart # RedHat/Fedora
/etc/rc.d/rc.inet1 restart # Slackware