Асинхронный дочерний процесс в сценарии FastCGI

Нельзя, расширение истории происходит до расширения псевдонима или параметра.

Лично я ненавижу расширение истории и отключаю его в первую очередь.

Здесь, вместо расширения истории, я бы предложил создать виджет, который увеличивает E<n>число слева от курсора:

increment-episode() {
  emulate -L zsh
  setopt extendedglob
  LBUFFER=${LBUFFER/(#b)(*E)(<->)/$match[1]${(l:${#match[2]}::0:)$((match[2]+1))}}
}

zle -N increment-episode

bindkey '\e+' increment-episode

Затем вы просто нажимаете Вверх , а затем Alt + + , и у вас есть визуальная обратная связь о том, что происходит на каждом этапе, и вы можете отменить/ переделывать/адаптировать по желанию, а не работать вслепую, как с расширением истории csh (функция 70-х годов, которая, по мнению ИМО, имела смысл тогда, но не так много сейчас, когда у нас есть более быстрые и более мощные терминалы и линейные -редакторы ).

Но если вы действительно хотите вслепую оценить код в предыдущей команде в истории с увеличением числа после E, вы можете сделать:

rerun-with-next-episode() {
  emulate -L zsh
  setopt extendedglob
  local new
  new=${${history:0:1}/(#b)E(<->)/E${(l:${#match[1]}::0:)$((match[1]+1))}}

  # display it
  print -ru2 -- $new

  # put it on the history
  print -rs -- $new

  # evaluate it
  eval -- $new
}
2
10.06.2021, 23:47
2 ответа

Вы можете разделить cgi и приостановку, вставив файл, используемый в качестве триггера systemd. См. man systemd.pathдля активации этого устройства на основе пути -. Преимущество заключается в том, что не нужно использовать sudo из cgi.

Создать файл модуля/etc/systemd/system/mycgitrigger.path

[Path]
PathModified=/some/writeable/file
[Install]
WantedBy=multi-user.target

и включите его. Измените сценарий cgi, чтобы он просто записывал что-либо в файл /some/writeable/file, чтобы вызвать завершение работы. Поместите команду короткого тайм-аута и выключения в юнит-файл. /etc/systemd/system/mycgitrigger.service(, который не нужно активировать ).

1
28.07.2021, 11:26

Очевидным решением было бы

echo "sleep 1 && sudo systemctl suspend" | at now
0
28.07.2021, 11:26

Теги

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