ΠΠΎΡΠ»Π΅ ΡΠ΅ΠΌΠΈ Π»Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΠΈΡΡΡΠ° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΡΠ»Π΅ΠΊΡΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠΈ (IEEE Computer Society) ΠΈ ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌ Open Group ΡΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° POSIX 1003.1-2024, Π½Π°ΡΠ΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠ΅ΠΆΠ΄Ρ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈ ΡΡΠΈΠ»ΠΈΡ.
Π’Π΅ΠΊΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΠΏΠΎΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PDF Π΄Π»Ρ ΠΏΠ»Π°ΡΠ½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡΡΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ IEEE. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΠΊΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π½Π° ΡΠ°ΠΉΡΠ΅ Open Group (ΠΏΠΎΠΊΠ° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ»Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡ POSIX 1003.1-2017, Π²ΡΡΠ΅Π΄ΡΠ°Ρ Π² 2017 Π³ΠΎΠ΄Ρ).
ΠΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² POSIX 1003.1-2024, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² shell ΡΡΠΎΠΊ $’…’, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡ readlink ΠΈ realpath, ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π² ΡΡΠΈΠ»ΠΈΡΠ΅ find ΠΎΠΏΡΠΈΠΉ «-print0» ΠΈ «-iname», Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² xargs ΠΎΠΏΡΠΈΠΈ «-0» (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· find -print0), Π² read — ΠΎΠΏΡΠΈΠΈ «-d» (ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ), Π² sed ΠΎΠΏΡΠΈΠΈ «-E» (ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ), Π² set — ΠΎΠΏΡΠΈΠΈ «-o pipefail».
ΠΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ SIGWINCH, ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΉ tcgetwinsize (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°), gettext (ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΡΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²), asprintf (ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π±ΡΡΠ΅Ρ Ρ ΡΡΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΡΠ²ΠΎΠ΄Π°), strlcpy ΠΈ strlcat (Π°Π½Π°Π»ΠΎΠ³ΠΈ strncpy ΠΈ strncat, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° ΠΈ Π²ΡΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π·Π°ΠΌΡΠΊΠ°ΡΡΠΈΠΉ ΡΡΡΠΎΠΊΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ Π±Π°ΠΉΡ). Π ΡΡΠΈΠ»ΠΈΡΠ΅ make ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ include, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Π»ΠΈ .NOTPARALLEL, .PHONY ΠΈ .WAIT, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ°ΠΊΡΠΎΡ CURDIR, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
«::=», «:::=», «+=», «?=» ΠΈ «!=».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru