Странное поведение `echo` [дубликат]

Для Solaris вы можете использовать pfiles , чтобы узнать, какие сетевые порты открываются определенным процессом. Используя цикл for в / proc / * , вы можете использовать pfiles в каждом запущенном процессе для поиска нужного порта. Недостатком является то, что для получения информации вам потребуется root в Solaris 10 или возможность получить привилегии ( pfexec pfiles ) в Solaris 11.

Если вы можете стать root на хосте Solaris, вы сможете использовать что-то вроде:

PORT=22; for PID in /proc/*; do pfiles ${PID} |grep "port: ${PORT}" && echo ${PID}; done

Это будет повторяться через / proc / * , фильтровать указанный порт, и если совпадение найдено, в следующей строке отображается идентификатор процесса ( / proc / #### ).

2
07.08.2017, 13:57
1 ответ

Без кавычек оболочка выполняет расширение pathname (glob )для класса символов [], поэтому, предположительно, у вас есть файлы с именами e, g, k, m, qв текущем каталоге --, отсюда и результат.

echoв основном просто печатает результат расширения пути, не более того.


Возьмем один пример,echo [quasi-star]:

Результатом расширения для [quasi-star]будет любой одиночный символ изquasijklmnopqrstar(дубликатов, сохраненных намеренно ). С точки зрения оболочки, поскольку окружающих символов нет, оно будет просто соответствовать любому имени файла с одним символом в текущем каталоге из расширения.

6
27.01.2020, 21:53

Теги

Похожие вопросы