Это зависит от оболочки; ZSH предлагает форму $\NNN
% perl -e 'printf "%vx\n", shift' $'\177'
7f
%
Как в zsh
, так и в ksh
другим вариантом будет использование control+v , а затем возврат , который должен вставить ^M
в командную строку, хотя это может быть утомительным и может чрезмерно усложнить историю оболочки.
При их отсутствии другим вариантом является запуск программы, которая генерирует соответствующие символы.
% perl -e 'printf "%vx\n", shift' $( perl -e 'print "\x0F"' )
f
%
Или использовать небольшую программу на C с соответствующими аргументами для вашей программы; это позволит избежать любых осложнений, которые может добавить оболочка
#include <err.h>
#include <unistd.h>
int main(void)
{
execlp("perl", "perl", "-e", "printf \"%vx\\n\", shift", "\x0F",
(char *) 0);
err(1, "exec failed");
return 1;
}
Частичный ответ:
Я заметил, что вы используете условное предложение, поэтому, если дампы ядра еще не сгенерированы, проще всего включить сигнал в имя при их создании. Подробности см. в man 5 core
.
Если они у вас уже есть, ознакомьтесь с подробностями основного формата (, см., например. здесь). Я бы предположил, что номер сигнала находится в различных siginfo_t
заметках (, но не проверял это ), поэтому извлеките их любым способом, достаточно быстрым для вас (пользовательской программой на C, если необходимо )и отфильтруйте нужные сигналы.