рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди: рдУрдПрд╕ рдЗрдиреНрдлрд░реНрдиреЛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдиреНрдлрд░реНрдиреЛ рдУрдПрд╕ рд╢реЗрд▓ рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рджрд┐рдпрд╛ред рдФрд░ рдореБрдЭреЗ рдХрднреА рдпрд╣ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐
рдЗрдирдлрд░реНрдиреЛ рд╢ рдореЗрдВ рдХреБрдЫ рд▓реЛрдЧ
рдЦреБрд╢ рдереЗред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдмреЗрд╣рддрд░ рд╣реИ - рдЖрдЬ рдореИрдВрдиреЗ рд╢реЗрд▓ рд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореИрдВ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖ - рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдиреЛрдЦреА рдмрд╛рдд рд╣реИ! рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ рд╕рд░рд▓ред
рдлрд┐рд░ рднреА, рдореИрдВ рдЕрдзрд┐рдХ рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдХрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░реВрдБрдЧрд╛ред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╢реЗрд▓ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдЧреЛрд▓реЗ рдирд░рдХ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо
/dis/sh.dis
рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рд╡реЗ рдмрд╣реБрдд рдзреАрдореА рд╣реИрдВред рдпрд╣ рдмреЗрд╣рдж рдЕрдЬреАрдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд▓рд┐рдореНрдмреЛ (JIT рдореЛрдб рдореЗрдВ) рд▓рд┐рдЦреЗ рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЧрддрд┐ C рдХреА рдЧрддрд┐ рдФрд░ рдкрд░реНрд▓ рдЬреИрд╕реА рддреЗрдЬрд╝ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╣реИред рдЗрд╕рд▓рд┐рдП,
sh
рдкрд░ рдкреВрд░реНрдг-рдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рд╣рд░ рдЫреАрдВрдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдореНрдмреЛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рднреА рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рд╢реБрд░реБрдЖрддреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЕрдиреНрдп рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрднреА рднреА
sh
рдореЗрдВ
sh
ред рджреВрд╕рд░рд╛ рдЧрдВрднреАрд░ рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХрдВрд╕реЛрд▓, рдХрдорд╛рдВрдб рд╣рд┐рд╕реНрдЯреНрд░реА рдХреА рдХрдореА, рдСрдЯреЛ-
рдХрдореНрдкрд▓реАрдЯ , рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдбрд┐рдЯрд┐рдВрдЧ рдореЗрдВ рдХрдореА рд╣реЛрдиреЗ рдкрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИ (рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рд┐рд░реНрдл
rlwrap рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛,
rlwrap -a
рдорд╛рдзреНрдпрдо рд╕реЗ рдИрдПрдордпреВ рдЪрд▓рд╛рдиреЗ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ)ред рддреАрд╕рд░рд╛ - рдЗрд╕ рдЦреЛрд▓ рдХрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдЙрджреНрдзрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдмреИрдХрд▓рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп (рд╣реАрдирд▓ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдмреИрдХрд▓рд╛рдЗрдЯ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг) рдПрдХ рдкреВрд░реНрдг рджреБрдГрд╕реНрд╡рдкреНрди рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЖрдЬ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рд╡рд┐рдо рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рд╢реЗрд▓ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрда рдЧрдпрд╛ ... рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдФрд░ рдореИрдВ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред :)
рд╕рд╛рдордЧреНрд░реА
рдХреНрдпрд╛, рдХрд┐рд╕ рд╕реЗ, рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреНрдпрд╛ рдмрдирд╛ рд╣реИ?
рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ /
/dis/sh.dis
рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ! рд╕рд╢рд░реНрдд рдмрдпрд╛рди рдФрд░ рд▓реВрдк рднреА рдирд╣реАрдВ рд╣реИрдВ! рдХреЛрдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдирд╣реАрдВред рдФрд░ рдлрд┐рд░ рд╡рд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рдХреИрд╕реЗ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЕрдм рджреЗрдЦреЗрдВред рддреЛ рдХреНрдпрд╛ рд╣реИ:
- рд▓реЙрдиреНрдЪ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдФрд░ I / O рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╕рд╣рд┐рдд)
- рд▓рд╛рдЗрдиреЗрдВ, рд▓рд╛рдЗрди рд╕реВрдЪреА, рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ
- рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░
- рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ (*;; [...])
- рдФрд░ рдХреБрдЫ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдорд╛рдВрдб рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢
рд╢рд╛рдпрдж, рдЖрдЦрд┐рд░реА рдмрд┐рдВрджреБ рдХреЛ рджреЗрдЦрдХрд░, рдЖрдкрдиреЗ рд╕реЛрдЪрд╛, тАЬрдЕрд╣рд╛! рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдЯреАрдореЗрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡реЗ рдмрд╛рдХреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХреЙрд░реНрдиреА рд╣реИред "... рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ, рдЖрдорддреМрд░ рдкрд░ рддреАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
exit
,
run
рдФрд░
load
; рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдорд╛рдВрдбреНрд╕
quote
рдФрд░
unquote
ред
run
, рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╢реЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдПрдирд╛рд▓реЙрдЧ
.
рдпрд╛ рдмреИрд╢ рдореЗрдВ
source
)ред
рд▓реЗрдХрд┐рди
load
- рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдмрдо рд╣реИ! рдпрд╣ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд▓рд┐рдВрдмреЛ рдкрд░ рд╡рд░реНрддрдорд╛рди рд╢реЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рд╢реЗрд▓ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ - рдЕрдЧрд░, рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдп, рдЕрдкрд╡рд╛рдж, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдЖрджрд┐ред рдЖрджрд┐ рдПрдХ
unload
рдХрдорд╛рдВрдб рднреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред :) рдлрд┐рд░ рднреА, рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рдирд╛ рднреА, рд╢реЗрд▓ рдмрд┐рд▓реНрдХреБрд▓ рдкреВрд░реНрдг рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ - рдЬрд┐рд╕реЗ рдореИрдВ "рдирдВрдЧреЗ рд╢" рдкрд░ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рд╛рдмрд┐рдд рдХрд░реВрдВрдЧрд╛!
рдУрд╣, рдХреБрдЫ рдФрд░ рдореИрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред (рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ "рдЕрд╣рд╛!" рдирд╣реАрдВ рд╣реИред) рд╡рд╣ рдЕрднреА рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
#
рд╢реБрд░реВред :)
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
рдХрд┐рд╕реА рднреА * рдирд┐рдХреНрд╕ рд╢реЗрд▓ рдХреЗ рд╕рдорд╛рди:
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ (
.dis
рдлрд╝рд╛рдЗрд▓реЗрдВ) рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ ( .dis
рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬрд┐рдирдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ shebang #!
) - рдЯреАрдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
;
- рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдЖрджреЗрд╢
&
- рдХрдорд╛рдВрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
|
>
, >>
рдФрд░ <
рдорд╛рдзреНрдпрдо рд╕реЗ stdin / stdout рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
; echo one two | wc 1 2 8
рд▓реЗрдХрд┐рди рдорддрднреЗрдж рд╣реИрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб I / O рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ
- рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ (stderr рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ 0, 1 рдФрд░ 2 рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рдирд╛)
cmd <stdin.txt >stdout.txt >[2]stderr.txt
cmd >[1=2]
(stderr рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдб рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд)cmd <[3]file.txt
(рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ 3 рдУрдкрди рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)cmda |[2] cmdb
(рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рдХреЗ cmda |[2] cmdb
рдмрдЬрд╛рдп, рдЗрд╕рдХрд╛ cmda |[2] cmdb
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЗрдирдкреБрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯрдбрдЖрдЙрдЯ рдмрд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ)cmda |[1=2] cmdb
(stderr рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, stdout cmda рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ рд╕реНрдЯрдб рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ cmdb рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ - рдЬреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдирд╣реАрдВ, рдмреЗрд╢рдХ)
- рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЦреЛрд▓рдирд╛
cmd <>in_pipe <>[1]out_pipe
(рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП cmd <>in_pipe <>[1]out_pipe
рдФрд░ cmd <>in_pipe <>[1]out_pipe
рдЦреБрд▓реЗ рд╣реИрдВ)
- рдиреЙрдирд▓рд╛рдЗрдирд░ рдХрдиреНрд╡реЗрдпрд░
cmd <{;;} >{;;}
( cmd <{;;} >{;;}
рджреЛрдиреЛрдВ рдмреНрд▓реЙрдХ рд╕реЗрдореА рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрдмрдХрд┐ cmd рдХреЛ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ - рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо a la /fd/
, рдЬреЛ рдкрд╣рд▓реЗ рдХреЗ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдФрд░ рджреВрд╕рд░реА рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдХреА рд╕реНрдЯрдбрд┐рди)
рдЕрдВрддрд┐рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рдорджрдж рд╕реЗ рджреЛ
cmp
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХрдорд╛рдВрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛ рдЕрдиреНрдп рдЖрджреЗрд╢реЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо:
cmp <{ ls /dir1 } <{ ls /dir2 }
ред
$ рд╕реНрдерд┐рддрд┐
рдирд┐рдХрд╛рд╕ рд╕реНрдерд┐рддрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдкрд╛рд░рдВрдкрд░рд┐рдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ: 0 рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдирд░рдХ рдореЗрдВ, рдХреЛрдИ рднреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрд╛ рддреЛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ) рдпрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рддреНрд░реБрдЯрд┐ рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред
рдПрдХ рд╕рдордЭреМрддрд╛ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рд░реЗрдЦрд╛ "рдЕрд╕рдлрд▓:" рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рддреНрд░реБрдЯрд┐ рд╣реИ - рдЕрд░реНрдерд╛рддред рдПрдкреНрд▓рд┐рдХреЗрд╢рди "рдХреНрд░реИрд╢" рдирд╣реАрдВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдмрд╕ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ (рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдПрдХ рд╢реЗрд▓ рд╣реИ)ред рдпрджрд┐ рддреНрд░реБрдЯрд┐ "рд╡рд┐рдлрд▓:" рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрд╡реЗрджрди рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдореЛрд░реА рдореЗрдВ ("рдЯреВрдЯреА рд╣реБрдИ" рд╕реНрдерд┐рддрд┐ рдореЗрдВ) рд░рд╣реЗрдЧреА, рддрд╛рдХрд┐ рдбрд┐рдмрдЧрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд╕рдХреЗ рдФрд░ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдпрд╣ рдЕрдкрд╡рд╛рдж рдХреНрдпреЛрдВ рд╣реБрдЖ (рдХреЗрд╡рд▓ рдХреЛрд░ рдмрдЪрдд рдХреЗ рдЕрдиреБрд░реВрдк, рдмрдЪрдд рдХреЗ рдмрдЬрд╛рдп) рд╡реЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ)ред
рдЗрд╕рд▓рд┐рдП, рдПрдХ рд░рдирд┐рдВрдЧ рдХрдорд╛рдВрдб рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХрд╛ "рдПрдЧреНрдЬрд┐рдЯ рдХреЛрдб" - рдЕрд░реНрдерд╛рдд рдЕрдкрд╡рд╛рдж-рддреНрд░реБрдЯрд┐ рдкрд╛рда
$status
рдкрд░рд┐рд╡реЗрд╢ рдЪрд░ рдореЗрдВ рд╣реЛрдЧрд╛ ("рд╡рд┐рдлрд▓:" рдЙрдкрд╕рд░реНрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрджрд┐ рдЕрдкрд╡рд╛рдж рдкрд╛рда рдХреЛ рдЫреЛрдбрд╝рдХрд░ "рд╡рд┐рдлрд▓:" рдореЗрдВ рдХреБрдЫ рдФрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛, рддреЛ "
$status
" рд░реЗрдЦрд╛
$status
рдореЗрдВ "рд╡рд┐рдлрд▓" рд╣реЛ рдЬрд╛рдПрдЧреА)ред
рд▓рд╛рдЗрдиреЗрдВ, рд▓рд╛рдЗрди рд╕реВрдЪреА, рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ
Infernov рдЦреЛрд▓
рдХреЗрд╡рд▓ рддрд╛рд░ рдФрд░ рддрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
рдкрдВрдХреНрддрд┐
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рддреЛ рдПрдХ рд╢рдмреНрдж рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдпрд╛ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдпрд╛ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХреЛрдИ рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рддрд╛рд░ рдореЗрдВ рдХреЗрд╡рд▓ "рдкрд▓рд╛рдпрди рдпреЛрдЧреНрдп" рдЪрд░рд┐рддреНрд░ рд╣реА рдПрдХрд▓ рдЙрджреНрдзрд░рдг рд╣реИ, рдФрд░ рдпрд╣ рджреЛ рдРрд╕реЗ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
; echo 'quote '' <-- here' quote ' <-- here
рдХреЛрдИ \ n, \ t, рдЪрд░ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдк, рдЖрджрд┐ред рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрдирдлреАрдб рдЪрд░рд┐рддреНрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╛ рддреЛ рдЗрд╕реЗ (рдПрдВрдЯрд░ рджрдмрд╛рдХрд░) рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрд╕ рд╡рд░реНрдг рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рд╕рд╛рде рд╕рдорддрд▓ рдХрд░реЗрдВред рдирд░рдХ рдореЗрдВ, рдПрдХ
рдпреВрдирд┐рдХреЛрдб (1) рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╡рд░реНрдг рдХреЛ рдЙрд╕рдХреЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдирд┐рд░реНрдорд╛рдг
"{}
рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ bash
``
рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ):
; cr="{unicode -t 0D} ; lf="{unicode -t 0A} ; tab="{unicode -t 09} ; echo -n 'a'$cr$lf'b'$tab'c' | xd -1x 0000000 61 0d 0a 62 09 63 0000006
рдбрдмрд▓ рдХреЛрдЯреНрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, рдбрдмрд▓ рдбрдмрд▓ рдХреЛрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ
рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рдХреЗ рдЕрдВрджрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреВрд░реЗ рдмреНрд▓реЙрдХ рдХреЛ рд╢реЗрд▓ рджреНрд╡рд╛рд░рд╛
рдПрдХ рд▓рд╛рдЗрди (рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рд╡рд░реНрдг рд╕рд╣рд┐рдд) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
; { echo one; echo two } one two ; '{ echo one; echo two }' one two
рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐
sh
рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
; echo { cmd | } sh: stdin: parse error: syntax error ; echo { cmd | cmd } {cmd|cmd} ; echo { echo one echo two } {echo one;echo two}
рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕реВрдЪреА
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рд╕реВрдЪреА рдХреЗрд╡рд▓ рд╢реВрдиреНрдп рдпрд╛ рдЕрдзрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реИрдВ рдЬреЛ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рд╡рд░реНрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдХреЛрдИ рднреА рд╢реЗрд▓ рдХрдорд╛рдВрдб
рдХреЗрд╡рд▓ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ , рдЬрд╣рд╛рдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдпрд╛ рдХреЛрдб рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╢реЗрд╖ рд▓рд╛рдЗрдиреЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред
; echo one two three one two three ; echo (one two) (three) one two three ; (echo () (one (two three))) one two three ; ({echo Hello, $1!} World) Hello, World!
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
^
рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕реЗ рджреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ (рдлрд┐рд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗ рдореЗрдВ рд╕рдорд╛рдкреНтАНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдпрд╛ рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рддрддреНтАНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рджреВрд╕рд░реА рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНтАНрдпреЗрдХ рддрддреНтАНрд╡ рдХреЗ рд╕рд╛рде рд╕рдореНтАНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рджреЛрдиреЛрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдпреЛрдЬрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
; echo (abc) ^ (1 2 3) a1 b2 c3 ; echo (ab) ^ 1 a1 b1 ; echo 1 ^ (ab) 1a 1b ; echo a ^ b ab
рдЖрдорддреМрд░ рдкрд░, рдПрдХ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рд▓рд╛рдЗрди рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - "рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдкрд░ рдХрдорд╛рдВрдб рдЬрд╛рд░реА рд░рдЦрдиреЗ" рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдпрд╣ рд▓рд╛рдЗрди рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ (рдПрдХ рдЙрджреНрдзрд░рдг рдХреЗ рд╕рд╛рде) рдпрд╛ рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ (рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕) рдпрд╛ рдкрд┐рдЫрд▓реА рдкрдВрдХреНрддрд┐ рдкрд░ рд▓рд╛рдЗрдиреЛрдВ (рдХреЛрд╖реНрдардХ) рдХреА рд╕реВрдЪреА, рдпрд╛ рд╕реВрдЪреА рдЕрдиреБрдЬреНрдЮрд╛ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред
рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░
рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЦреЛрд▓ рдореЗрдВ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рднреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЧреЛрд▓реЗ рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЗрд╕ рд╕реЗ рдореВрд░реНрдЦ рдордд рдмрдирдиреЗ рджреЛ!
; a = 'World' ; echo Hello, $a! Hello, World!
/ рдПрди.рд╡реА.
рдЗрдиреНрдлрд░реНрдиреЛ рдУрдПрд╕ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдУрдПрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмреБрд░реЗ рд╕рдкрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд POSIX API рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬреИрд╕реЗ
int execvpe(const char *file, char *const argv[], char *const envp[]);
рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░
/env
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрд╕ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдмрд╕ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдХреЗ (
рд╕реБрдиреЛ (1) рдФрд░
рдирд┐рд░реНрдпрд╛рдд (4) ) рдЗрд╕рдХреЗ
/env
ред
рдЖрдк
/env
рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдХрд░, рд╣рдЯрд╛рдХрд░ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдмрдирд╛ / рд╣рдЯрд╛ / рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдХрд░рдВрдЯ рд╢реЙ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
/env
рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рд╢ рдирд╣реАрдВред рджреВрд╕рд░реА рдУрд░, рд╢реЗрд▓ (
=
рдСрдкрд░реЗрдЯрд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЪрд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
/env
рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рд╢реЗрд▓ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдХреЛрдИ рднреА рд╡рд░реНрдг рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд╛рдо,
..
рдФрд░ рдпреБрдХреНрдд
/
) рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдРрд╕реЗ рдирд╛рдореЛрдВ рд╡рд╛рд▓реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╢ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ, рдФрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред
рд╕реВрдЪрд┐рдпреЛрдВ
рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЪрд░ рдореЗрдВ
рдХреЗрд╡рд▓ рддрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ ред рдЖрдк рдПрдХ рдЪрд░ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреАред
рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рдХреЛ рдПрдХ рдЪрд░ (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ
a=()
рдпрд╛
a=
рд╕реЗ рд╣реЛрдХрд░
a=
) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реЗрдЬрдирд╛) рдЪрд░ рдХрд╛ рд╡рд┐рд▓реЛрдкрди рд╣реИред
$var
рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ$#var
рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ $#var
рдорд┐рд▓ рд░рд╣реА рд╣реИ$"var
, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ $var
рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрдВрддрд░рд┐рдХреНрд╖ рдЕрд▓рдЧ)
; var = 'first str' second ; echo $var first str second ; echo $#var 2 ; echo $"var first str second
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
$var
рдФрд░
$"var
рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
echo
рдЕрдкрдиреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░
$"
рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЪрд░ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ
echo
рдХрдорд╛рдВрдб рдХреЛ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓реЗ, рдФрд░ рдЕрдВрддрд┐рдо рдПрдХред
рдЬрдм рднреА рдЖрдк рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЪрд░ рдХреЗ рдорд╛рди рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╢реЗрд▓ рд╕рдВрдШрдирди рд╕рдВрдЪрд╛рд▓рдХ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ
^
(рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рд░ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддрд╛рд░ рдирд╣реАрдВ)ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрджрдд рд╕реЗ рдмрд╛рд╣рд░ рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
; flags = abc ; files = file1 file2 ; echo -$flags $files.b -a -b -c file1.b file2.b ; echo { echo -$flags $files.b } {echo -^$flags $files^.b}
рдЪрд░ рдХреА рд╕реВрдЪреА рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рджрд╛рдИрдВ рдУрд░ рдХреА рд╕реВрдЪреА рдореЗрдВ рдмрд╛рдИрдВ рдУрд░ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рддрддреНрд╡ рд╣реИрдВ, рддреЛ рдЕрдВрддрд┐рдо рдЪрд░ рдХреЛ рдмрд╛рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА, рдФрд░ рдкрд┐рдЫрд▓реЗ рдЪрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рддрддреНрд╡ рд╣реЛрдЧрд╛ред
; list = abcd ; (head tail) = $list ; echo $head a ; echo $tail bcd ; (xy) = (3 5) ; (xy) = ($y $x) ; echo 'x='^$x 'y='^$y x=5 y=3
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рдмреНрд▓реЙрдХ рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЪрд░
$*
, рд╕рд╛рде рд╣реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрд░рд╛рдореАрдЯрд░
$1
,
$2
, .... рдореЗрдВ рд╣реИрдВред
рд╕реНрдХреЛрдк
рдХреЛрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдкрдирд╛ рджрд╛рдпрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдЖрдк рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░
=
рдФрд░
:=
рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдореМрдЬреВрджрд╛ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ рдпрд╛ рд╡рд░реНрддрдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЪрд░ рдмрдирд╛ рджреЗрдЧрд╛ред рджреВрд╕рд░рд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рдирдпрд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдкреБрд░рд╛рдиреЗ рдорд╛рди (рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рдерд╛) рдХреЛ рдЪрд╛рд▓реВ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рддрдХ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред
; a = 1 ; { a = 2 ; echo $a } 2 ; echo $a 2 ; { a := 3; echo $a } 3 ; echo $a 2 ; { b := 4; echo $b } 4 ; echo b is $b b is
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн
рдЪрд░ рдирд╛рдо
$
рдЕрдХреНрд╖рд░ рдХреЗ рдмрд╛рдж рдХреА рд░реЗрдЦрд╛ рд╣реИред рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪрд░ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
; 'var' = 10 ; echo $var 10 ; ref = 'var' ; echo $$ref 10 ; echo $'var' 10 ; echo $('va' ^ r) 10
рдЕрд╡рд░реЛрдзрди рдХрдорд╛рдВрдб рдЖрдЙрдЯрдкреБрдЯ
рджрд░рдЕрд╕рд▓, рдпрд╣ рд╡рд┐рд╖рдп рдХрдорд╛рдВрдб рдХреЗ рд▓реЙрдиреНрдЪ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕реЗ рдЕрдм рддрдХ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдмрд╣реБрдд рд╣реА рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЙрджреНрдзрд░рдгреЛрдВ рд╕реЗ рдорд┐рд▓реЛ рдЬреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рддреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред
`{}
( `{}
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ $ifs
рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрджрд┐ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рддреАрди рд╡рд░реНрдгреЛрдВ рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ: рд╕реНрдкреЗрд╕, рдЯреИрдм; рдФрд░ рд▓рд╛рдЗрди рдлрд╝реАрдб)"{}
( "{}
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдЗрд╕реЗ рдПрдХ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд┐рдВрдЯрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ - рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╕рдВрдШрдЯрди)
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ,
ls
рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд▓реЛрдб рдХрд░реЗрдВред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдореЗрдВ рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ,
`{}
рдХрд╛ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ - рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
; ifs := "{unicode -t 0A} ; files := `{ ls / } ; echo $#files 82 ; ls / | wc -l 82
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╢реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
; files2 := /* ; echo $#files2 82
рдмрд┐рд▓реНрдЯ-рдЗрди рдХрдорд╛рдВрдб
рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдорд╛рдВрдб рд╣реИрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдФрд░ред
рдирд┐рдпрдорд┐рдд рдЖрджреЗрд╢ рдЙрд╕реА рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
; run /lib/sh/profile ; load std ; unload std ; exit
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрдЬреНрдЮрд╛рдУрдВ рдХреЛ
${ }
рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реЗ (рд╕реНрдЯреИрдбрдЖрдЙрдЯ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╡реЗ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреАрд▓) рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдпрд╛рдиреА рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдорд┐рдд рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдпрд╛ рдЪрд░ рдХреЛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб
${quote}
рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЧрдП рддрд╛рд░ рдХреА рд╕реВрдЪреА рд╕реЗ рдмрдЪ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░
${unquote}
рд╡рд┐рдкрд░реАрдд рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд▓рд╛рдЗрди рдХреЛ рддрд╛рд░ рдХреА рд╕реВрдЪреА рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
; list = 'ab' cd ; echo $list abcd ; echo ${quote $list} 'ab' cd ; echo ${unquote ${quote $list}} abcd
рдпрджрд┐, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рдореИрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ "рдирдВрдЧреЗ рд╢" рдкрд░ рдЗрди рдЕрддреНрдпрдВрдд рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдмреЗрд╢рдХ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ,
рдПрд╕рдЯреАрдбреА рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирдЧреНрди рд╢ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд░реБрдЪрд┐ рдХрд╛ рд╣реИред
рд╕рдм рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рдЪрд░
- рд▓рд╛рдЗрди рдФрд░ рд▓рд╛рдЗрди рд╕реВрдЪреА
- рдХреЛрдб рдмреНрд▓реЙрдХ рдФрд░ рдЙрдирдХреЗ рдкреИрд░рд╛рдореАрдЯрд░
рд╣рдо рдЕрдкрдиреЗ "рдХрд╛рд░реНрдп" рдХрд░рддреЗ рд╣реИрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдХреЛрдИ рднреА рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд╣рд╛рдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХрдорд╛рдВрдб рд╣реИ, рдФрд░ рдмрд╛рдХреА рд▓рд╛рдЗрдиреЗрдВ рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рдФрд░ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдЪрд░ рдореЗрдВ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдХреЛрдИ рднреА рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ
$*
,
$1
рдЖрджрд┐ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
; hello = { echo Hello, $1! } ; $hello World Hello, World!
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рднрд╛рд╡рдирд╛ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд░реА рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред :)
; greet = {echo $1, $2!} ; hi = $greet Hi ; hello = $greet Hello ; $hi World Hi, World! ; $hello World Hello, World!
рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг - рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
; list = abcdef ; { echo $3 } $list c
рдЖрдкрдХреЗ рд▓рд┐рдП рдмрдирд╛рдирд╛
рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рдФрд░ рдЕрдЧрд░ рдореИрдВрдиреЗ рдПрдХ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмрдирд╛рдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдкреВрд░реНрдг-рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдерд╛ (рд▓реВрдк рдХреЛ рдПрдХ рдмрд╛рд░ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рддреЛ)ред
; do = { $* } ; dont = { } ; if = { (cmd cond) := $* { $2 $cmd } $cond $do $dont } ; for = { (var in list) := $* code := $$#* $iter $var $code $list } ; iter = { (var code list) := $* (cur list) := $list (next unused) := $list $if {$var=$cur; $code; $iter $var $code $list} $next } ; $for i in 10 20 30 { echo i is $i } i is 10 i is 20 i is 30 ;
рджрд┐рд▓рдЪрд╕реНрдк рдЫреЛрдЯреА рдмрд╛рддреЗрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдирд╛рдо рд╕реНрдерд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЙрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ рдЬрд┐рдирдХрд╛ рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИред рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреА рд╢реБрд░реБрдЖрдд
#!/dis/sh -n
рд╕реЗ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
loaded
рдЗрди-рдХрдорд╛рдВрдб рд╕рднреА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдорд╛рдВрдб рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдФрд░
whatis
рдмрд┐рд▓реНрдЯ-рдЗрди рдХрдорд╛рдВрдб рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕, рдлрдВрдХреНрд╢рдиреНрд╕, рдХрдорд╛рдВрдбреНрд╕ рдЖрджрд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рд╢реЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░
$autoload
рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рдореЙрдбреНрдпреВрд▓ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рд╢реЗрд▓ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рд╢реЗрд▓ рдореЗрдВ рд╕рд┐рдВрдереИрдЯрд┐рдХ рд╢реБрдЧрд░ рд╕рдкреЛрд░реНрдЯ рд╣реИ:
&&
рдФрд░
||
ред рдпреЗ рдСрдкрд░реЗрдЯрд░ рдирдВрдЧреЗ рд╢ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдЯ-рдЗрди
and
or
рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдирдВрдЧреЗ рд╢ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ
рдПрд╕рдЯреАрдбреА рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП рдЖрдк
load std
рдмрд╛рдж
&&
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
; echo { cmd && cmd } {and {cmd} {cmd}} ; echo { cmd || cmd } {or {cmd} {cmd}}
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдореНрдмреЛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЬрдм рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ sh рдХрдорд╛рдВрдб рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЗрди рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ
sh (2) рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред
рдЪрд░ рдХреА рд╕реВрдЪреА рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХреА рд╢реИрд▓реА рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ рдХрд┐, рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЦреЛрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЪрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдврд╛рд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ - рдЬрдм рдЙрдирдХрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЬрд╣рд╛рдВ рднреА рдЖрдк рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдпрд╣ рд╕реЛрдЪреЗ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреМрди рд╕реЗ рдкреНрд░рддреАрдХ рд╣реИрдВред
рд╕рд╛рд░рд╛рдВрд╢
рдпрд╣ рд▓рдШреБ рд▓реЗрдЦ рдЗрдиреНрдлрд░реНрдирд┐рдпрди рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд╕рдВрджрд░реНрдн рдЧрд╛рдЗрдб рд╣реИред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ, рдореВрд▓ рд╢реЗрд▓ рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрд╛рдлреА рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ - рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рдеред
sh(1) , ,
$apid
,
$prompt
, - ,
sh
., .
/, :
! ┬л┬╗ , , if for ( , raise
std тАФ ..
/bin/false
:)
run
).
, . ,
sh-std(1) :
- (
and
, or
, if
) - (
!
, ~
, no
) - (
apply
, for
, while
, getlines
) - рджреЛрдиреЛрдВ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдкреНрд░рдХрд╛рд░ (
fn
, subfn
) - рдЕрдкрд╡рд╛рдж рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо (
raise
, rescue
, status
) - рдХрд╛рдо рддрд╛рд░, рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ (
${hd}
, ${tl}
, ${index}
, ${split}
, ${join}
) - рдЖрджрд┐
рд▓реЗрдХрд┐рди рдпреЗ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рд╕реНрд╡рдпрдВ рд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рд╣реА рддреБрдЪреНрдЫ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд░рд╣рддрд╛ рд╣реИ!