У вас установлены программы pm -suspend или pm -hibernate ? Эти инструменты работают независимо от systemd, поэтому проблема systemd не затрагивает их. Вы можете получить оба этих инструмента из пакета pm -utils , хотя IDK, если этот пакет доступен в CentOS (, отсутствует в Fedora ), поэтому вам, возможно, придется собрать его из источник. Вы можете получить его из репозитория git :git ://anongit.freedesktop.org/git/pm -utils
Вы также можете попробовать установить пакет uswusp , хотя он также может быть недоступен в репозиториях CenOS. Если вы установите это, вы можете использовать s2disk для перехода в спящий режим и s2ram для перехода в оперативную память. Вы можете получить эту программу на сайте Sourceforge .
Третьим вариантом является указание системе приостановить работу напрямую, без вызова конкретной программы. Это можно сделать, перезаписав файл /sys/power/state с «disk» для перехода в спящий режим или с «mem» для приостановки. Обратите внимание, что этот файл может быть изменен только пользователем root. Вы можете перезаписать его, выполнив что-то вроде sudo sh -c 'printf mem > /sys/power/state'
или echo disk | sudo dd status=none of=/sys/power/state
.
В bash есть функции readline alias-expand-line
и history-and-alias-expand-line
, но по умолчанию они не привязаны ни к каким клавишам. Вы можете связать их самостоятельно --пример сControl-T
:
bind '"\C-T": history-and-alias-expand-line'
Попытка связать саму Enter
будет беспорядочной, потому что не каждый раз, когда вы нажимаете Enter
, вы выполняете команду (, например. а не когда это незавершенный конвейер и т. д. ).
Существует также ловушка DEBUG
, но определяющая, действительно ли команда была введена пользователем (, например. не запускается с PROMPT_COMMAND
или с подстановки команд в PS1
), и вопрос о том, был ли расширен псевдоним -, будет сложным; но если вы не возражаете против печати любой команды перед ее выполнением:
trap 'echo "> $BASH_COMMAND"' DEBUG
bash$ pwd
> pwd
В zsh вы можете просто определить функцию preexec
, которая печатает расширенную команду, если она отличается от команды, введенной пользователем:
preexec(){ [ $1 != $2 ] && print -r "> $2" }
zsh$ j
> jobs
Однако имейте в виду, что некоторые трюки с псевдонимом и историей не будут работать должным образом, если принудительно -расширить псевдоним. Например, у меня есть псевдоним c
в bash для выполнения вычислений, таких как c 3.17 * 4.2
, без необходимости экранировать *
, (
и т. д.:
alias c='_c=$(fc -nl -0); bc -l <<<${_c#*c} #'
Как только readline расширит его, текущая строка из истории (, возвращенная fc -nl -0
), будет расширенной , а не исходной командой, и все развалится.
Псевдонимы — это просто простые замены. Если вы хотите сделать что-то более интересное, например напечатать сообщение перед запуском команды, вам нужна более мощная :функция. Если вы хотите, чтобы определение выглядело как определение псевдонима, вы можете определить функцию, которая определяет функцию.
function verbose_alias {
local name=${1%%=*} expansion=${1#*=}
eval "function $name {
printf >&2 '%s is an alias for %s\\n' \"$name\" \"$expansion\";
$expansion \"\$@\";
}"
}
verbose_alias dbmigrate='rails db:migrate'