Создать Пользовательские параметры (варианты) для уже существующих команд?

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

utility <in >out

, в отличие от разрешения именованной утилите выполнять open () , например:

utility in >out

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

Если перенаправление завершается неуспешно, оболочка приводит к короткому замыканию вызова утилиты и записывает сообщение об ошибке в stderr - stderr оболочки , а не все, на что вы могли временно направить его для утилиты (что также зависит от порядка перенаправлений в командной строке) - в стандартном диагностическом формате. Самый простой способ проверить, можно ли открыть файл, это открыть его, и < делает это неявно перед чем-либо другим.

Возможно, наиболее очевидным условием гонки, указанным в командах в вашем вопросе, является перенаправление out . В обеих формах оболочка также открывает > запись, и это происходит независимо от того, может ли sed успешно открыть файл readfile во второй форме. Так что out усекается - и, возможно, без необходимости. Это может быть плохо, если вы хотите записать выходные данные, только если вы можете успешно открыть входные данные. Однако это не проблема, если вы всегда открываете свой ввод первым, как это делается в первой форме.


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

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

-121--120132-

Попробуйте.

DAY30=`TZ=EST+720 date "+%Y-%m-%d"`

print $DAY30

720 - смещение в часах. Итак, 30 дней - это 720 часа.

EST - мой часовой пояс. Я предполагаю, что вы можете использовать любой подходящий часовой пояс.

-121--73551-
  1. Вы можете удалить параметры ip (BOOTPROTO,...) из ifcfg-team0, поскольку они теперь определены в ifcfg-brteam0.

    ifcfg-team0 может быть короче

     DEVICE = team0
    TEAM_CONFIG="{\"runner\": {\" имя\" :\" activebackup\"}} "
    DEVICETYPE=Team
    NAME=team0
    UUID=75299245-c21f-4bfc-8c21-1728378d5a33
    ONBOOT=yes
    BRIDGE=brteam0
    
  2. В ifcfg-brteam0 необходимо изменить значение DEVICE, например:

     DEVICE = brteam0
    

    вместо team0 в OP значение, уже используемое ifcfg-team0.

0
21.07.2018, 03:40
1 ответ

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

Сказав это, было бы относительно просто создать функцию для достижения вашей цели.

fullupgrade() { pacman -Syu $(awk -F= '/^IgnorePkg/ {print $NF}' /etc/pacman.conf) ; }
0
28.01.2020, 04:17

Теги

Похожие вопросы