Одно из того, на что другие ответы здесь, кажется, не обращались напрямую, это то, что использование cat
, как это не "бесполезно" в том смысле, что "порождается посторонний кошачий процесс, который не работает"; это бесполезно в том смысле, что "порождается кошачий процесс, который делает только ненужную работу".
В случае этих двух:
sed 's/foo/bar/' somefile
<somefile sed 's/foo/bar/'
оболочка начинает процесс sed, который читает из какого-то файла или stdin (соответственно), а затем выполняет некоторую обработку - он считывает, пока не попадет на новую строку, заменяет первую "фу" (если таковая имеется) на этой строке на "бар", затем печатает эту строку на stdout и петли.
В случае:
cat somefile | sed 's/foo/bar/'
Панцирь порождает кошачий процесс и процесс sed, а провода stdout кошки на stdin sed. Кошка считывает из файла несколько кило- или, может быть, мега-байтовых фрагментов, затем записывает их в свой stdout, откуда собака получает оттуда sdout, как во втором примере, приведенном выше. В то время как sed обрабатывает этот кусок, кот читает другой кусок и записывает его в свой stdout, чтобы sed работал над следующим.
Другими словами, дополнительная работа, необходимая при добавлении команды cat
, это не только дополнительная работа по порождению дополнительного процесса cat
, это также дополнительная работа по чтению и записи байтов файла дважды, а не один раз. Теперь, говоря практически и на современных системах, это не имеет большого значения - это может заставить Вашу систему сделать несколько микросекунд ненужной работы. Но если это для скрипта, который вы планируете распространять, потенциально людям, использующим его на машинах, которые и так недостаточно мощные, то несколько микросекунд могут сложиться за много итераций
На самом деле только NM_CONTROLLED = "no" (или это "false"?) Что-то делает.
Ответ «да» (или это «правда»?) - это то же самое, что и отсутствие линии вообще: для сетевых устройств, поддерживаемых NetworkManager, он будет управлять ими; для тех, кто неизвестен NetworkManager, он все равно проигнорирует их.