Это показывает, что вы хотите:
find /proc -maxdepth 1 -тип d -name "[0-9] *" | пока читаешь ф; do echo $(cat "$ f /cmdline") "$ {f:6}" $(ссылка для чтения "$ f /fd /0"); сделанный
хорошо, чтобы разбить эту вещь:- найти все каталоги, которые содержат только числа в proc - только в proc, без подкаталогов. условно, это только идентификаторы процессов.
- в то время как read читает каждую строку и сохраняет ее в переменной оболочки (если бы это был скрипт, я бы назвал его procpiddir или что-то классное в этом роде - это значит, я бы назвал это кратким).
- файл cmdline сообщает вам, что было выполнено для создания этого pid (не совсем, но мы пойдем с этим) - $ {f:6} - манипуляция с переменной bash - в основном отбрасывает первые 6 символов в имени - '/proc/'в этом случае - readlink следует за ссылкой на свое заключение. Так как fd0 - это стандартный ввод (fd1 - это стандартный вывод, fd2 - это stderr), то имеет смысл только привести вас к tty, под которым выполняется процесс.
нет веской причины для цитирования этого материала - ни в одной из этих переменных не было бы пробелов или других забавных символов. это просто привычка. о, и $(cmd) делает вид, что вывод команды является переменной оболочки (возможно, кто-то лучше с bash должен объяснить это лучше или найти вспомогательные ссылки - это afaik).