есть ли какая-либо единственная, встроенная команда, которая работает через это волшебство...?
Чтобы быть педантичными, нет, Вы не можете предположить, что такая команда существует.
Существует много различных реализаций Unix, и у каждого есть его различные причуды. POSIX, общий знаменатель (и самая близкая вещь к стандарту через Нельды) не указывает такую опцию для
grep
.Как упомянуто в других ответах, реализации GNU
grep
имеет нестандартную опцию, которая делает то, что Вы хотите. В то время как эта конкретная реализация могла бы быть распространена в системах Linux, Вы не можете принять его доступность ни на каком Unix, даже некоторые системы Linux.Наконец, я должен упомянуть, что это - философия Unix для одобрения комбинации нескольких примитивных программ по использованию одного большого монолитного исполняемого файла, пытающегося сделать все сразу.
В Вашем случае, проверяя файловую систему и соответствуя regexp в потоке две отдельных задачи. Только нормально рассматривать каждого в отдельной программе.
Я предполагаю, что настоящая проблема вот состоит в том, что командой, которую Вы пытаетесь выполнить, является Emacs. При выполнении Emacs, поскольку корень почти никогда не является хорошей идеей. Emacs также переопределяет много нажатий клавиш, таким образом, C-z
не мог бы работать просто по этой причине. Если root
уже зарегистрирован, emacs
мог бы запуститься графически на root
дисплей. И т.д., и т.д.
Взгляд на использование sudo:
метод от Бродяги для редактирования использования файлов sudo
от Emacs. Например, для редактирования /etc/motd
, сделать C-x C-f
и введите путь как /sudo:root@localhost:/etc/motd
.
Если бы я понимаю Ваш вопрос, следующее работало просто великолепно для меня на CentOS 6.4, который я ожидал бы быть очень похожим на SLC6:
команда initital$ sudo sleep 300
^Z
[1]+ Stopped sudo sleep 300
фон
$ bg
[1]+ sudo sleep 300 &
$ jobs
[1]+ Running sudo sleep 300 &
$ ps -eaf|grep sudo
root 25752 25669 0 09:53 pts/0 00:00:00 sudo sleep 300
sam 25755 25669 0 09:53 pts/0 00:00:00 grep sudo
уничтожьте задание (Ctrl+C)
$ fg
sudo sleep 300
^C
$ ps -eaf|grep sudo
sam 25758 25669 0 09:53 pts/0 00:00:00 grep sudo
Информация об ОС
$ uname -a
Linux mungr 2.6.32-358.6.1.el6.x86_64 #1 SMP Tue Apr 23 19:29:00 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS release 6.4 (Final)
CTRL-Z
отправляет сигнал SIGTSTP
к процессу.
Так самый простой способ сделать это:
sudo kill -TSTP <pid>
от другой оболочки.