Если это всегда запускается с s[number]colon
Вы могли сделать (с GNU sed):
sed -r '/^s[0-9]+:/s/ttyS0/something_else/' infile
Который изменяет любую строку, которая запускается с regex, адаптируйтесь для удовлетворения потребностям.
В соответствии с Linux, основным эффектом ps x
должен включать все процессы, работающие как того же пользователя. По умолчанию, ps
только включает процессы, работающие на том же терминале. Напротив, значение по умолчанию BSD должно включать процессы, которые имеют терминал управления, является ли это тем же или нет. Соответствующая опция BSD -x
. Кроме того, ps x
выбирает немного отличающийся выходной формат. Синтаксис POSIX для соответствия тем же процессам
ps -A -u "$USER"
Если Вы анализируете вывод ps
обязательно используйте -o
отметьте для управления, какие столбцы печатаются. Обратите внимание, что команды в моем ответе не печатают точно те же столбцы.
Для поиска процесса ssh-агента действительно необходимо передать некоторые опции, так как и Linux и BSD скрывают процессы, которые не связаны ни с каким терминалом по умолчанию, и ssh-агенту свойственно не быть связанным с терминалом.
if [ -z "$SSH_AGENT_PID" ]; then
SSH_AGENT_PID=$(ps -A -u "$USER" -o comm= | grep ssh-agent | head -n 1)
fi
if [ -n "$SSH_AGENT_PID" ]; then
…
-U
вместо-u
. На OpenBSD это не имеет-A
. Мне довольно грустно, что мои любимые BSDs не повинуются стандарту. – Hank Gay 18.12.2013, 22:14