Как насчет того, чтобы использовать в своих интересах удар IFS
- основанное разделение слова в сочетании с заменой команды (принимающий значение по умолчанию IFS
)
echo $(ls /proc | grep -v "^[0-9].*")
acpi buddyinfo bus cmdline cpuinfo.....
PS1='\[\e]0;\h \w\007\] \u$ '
В этом можно убедиться, взглянув на эту диаграмму и отметив, что существует 2 инструмента для отслеживания этих типов вызовов (system vs. shared library).
ПРИМЕЧАНИЕ:[114727] На следующей диаграмме они называются [114728]strace[114729] и [114730]ltrace[114731]. Смотрите ниже примеры функций, вызываемых этими инструментами, в соответствующих выходах этих 2 инструментов можно увидеть, какие функции вызываются исполняемым файлом, например [114732]ls[114733]. Пример
выход по трассировке:
Так где же читать()?
В общем, если вы хотите узнать о функции [114694]foo[114695], то [114696]man foo[114697] должен ответить на ваш вопрос. В заголовке страницы руководства должно быть написано, например, [114698]foo(2)[114699] или [114700]foo(3)[114701] или что-то подобное. Номер 2 означает системный вызов, 3 означает библиотечную функцию. В редких случаях, когда показывается другой номер, попробуйте [114702]man 2 foo[114703] и [114704]man 3 foo[114705].
Системные вызовы определены в библиотеке C (и работа выполняется ядром); библиотечные функции определены в библиотеках, страница руководства должна указывать, какие библиотеки использовать (цитируя некоторые флаги [114706]-l
Системная библиотека (libc) предоставляет оберточные функции для системных вызовов. Это обычные функции пользовательского пространства, которые можно вызывать, как и любые другие функции языка Си, и они выполняют необходимую магию для делегирования системного вызова [114712]real[114713] в ядре.[114237].