Нельзя, расширение истории происходит до расширения псевдонима или параметра.
Лично я ненавижу расширение истории и отключаю его в первую очередь.
Здесь, вместо расширения истории, я бы предложил создать виджет, который увеличивает 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
}
Вы можете разделить 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
(, который не нужно активировать ).
Очевидным решением было бы
echo "sleep 1 && sudo systemctl suspend" | at now