[
] В bash (и, возможно, в других оболочках) вы можете запрограммировать PID последнего фонового процесса, используя переменную оболочки [] $![
], т.е. должно быть возможно сделать что-то вроде [
] [
dd if=/path/of/file of=/path/of/destination & pidstat -p $!
] [
] См. [] этот похожий вопрос из askubuntu[][
]
Когда вы выполняете LS -R, вы получаете как вывод названий каталогов в листинге.
-121--244107- Консоль не подключен к stdin
процесса
.
Похоже, такая же проблема, как видно в rc.local с чтением не будет эхо-ключа .
Предлагаемый ответ есть добавить Plymouth Quit
перед попыткой ввода консоли.
В качестве альтернативы может быть возможно организовать для себя Plymouth для отображения вашего предупреждения; Что-то вроде
plymouth pause-progress
plymouth message --text="Your system will be hosed. Is that what you want? What you really, really want? [yn]"
plymouth watch-keystroke --keys="YyNn " --command="tee /tmp/key_pressed"
case $(cat /tmp/key_pressed) in
[nN])
poweroff; # abort!
;;
esac
plymouth message --text="Okay, you asked for this"
plymouth unpause-progress
предостерегайтесь: я не эксперт Plymouth, и не пробовал выше.
-121--157563-sed '/[Cc][aA][sS][eE] [wW][Hh][Ee][Nn]/{
:1
/[eE][nN][dD] [aA][sS]/!{
N;b1
}
s/[Cc][aA][sS][eE] [wW][Hh][Ee][Nn] \([^ ]*\).*[eE][nN][dD]\( [aA][sS]\)/\1\2/
}'
с GNU SED
(который вы, кажется, используете), которые могут быть упрощены в:
sed -E '/case when/I{
:1
/end as/I!{
N;b1
}
s/case when ([^ ]*).*end( as)/\1\2/I
}'
(это предполагает не более одного Case
Заявление на одной строке).
Это было бы намного проще с Perl
:
perl: perl -0777 -pe 's/case when (\w+) in.*?end as /$1 as /gis'
(обратите внимание, что эта команда распадается весь вход в память, которая может быть заботой о огромных файлах).