Fish-shell: && рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЬреВрди 2012  ┬╖  98рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fish-shell/fish-shell

cd .. && pwd рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ:

fish: Expected a command name, got token of type 'Run job in background'. Did you mean 'COMMAND; and COMMAND'? See the help section for the 'and' builtin command by typing 'help and'.
cd .. && pwd

рдЬрд╛рд╣рд┐рд░ рд╣реИ рдореИрдВ COMMAND; and COMMAND рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдордЫрд▓реА рдиреЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред

рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

|| рднреА рдЕрдЪреНрдЫрд╛ рд░рд╣реЗрдЧрд╛ред

рд╕рднреА 98 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

|| рднреА рдЕрдЪреНрдЫрд╛ рд░рд╣реЗрдЧрд╛ред

рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
'||' рдФрд░ '&&' рд╕рд┐рдВрдЯреИрдХреНрд╕ рддрддреНрд╡ рд╣реИрдВ, рдЬрдмрдХрд┐ 'рдФрд░' рдФрд░ 'рдпрд╛' рд╕рд░рд▓ рдХрдорд╛рдВрдб рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд░рд▓ рдФрд░ рд╕реНрд╡рдЪреНрдЫ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рддрддреНрд╡реЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдмреИрд╢ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИред

рдореИрдВ && рдФрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╡реЛрдЯ рджреВрдВрдЧрд╛ || рдЪреВрдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ wrt рдХрд░рдирд╛ рд╡рд╛рдХрдИ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдХреНрд╕рдлреНрд▓ рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП +1ред

рдореИрдХреНрд╕рдлреНрд▓ рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП +1ред

рд░реВрдмреА рдореЗрдВ and рдФрд░ or рдХреАрд╡рд░реНрдб рднреА рд╣реИрдВред

+1

рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

-1 рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП &&/|| рдФрд░ +1 to maxfl. рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреНрдпреЛрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдирд╣реАрдВ рд╣реИ, рдмреИрд╢ рдореЗрдВ рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ рдФрд░ рдордЫрд▓реА рдореЗрдВ рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдпрд╣ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрдХрд╛рд░ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА '; рдпрд╛' рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рд▓реЗрддрд╛ рд╣реИ рдЬреИрд╕реЗ '||'ред

рдореБрдЭреЗ and рдФрд░ or рдХрдорд╛рдВрдб рдХреА рд╕рд╛рджрдЧреА рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдЕрдЬреАрдм рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

if begin ; [ a = b ] ; and [ c = d ] ; end
   ...

рдХреА рддреБрд▓рдирд╛ рдореЗрдВ

if [ a = b ] && [ c = d ]
    ...

рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ?

if test a = b -a c = d # or [ ] syntax, but I didn't particularly liked it
    ...

рд▓реЗрдХрд┐рди рдЬрдмрдХрд┐ рдпрд╣ test рдмрд┐рд▓реНрдЯрд┐рди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХрд╣реАрдВ рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ a рдФрд░ b рдХреЛ c рдФрд░ d рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд╛рдкрд╕ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░, рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рдереЗред

and b
and begin
    c
    d
end

рдпрд╛ рдмреНрд▓реЙрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ if ред

if begin
        a
        and b
    end
    c
    d
end

рдпрд╛ рдиреЗрд╕реНрдЯреЗрдб рдХрдВрдбреАрдЯреЛрдирд▓ рдмрдирд╛рдПрдВред

if a
    if b
        c
        d
    end
end

рдлрд┐рд░ рд╕реЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╣реИрдХ рдХреА рдХрд┐рддрдиреА рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди searchco.de рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ && рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреНрдпрд╛рджрд╛рддрд░ test рдмрд┐рд▓реНрдЯрд┐рди (рдпрд╛ рд╕рд╛рдЗрдб-рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ fish рдХреЛ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдПрдХ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА [ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рд░рд╣рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реИрд╕реЗ рднреА рдмрд╛рдЗрдирд░реА рд╣реИ (рдЬреИрд╕реЗ test )ред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╣рд╛рдБ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╣реИ ( [[ рд╡рд┐рдкрд░реАрдд рдЬреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдордЫрд▓реА рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ)ред

рджреЛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рддреАрди) рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдХрд┐рд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

if a
    b
end
a; and b
a && b

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ && рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдЖрдзрд╛ рд╕рдЪ рд╣реИред ;and рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рдареАрдХ рдЙрддрдиреЗ рд╣реА рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рд▓рдЧрддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ & рдореЗрдВ Shift рд╢рд╛рдорд┐рд▓ рд╣реИ)ред && рдЬреЛрдбрд╝рдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реЗрдЧрд╛ (рдлрд┐рд░ рдлрд┐рд░, and рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рдж begin рдЬреИрд╕реЗ рдХреАрд╡рд░реНрдб рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ; and рдФрд░ ; or рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИрдВ - рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рд╣реЛрдВрдЧреЗред рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рджреБрдИ рд╣реИрдВ (рд╡реЗ рдХреЗрд╡рд▓ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ $status рдЪрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ && рдФрд░ || рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ || ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реЛрдЪрдирд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ ; and рдФрд░ ; or , рд▓реЗрдХрд┐рди рдореБрдЭреЗ && рдФрд░ || рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдмрд╢рд░реНрддреЗ рдХрд┐ рдкреБрд░рд╛рдиреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдкрд╢реНрдЪ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВ ; and рдФрд░ ; or рд╕рд╛рде рд░рд╣рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рд╢рд╛рдпрдж рдЕрдЧрд░ begin рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ рдмреИрд╢ рдореЗрдВ рдмреНрд░реЗрд╕рд┐рдЬрд╝) ... рд▓реЗрдХрд┐рди рдпрд╣ рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред

рдПрдХ рдмрд┐рд▓реНрдЯрд┐рди рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ [[ рдЬреИрд╕реЗ рдмреИрд╢ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рддреЗрдЬрд╝ рд╣реЛрдЧрд╛ (рджреЗрдЦреЗрдВ: рдмрд┐рд▓рд┐рди рдЗрдХреЛ) рдФрд░ рдпрд╣ && рдФрд░ || . рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ [[ рдФрд░ ]] рдХреЗ рднреАрддрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдФрд░/рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХреНрдпреЛрдВрдХрд┐ [[ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдорд╛рдВрдб рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдмреИрд╢ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ [[ [ (рдЬреНрдпрд╛рджрд╛рддрд░) рдХреА рддрд░рд╣ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЙрджреНрдзрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдирд┐рдпрдо рд╣реИрдВред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдордЫрд▓реА рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ , рдСрд░реНрдереЛрдЧреЛрдиреИрд▓рд┐рдЯреА рдХрд╛ рдирд┐рдпрдо рдФрд░ рдЦреЛрдЬ рдпреЛрдЧреНрдпрддрд╛ рдХрд╛ рдирд┐рдпрдо рджреЗрдЦреЗрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрднрдЧ рдпрдХреАрди рд╣реИ рдХрд┐ [ рдЦреЛрдЬ рдпреЛрдЧреНрдпрддрд╛ рдХреЗ рдирд┐рдпрдо рдФрд░ рдСрд░реНрдереЛрдЧреЛрдиреИрд▓рд┐рдЯреА рдХреЗ рдирд┐рдпрдо рдХреЗ рдХрд╛рд░рдг рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ /usr/bin рдореЗрдВ рдмрд╛рдЗрдирд░реА рд╣реИред test рдЕрдзрд┐рдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рдЯреИрдм рдкреВрд░реНрдгрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдирд╛ рдордирдорд╛рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрд┐рд▓рд┐рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрд╢ рдореЗрдВ [[ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рддрд╛рд░реЛрдВ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реИред

[[ abc = $variable ]]

рд▓реЗрдХрд┐рди рдордЫрд▓реА рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рд╡рд┐рднрд╛рдЬрди рд╡реНрдпрд╡рд╣рд╛рд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд╕рд╛рде рд╣реА, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ && , || , < , рдФрд░ > рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдордЫрд▓реА рдореЗрдВ, && рд╣реИ -a , || рд╣реИ -o ред < рдФрд░ > рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕рдореЗрдВ =~ рдСрдкрд░реЗрдЯрд░ рднреА рд╣реИред рдореЗрдВ fish , рдЖрдк рдЙрд╕рдХреЗ рд▓рд┐рдП рд╢рд╛рдВрдд grep рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

echo $ANSWER | grep -qE '^y(es)?$'

рд╕рд╛рде рд╣реА, bash рдореЗрдВ < рдФрд░ > рдСрдкрд░реЗрдЯрд░ рд╣реИред рд╡реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЬреЛ рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдиреНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред

рдФрд░, = рдФрд░ != рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдк рдЧреНрд▓реЛрдмрд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рдЖрдк рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, рдЙрд╕рдХреЗ рд▓рд┐рдП рд╢рд╛рдВрдд grep рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

[[ abc = a* ]]

рд╕рд╛рде рд╣реА, [[ рдХреЛ -e , -nt , -ot , -ef , рдФрд░ ! рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдордЫрд▓реА рдореЗрдВ рдпреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА test рдмрд┐рд▓реНрдЯрд┐рди рдореЗрдВ рд╣реИрдВред

[[ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдмрд╕ рдПрдХ рдФрд░ рдХреАрд╡рд░реНрдб рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреЛрдЬрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛ред рдПрдХрдорд╛рддреНрд░ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ =~ , рд▓реЗрдХрд┐рди рд╢рд╛рдВрдд grep (рдпрд╛ рдкрд░реНрд▓) рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рд╡рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рд╕рдм рдХреБрдЫ рдЦреЛрд▓ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЦреИрд░, рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдмреИрд╢ рдХреЗ [[ рдмрд┐рд▓рд┐рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐, рдЗрд╕реЗ рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдордЫрд▓реА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреАрд╡рд░реНрдб рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╕рд╛рдЭрд╛ рдХрд░рддреА рд╣реИ рдЬреЛ рдмреИрд╢ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреИрд╕реЗ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдиреЗ рдЬреЛ рдХрд╣рд╛ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ test рдХрд░рдирд╛ рдПрдХ рдмреЗрд╣рддрд░ рдирд┐рд░реНрдорд╛рдг рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ cond , рдЬреИрд╕реЗ рдХрд┐ рдХреИрд╕реЗ fish рдЗрд╕рдХреЗ рдмрдЬрд╛рдп math рдмрд┐рд▓рд┐рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ expr ред рд╣рдо < рдФрд░ > рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рд╛рдХреГрддрд┐рдХ (рд╕рдВрдЦреНрдпрд╛рддреНрдордХ) рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░ рднреА рдХрд╛рдо рдХрд░ рд╕рдХреЗред

@Undeterminant рдмрд┐рд▓рд┐рди [[ рдмрдирд╛рдо
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреИрд╢ рдХреА рднрд╛рд╡рдирд╛ [[ рдСрд░реНрдереЛрдЧреЛрдиреИрд▓рд┐рдЯреА рдХреЗ рдХрд╛рдиреВрди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреА рд╣реИ - рдпрд╣ "рдареАрдХ рдХрд░рддрд╛ рд╣реИ" рдФрд░/рдпрд╛ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдбрдВрдмрдирд╛ рд╣реИ рдХрд┐ рдмреИрд╢ рдХрд╛ if commands...; then ...; fi рдЖрд╕рд╛рдиреА рд╕реЗ рдордЫрд▓реА рдФрд░/рдпрд╛ if...then рдмреАрдЪ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдо "рддрдм" рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдареАрдХ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ рд╢реБрд░реБрдЖрдд...рдЕрдВрдд рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ред

рдпрд╣рд╛рдБ рдПрдХ рдЕрдЬреАрдм рд╡рд┐рдЪрд╛рд░ рд╣реИ (рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ):

if (foo; and bar)
  ...
end

рд╡рд░реНрддрдорд╛рди рдореЗрдВ (...) рдХрдорд╛рдВрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрд╡реИрдз рд╣реИ; рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрдарди рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдорд╛рдВрдб рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ eval рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЕрдЧрд░ рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕реАрдзреЗ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХрднреА рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рддреЛ рд╣рдо рдХреЗрд╡рд▓ (...) рдХрд╛ рдЕрд░реНрде begin ...; end рдкреБрди: рдЙрджреНрджреЗрд╢реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХреЛ рдХреИрдкреНрдЪрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЕрд╕рдВрдЧрдд рд╣реИ - рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рд╕рд╛рдл рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ред

рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдирдлрд░рдд рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ if (...) рдПрдХ рдФрд░ рдЕрд░реНрде рдХреЗ рд▓рд┐рдП рднреАрдЦ рдорд╛рдБрдЧрддрд╛ рд╣реИ: рдЖрдЙрдЯрдкреБрдЯ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рдмреВрд▓рд┐рдпрди рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП if (math 2 \< 4) - math рдХреЛрдИ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣ 0 рдпрд╛ 1 рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ if $saved_bool ред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ - рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдмреВрд▓рд┐рдпрди рдЕрд░реНрдереЛрдВ рдХрд╛ рдПрдХ рднреА рд╕рд╣реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ 0/1 рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ if (...) рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рдЕрдиреБрдорд╛рди рд▓рдЧрддрд╛ рд╣реИред

рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдмреИрд╢ рдФрд░ zsh рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рд╢реЗрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдордЫрд▓реА рдХреА рдкрдХрдбрд╝ рдЙрддрдиреА рд╣реА рдмреЗрд╣рддрд░ рд╣реЛрдЧреАред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдордЫрд▓реА рдХреЛ рдмреЗрд╣рддрд░ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЫреЛрдЯреА рдмрд╛рдзрд╛рдПрдВ рдЗрд╕реЗ рд▓рд╛рдн рд╕реЗ рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рдмрдирд╛ рд░рд╣реА рд╣реИрдВ, рдЬрдм 15 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд╢реЗрд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдЖ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП .

рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ && рдХреЛ "рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЫреЛрдЯреА рдмрд╛рдзрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рдпрд╣ рд╕реАрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдордЫрд▓реА рдХреЛ "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╢реЗрд▓" рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ zsh рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рдордЫрд▓реА рд╢реБрд░реВ рд╕реЗ рдЕрдВрдд рддрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж command1; and command2 рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ and рдХреА рдПрдХ рд╕рд╢рд░реНрдд рдирд┐рд╖реНрдкрд╛рджрди рд╣реИ command2 рдФрд░ рдмрд╕ рдХреБрдЫ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдирд╣реАрдВ command1 рдФрд░ command2 ред

рд▓реЗрдХрд┐рди @Undeterminant , рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕реЗ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рдЖрджрд┐ред рдЙрд╕ рднрд╛рд╡рдирд╛ рдпрд╛ рдкреНрд░рд╡реАрдгрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рдЖрдиреЗ рджреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкреБрд░рд╛рдиреЗ рд▓рд┐рдЧреЗрд╕реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВ рдФрд░ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣реВрдВ рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╣рд░ рдЙрд╕ рдЪреАрдЬ рдХреЛ рддреБрд░рдВрдд рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╖рдорддрд╛рдПрдБ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдБ рдордЫрд▓реА рд╕реЗ рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рд▓рд╛рдЗрди рдирдВрдмрд░ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдБ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рдкреБрд░рд╛рдиреЗ рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рднреАрддрд░ рд╣реИред

рдореИрдВ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрдХреНрд╖рдкрд╛рддреА рд╣реИ рдЬреЛ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдмрдирд╛рдо рдПрдХ рдмрдбрд╝реЗ рдХреВрдмрдбрд╝ рдХреЗ рдКрдкрд░ рд╕реЗ рдЧреБрдЬрд░рдирд╛ред рдХреГрдкрдпрд╛ рдЧрд▓рдд рди рд╕рдордЭреЗрдВ, рдЕрдЧрд░ рдореБрдЭреЗ рдордЫрд▓реА рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдЗрдирдкреБрдЯ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрднреА zsh рдкрд░ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рддрд░реНрдХ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджреНрд╡рд╛рд░ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

рддреЛ рд╣рд╛рдБ, рдЖрдк рдкрдардиреАрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреЗ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдВред

@ylluminate рдЖрдк рдЦреБрдж рдХреЛ рдмреЗрд╡рдХреВрдл рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рднрд▓реЗ рд╣реА рдордЫрд▓реА рдиреЗ && рд╣реЛ, рдлрд┐рд░ рднреА рдЖрдк рдмреИрд╢ рдпрд╛ zsh рд╕реЗ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рд▓реЙрдЬрд┐рдХрд▓ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдВрддрд░ рд╣реИрдВред

рдмрд┐рд▓реНрдХреБрд▓ред рдордЫрд▓реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реАрдзреЗ рдХреЛрдб рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдмреИрд╢ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдордЫрд▓реА рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдмрд╕ рдЗрд╕реЗ рдмреИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВ; рд╡реЗ рдЕрд▓рдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП
рдпрджрд┐ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ
рдХрдорд╛рдВрдб1 && рдХрдорд╛рдВрдб2
рдордЫрд▓реА рдореЗрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реВрдБ
рдХрдорд╛рдВрдб 1; рдФрд░ рдХрдорд╛рдВрдб2

рдХреНрдпрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ) рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдХреНрд▓реАрдирд░, рдЕрдзрд┐рдХ рднрд╡рд┐рд╖реНрдпрд╡рд╛рджреА рдФрд░ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ?

рдпрд╣ рдХреНрд▓реАрдирд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдмрдирд╛рддрд╛ рд╣реИред

рдмреИрд╢ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

foo & bar # executes foo in the background, then bar in the foreground
foo && bar # executes foo in the foreground, then executes bar if foo has a zero exit status
foo & bar && baz & qux # left as an exercise for the reader

рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдмрдХрд╡рд╛рд╕ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрдЬрд╛рдп рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд▓рд╛рдЧрдд рд▓реЗрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдмрдпрд╛рди рдореЗрдВ, рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕реЗ "рдЗрд╕рдХреЗ рдбрд┐рдЬрд╛рдЗрди рджрд░реНрд╢рди рдХреЗ рднреАрддрд░ рдордЫрд▓реА рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЦреЛрдЬрдиреЗ" рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, "рдЪрд▓реЛ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдХреА рддрд░рд╣ рдордЫрд▓реА рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЦреЛрдЬреЗрдВред"

рдЖрдкрдХрд╛ рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдареАрдХ рд╣реИ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде & рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)?

foo &
if bar
    baz
end &
qux

рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рд▓реНрдкрдирд┐рдХ рд▓рдЧрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдпрджрд┐ & рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрддрдирд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рддреЛ рдХреНрдпреЛрдВ рди background рдмрд┐рд▓реНрдЯрд┐рди, рдпрд╛ рдХреБрдЫ рдФрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдП?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

; and рдФрд░ ; or рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред condition; and echo stuff | grep stuff рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛, рдЬрдмрдХрд┐ condition && echo stuff | grep stuff рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

and echo stuff | grep stuff рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЯреВрдЯрд╛ рд╣реИ?

@ridiculousfish рдпрд╣рд╛рдБ рд╡рд╣ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдордЫрд▓реА рдХреЛ

root@smogon-dev ~# test 0 = 1; or echo stuff | grep stuff
stuff
root@smogon-dev ~# echo $status
0
root@smogon-dev ~# if test 0 = 1; or echo stuff | grep stuff
                       echo Success
                   else
                       echo Failure
                   end
Failure

рдмреИрд╢ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ:

~/smogon/bin$ [[ 0 == 1 ]] || echo stuff | grep stuff
stuff
~/smogon/bin$ echo $?
0
~/smogon/bin$ if [[ 0 == 1 ]] || echo stuff | grep stuff; then
> echo Success
> else
> echo Failure
> fi
stuff
Success

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ:

if test 0 = 1; or echo stuff | grep stuff

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛:

if test 0 = 1
    or echo stuff | grep stuff
    ...

or рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЕрдЧрд░ рдмреЙрдбреА рдореЗрдВ рд╣реИ! рдЪреВрдВрдХрд┐ рдмреВрд▓рд┐рдпрди рдХрдорд╛рдВрдб рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдкрд╛рд╕ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдк "рдХреЛрд╖реНрдардХ" рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн/рдЕрдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

if begin; test 0 = 1; or echo stuff | grep stuff ; end
    ...

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рдЗрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдмрдЧ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд░рд╛рдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдордЫрд▓реА рдХреЛ рдмреВрд▓рд┐рдпрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП :)

рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рд▓рдЧрд╛рдИ рдЧрдИ рдКрд░реНрдЬрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВред

рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рд╛рдорд╛рди рдмреЗрд╣рддрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдмрд╛рдд рд╣реИред
рдЖрдк рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВред рдмрд╣реБрдд рд╣реА рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬреЛрдВ рдореЗрдВ рднреА && рдХрдВрдбреАрд╢рди рдХрдорд╛рдВрдб рдХреА рд╕рдлрд▓рддрд╛ (рдирд┐рдХрд╛рд╕ 0) рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ ";" рдЬреЛ рдХреБрдЫ рднреА рд╣реБрдЖ рдЙрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╕ рдЖрдЧреЗ рдмрдврд╝реЛред рд╕рд╣реА? рддреЛ, рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдкрд░ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗред :)

рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдордЫрд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдБ, рдореИрдВ рдмрд╣реБрдд && рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБред рд▓реЗрдХрд┐рди рдпрд╣ рдиреЗрдЯ рдкрд░ рдХреЛрдб рдХреА рдХрд┐рд╕реА рднреА рд╢рд╛рдВрддрд┐ рдХреЗ рд╕рд╛рде рднреА рд╣реЛрддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ && рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рдЗрд╕реЗ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛! :рдбреА

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ ... рдХреНрдпрд╛ рдХреЗрд╡рд▓ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЫрд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдорддрд▓рдм рдмрд╕ &&) рдФрд░ рдЗрд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдмреИрд╢ рдореЗрдВ рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рдХрд░реЗрдВ? рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ? рдкреНрд░рд╢рдВрд╕рдиреАрдп? рдХрд░рдиреЗ рдпреЛрдЧреНрдп?

рдлрд┐рд░ рд╕реЗ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ "рдФрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреЗрд╣рддрд░, рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рднреА рдЙрдкрд░реЛрдХреНрдд-рд╢реБрд░реБрдЖрддреА рдмреИрд╢ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп && (... рдирд╣реАрдВ рд╣реЛрдЧрд╛ ... рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛) рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдордЫрд▓реА рдХреЛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдмреИрд╢

рд╕рднреА рдмреЗрд╣рддрд░реАрди рджреЛрд╕реНрддреЛрдВ, рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж !!

рдХреНрдпрд╛ рд╣рдо рдХрднреА рднреА bash / zsh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрдореНрдкреИрдЯ рдкрд░ рдкреВрд░реНрдг рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рдЧрдП рд╣реИрдВ? рдореИрдВрдиреЗ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ fish рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдФрд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЕрдкрдиреЗ рд╢реЗрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд▓реЗрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рд╣рдо рдХрд░реАрдм рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдПрдХ рдФрд░ рдХреЛрд╢рд┐рд╢ рджреЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдирд╣реАрдВ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рд░реНрдл рдкреЗрдбрд▓рд┐рдВрдЧ рдХрд░рддрд╛ рд░рд╣реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рджред

@rhoconlinux && рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЫрд▓реА рдмрджрд▓рдиреЗ рд╕реЗ рдЖрдкрдХреА рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рдЗрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЕрдВрддрд░ рд╣реИред

рдореБрдЭреЗ рдЖрдкрдХрд╛ рдЙрддреНрддрд░ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ ^_^
рдХреНрдпрд╛ && рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

@rhoconlinux рдирд╣реАрдВ, рдЖрдкрдХреЛ рдордЫрд▓реА рдкрд╛рд░реНрд╕рд░ (рд╕реА ++ рдореЗрдВ) рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ, рдЕрдЧрд░ рдлрд┐рд╢ рдиреЗ && рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдлрд┐рд╢ рдФрд░ рдмреИрд╢ рдХреЗ рдмреАрдЪ рдЕрдиреНрдп рд╕рднреА рдЕрдВрддрд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХреА рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рднреА рдЪрд▓рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗрдЧреАред

@kballard рдЖрдЙрдЪ! рд╣рдореНрдо... рдореБрдЭреЗ рдпрд╣ рд╕реБрдирдХрд░ рдмрд╣реБрдд рджреБрдЦ рд╣реБрдЖред рдЕрдм рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ред рд╕реБрдкрд░ рд╕реНрдкрд╖реНрдЯред :)

рд╕реБрдкрд░ рдлрд╛рд╕реНрдЯ рдлреАрдбрдмреИрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдПрдХ рдЕрдЪреНрдЫреЗ рд░реЛрдЬрд╝рдорд░реНрд░рд╛ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдордЫрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдмреИрд╢ рдЯрд░реНрдорд┐рдирд▓ рд░рдЦреВрдБрдЧрд╛ред

рдЪреАрдпрд░реНрд╕! :+1:

рдпрджрд┐ && рдПрдХ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЖрд╕рд╛рди рд╣реИред

sed 's/&&/; and /' ~/.bashrc > ~/.config/fish/config.fish

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реЛрдЧреА рдЬреЛ рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЖрдкрдХрд╛ рдорддрд▓рдм #522 рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ && рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░реЗрд░рдгрд╛ рдореМрдЬреВрджрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ
рдХреЛрдбрдмреЗрд╕ рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреБрдЫ sudo add-apt-repo... && sudo apt-get update && sudo apt-get install ... рд╕реНрдирд┐рдкреЗрдЯ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдмрд╕ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╢рд┐рдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдХрднреА рднреА рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдореЗрд╢рд╛ рд░рд╣реЗрдЧрд╛
рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдирд┐рдкреЗрдЯреНрд╕, рдФрд░ рд╡реЗ рдорд╛рдирдХ [ba]sh рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдФрд░ && рдЕрдм рддрдХ #1 рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЯрдХрд░рд╛ рд░рд╣рд╛ рд╣реВрдВред
( export FOO=bar #2 рд╣реИ рд▓реЗрдХрд┐рди function export; set -x -g (echo $argv | sed 's/=/\n/'); end рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред)

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдЧрд╣рд░реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ: рдореБрдЭреЗ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрджрдд рд╣реЛ рдЧрдИ рд╣реИ
bash , рдкреЗрд╕реНрдЯ рдХрд░рдирд╛, Ctrl+D.
рд╣рдореНрдо, рдореИрдВ рд╡рд░реНрддрдорд╛рди/рдкрд┐рдЫрд▓рд╛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд▓реБрддреНрдл рдЙрдард╛ рд░рд╣рд╛ рд╣реВрдВ
рдмреИрд╢ рдХреЗ рддрд╣рдд рдХрдорд╛рдВрдбрд▓рд╛рдЗрдиред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ:
рдореИрдВ рдПрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЙрдкрдХрд░рдг (https://github.com/andres-montanez/Magallanes) рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдмреИрд╢ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ '&&' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдВ (рдЬреИрд╕реЗ рд╕рднреА рдХрдорд╛рдВрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░рдирд╛)
рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рджрд░реНрдж рдмрд┐рдВрджреБ рд▓рд╛рддрд╛ рд╣реИред рдПрдХ рдХреЗ рд▓рд┐рдП, рдЕрдЬреАрдм рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛рдиреА рдкрд╛рде рдФрд░ рдЕрдиреНрдп рдЪрд░ рдЙрд╕реА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ), рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХреЗ рдХреБрдЫ рдореБрдЦреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╣реИрдХ рдХрд░рдирд╛, рдФрд░ рдореБрдЭреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдиреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред

&& рдХрдИ рдмреИрд╢ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реИ рдЬреЛ рдордЫрд▓реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рдмреЗрддрд╣рд╛рд╢рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЯреВрд▓ PHP рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рднреА рдорд┐рдбреА рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ PHP рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдмреЗрд╕рд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдХрдорд╛рдВрдб рдХреЛ рд╢реЗрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдиреНрдпреВрдирддрдо рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрд╕рдВрдЧрддрд┐ рдХреЛ рдорд╛рд░рдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ @cben рдиреЗ && рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рдХрд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдСрдирд▓рд╛рдЗрди рд╕реИрдХрдбрд╝реЛрдВ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ && рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдордЫрд▓реА рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреА рд╣реИ, рдЖрджрд┐ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрдирд╛ рджреЗрдЧрд╛ рдЬреЛ рдордЫрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ && рдХреЛ ; and && рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рдкрд░реЗрд╢рд╛рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдордЫрд▓реА рдХрд┐рддрдиреА рдЕрджреНрднреБрдд рд╣реИ рддреЛ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдХреАрд╡рд░реНрдб рдмрджрд▓рддреЗ рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдЗрддрдиреА рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬрд╝ рдХреНрдпреЛрдВ рдмрджрд▓рдиреА рд╣реИред рдлрд┐рд░ рдореБрдЭреЗ рдордЫрд▓реА рдХреА рд░рдХреНрд╖рд╛ рдХрд░рдиреА рд╣реИ рдФрд░ рд╡рд╣ рдордЫрд▓реА рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред
рдХрднреА-рдХрднреА рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдмреИрд╢ && рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реВрдВред

рдореИрдВ @Globegitter рдФрд░ @cben рдиреЗ рдЙрд╕рд╕реЗ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ && рдФрд░ || рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ рдлрд┐рд╢ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп рдХреНрд░реЙрд╕-рд╢реЗрд▓ рд╕рдВрдЧрддрддрд╛ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреЗрд╡рд▓ && рдФрд░ || рд╕реЗ рдкрд░реЗ рдлрд┐рд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдФрд░ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдВрддрд░ рд╣реИрдВ, рдЖрдк рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдпрд╣ рдХреНрдпреЛрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдлрд┐рд╢ рдХреЛ && рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд╛рд░реНрдердХ рд╣реЛ? рдпрджрд┐ рдЖрдкрдХреЛ рдмреИрд╢ рдХреЛрдб рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ bash рдЪрд▓рд╛рдПрдВ, рд╕реНрдирд┐рдкреЗрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕ рдордЫрд▓реА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдордЫрд▓реА рдореЗрдВ "рд░реВрдкрд╛рдВрддрд░рд┐рдд" рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдкрд╛рд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ 15 рд╕рд╛рд▓ рдХреА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ (рдЕрдиреНрдп рд╕рд░реНрд╡рд░реЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рди рдкрд░ рдореИрдВ рдордЫрд▓реА рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ) рдХрд┐ рдореИрдВ рд╕рдордп рдмрджрд▓рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдореБрдЭреЗ рдХрдИ рдорд╣реАрдиреЛрдВ рдХреЗ рджреМрд░рд╛рди рдЗрдзрд░-рдЙрдзрд░ рдШреВрдордиреЗ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ "рдордЫрд▓реА рдХрд╛ рд░рд╛рд╕реНрддрд╛" рдмрдирд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рджреВрд╕рд░реЗ рд╢реЗрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рддрд░рд╣ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд╡реЗрд╢ рдХрд░ рд╕рдХреВрдВред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЧрддрддрд╛ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдордЫрд▓реА рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдордЫрд▓реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдкрдиреА рдирдЬрд░ рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ рд░рдЦрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрд░рд┐рджреГрд╢реНрдп рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЕрдВрддрддрдГ рдордЫрд▓реА рдХреА рдУрд░ рдмрдврд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдЬрд░реВрд░рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЗрд╡рд▓ bash рдпрд╛ zsh рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрди рдЧреЛрд▓реЗ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рд╛рд╢рд┐ рд╣реЛрдЧреА рдФрд░ рдЕрдиреНрдпрдерд╛ рдЗрд╕ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдиреАрдЪреЗ рдЬрд╛рдирд╛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИред

@kballard рдореЗрд░реЗ рдкрд╛рд╕ рдордЫрд▓реА рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА 95% рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╣реИ: cmd+C рджреВрд╕рд░реЗ рд╕реНрд░реЛрдд рд╕реЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, cmd+tab рд╕реЗ iTerm, cmd+v рдФрд░ Enterред рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд bash рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ, рдФрд░ рдХреБрдЫ рдирд╣реАрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕ рд╕рдЯреАрдХ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ && рдореМрдЬреВрдж рд╣реИред рддреЛ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЗрддрдиреА рдмрд╛рд░ рдмрд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдордЫрд▓реА рдкрд╕рдВрдж рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣рдЯ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИ рдФрд░ рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдорд╛рдирддрд╛ рд╣реВрдВред

рд╣реЗрдпрд░ рдпреВ рдЧреЛред рдПрдХ рдмрд╛рд░ рдкреАрдЖрд░ #1633 рднреВрдорд┐ рдкрд░, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ ~/.config/fish/functions/fish_user_key_bindings.fish рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ:

function handle_input_bash_conditional --description 'Function used for binding to replace && and ||'
    # This function is expected to be called with a single argument of either & or |
    # The argument indicates which key was pressed to invoke this function
    if begin; commandline --search-mode; or commandline --paging-mode; end
        # search or paging mode; use normal behavior
        commandline -i $argv[1]
        return
    end
    # is our cursor positioned after a '&'/'|'?
    switch (commandline -c)[-1]
    case \*$argv[1]
        # experimentally, `commandline -t` only prints string-type tokens,
        # so it prints nothing for the background operator. We need -c as well
        # so if the cursor is after & in `&wat` it doesn't print "wat".
        if test -z (commandline -c -t)[-1]
            # Ideally we'd just emit a backspace and then insert the text
            # but injected readline functions run after any commandline modifications.
            # So instead we have to build the new commandline
            #
            # NB: We could really use some string manipulation operators and some basic math support.
            # The `math` function is actually a wrawpper around `bc` which is kind of terrible.
            # Instead we're going to use `expr`, which is a bit lighter-weight.

            # get the cursor position
            set -l count (commandline -C)
            # calculate count-1 and count+1 to give to `cut`
            set -l prefix (expr $count - 1)
            set -l suffix (expr $count + 1)
            # cut doesn't like 1-0 so we need to special-case that
            set -l cutlist 1-$prefix,$suffix-
            if test "$prefix" = 0
                set cutlist $suffix-
            end
            commandline (commandline | cut -c $cutlist)
            commandline -C $prefix
            if test $argv[1] = '&'
                commandline -i '; and '
            else
                commandline -i '; or '
            end
            return
        end
    end
    # no special behavior, insert the character
    commandline -i $argv[1]
end

function fish_user_key_bindings
    bind \& 'handle_input_bash_conditional \&'
    bind \| 'handle_input_bash_conditional \|'
end

рдпрд╣ & рдФрд░ | рдмрд╛рдВрдзрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ && рдпрд╛ || рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреБрдХреНрдд ; and / ; or , рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдк command one && command two рдлреЙрд░реНрдо рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рддрдХ рдкреАрдЖрд░ #1633 рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛, рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ _typing_ && / || рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧреА рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЪрд┐рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

@kballard рд╡рд╛рд╣, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ! рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреЛрдЬ рдореЛрдб рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИ (рдкреЗрдЬрд░ рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ; рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ)ред рдЦреЛрдЬ рдХреЗ рджреМрд░рд╛рди & рдпрд╛ | рдорд╛рд░рдиреЗ рд╕реЗ рдЦреЛрдЬ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдХрдорд╛рдВрдб рдореЗрдВ | рдпрд╛ & рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЧрдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред

@kballard рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдкреАрдЖрд░ рдЙрддрд░рд╛ рд╣реИред рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЪрд┐рдкрдХрд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ && рдирд╡реАрдирддрдо рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рд╛рдБ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

-рдХреЗрд╡рд┐рди

1 рд╕рд┐рддрдВ, 2014 рдкрд░ 1:14 AM рдкрд░, рдорд╛рд░реНрдХрд╕ Padourek [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

@kballard рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдкреАрдЖрд░ рдЙрддрд░рд╛ рд╣реИред рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЪрд┐рдкрдХрд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд╡реАрдирддрдо рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде && рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

рдореИрдВрдиреЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдирдП 2.1.1 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдореБрдЭреЗ 2.2 рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛? рдзрдиреНрдпрд╡рд╛рдж!

@pragmattica : 2.1.1 рд╕реБрд░рдХреНрд╖рд╛

@xfix : рдареАрдХ рд╣реИред рдореБрдЭреЗ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред 2.2 рддрдХ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛!

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ :+1 :

рдХреЛрдИ рдЪрд▓ рд░рд╣рд╛ рдЪреИрдВрдЬ рдЙрдкрд▓рдмреНрдз рд╣реИ? рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ CHANGELOG рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╣реИред

@pragmattica рдЕрдм рд╡рд╣ рдордЫрд▓реА 2.2 рдмрд╛рд╣рд░ рд╣реИ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ ubuntu 14.04 рдФрд░ echo 'test1' && echo 'test2'; рдкрд░ echo test1 &; and echo 'test2';

рдХреНрдпрд╛ fish_user_key_bindings.fish рднреАрддрд░ рдХрд╣реАрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ? (рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдлрд┐рд╢/рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреНрдЮрд╛рди рдереЛрдбрд╝рд╛ рдЕрд╕реНрдерд┐рд░ рд╣реИ)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк && рд╕рд╛рде рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рдмрд╛рдж рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдмрдврд╝рд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдзрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ :)

-1 рдЕрдЬреАрдм рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП:

if [[ a = b ]]; and [[ b = a ]]; or [[ c = b ]]; then echo hello; and echo world; done

рд╕рд░рд▓ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП +1:

if [[ a = b ]] && [[ b = a ]] || [[ c = b ]]; then echo hello && echo world; done

Aaahhh рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ @pragmattica рдХрдорд╛рдВрдб commandline рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЙрджреНрдзрд░рдг-рдЪрд┐рд╣реНрди рдХреЗ рдмрдлрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рд╛рдБ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рддреЛ рдПрдХ рдмрд╛рд░ https://github.com/fish-shell/fish-shell/issues/2210 рддрдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рднреА рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рд╢реБрд░реВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ?

+1
рдкреНрд░рддреАрдХ рдЕрдЬреАрдм рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рд╕рдВрдЧрддрддрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рд╣реИ, рдФрд░ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдмреБрд░рд╛ рдЖрджрдореА рдмрдирдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред рдЗрд╕ рдкрд░ рдЕрдорд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрдорд╛рдВрдб рдХреЛ рдХрдЯ рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ" рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рджрд┐рдП рдЧрдП рдмрдпрд╛рдиреЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реВрдВред рднрд▓реЗ рд╣реА рдордЫрд▓реА рдиреЗ && рдФрд░ || рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реЛ, рдЬреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдк рдЙрди рдСрдкрд░реЗрдЯрд░реЛрдВ рд╡рд╛рд▓реЗ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдЯ рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдпрд╣ рдЖрднрд╛рд╕ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдпрджрд┐ рдЖрдк рдмреИрд╢/рдЬрд╝рд╢ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЙрди рдЧреЛрд▓реЗ (рдпрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдЕрдкрдиреЗ рдореБрджреНрджреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ [[ ... ]] рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдпреЛрдЧреНрдпрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ ksh88 (рдмреИрд╢ рдирд╣реАрдВ) рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЙрди рд╡рд┐рд╢реЗрд╖ рдЯреЛрдХрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдмрд┐рд▓реНрдЯрд┐рди test рдХрдорд╛рдВрдб рдпрд╛ рдПрдХ рдирдпрд╛ рдХрдорд╛рдВрдб рдмрдврд╝рд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рдореИрдВ рдЕрднреА рднреА zsh рдФрд░ bash рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЗрд╕ рдзрд╛рд░рдгрд╛ рд╕реЗ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рд╣реВрдВред рдореИрдВ рддрд░реНрдХ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВред рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдордЫрд▓реА рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд░реЛрдз рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдкреАрдЫреЗ рд╣рдЯ рдЧрдпрд╛ред рдпрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлреЛрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдХреБрдЫ рдЕрд╡рд╕рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдореЗрдВ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдЬреЛ рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдирд┐рд░рдВрддрд░ рдкреНрд░рддрд┐рд░реЛрдз рдХреЛ рджреЗрдЦрдХрд░ рджреБрдЦ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрддрдГ рдЖрдЧреЗ рдХреА рдЧрддрд┐ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

@ylluminate "zsh рдФрд░ bash рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдХреЗ" рдЖрдкрдХреЗ рдорди рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рдЖрдк рдХрд┐рд╕ рд╕реНрддрд░ рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдореИрдВ рдЕрднреА рднреА zsh рдФрд░ bash рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЗрд╕ рдзрд╛рд░рдгрд╛ рд╕реЗ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рд╣реВрдВред рдореИрдВ рддрд░реНрдХ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдБ ...

рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдореИрдВ рдордЫрд▓реА рд╕рдорд░реНрдерди рдмреИрд╢ рдФрд░ zsh рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рддрд░реНрдХ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ C++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ? рдпрджрд┐ рдЖрдк рдкрд░реНрд▓ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ? рдЬреИрд╕рд╛ рдХрд┐ @ridiculousfish рдиреЗ рдЕрднреА рдкреВрдЫрд╛, рдХреБрдЫ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдордЫрд▓реА рдХреЛ рдЖрдкрдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рд╕рдорд░реНрдерди рджреЗрдирд╛ рд╣реЛрдЧрд╛? рдордЫрд▓реА рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдФрд░ рдмреИрд╢ рдХреНрд▓реЛрди рдмрди рдЬрд╛рддреА рд╣реИ?

рдкреБрдирд╢реНрдЪ, рдореИрдВ 1979 рд╕реЗ рдЬреАрд╡рдирдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ 80 рдХреЗ рджрд╢рдХ рдХреЗ рдордзреНрдп рд╕реЗ UNIX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреЛрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЙрд░реНрди, рд╕реАрдПрд╕рдПрдЪ, рдХреЗрдПрд╕рдПрдЪ 88, рдХреЗрдПрд╕рдПрдЪ 93, рдмреИрд╢, рдЬрд╝рд╢, рдПрдХреНрд╕реЙрдирд╢)ред рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╢реЗрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╣рд░ рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХрд░рддрд╛)ред рдЬрдм рдореИрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рдореЗрд░рд╛ рдирдпрд╛ рдЦреЛрд▓ рдореЗрд░реА рд╕рднреА рд╡рд┐рд░рд╛рд╕рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд┐рдирд╛ рдмрджрд▓рд╛рд╡ рдХреЗ рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛ рд╣реИред

@krader1961 рдЕрдЪреНрдЫрд╛ рднрд╛рд╖рдгред рдореЗрд░реА рд╡рд┐рдирдореНрд░ рд░рд╛рдп рдореЗрдВ ...

рдореИрдВ рд╣рд░ рд╕рдордп рдордЫрд▓реА рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛ (рдЖрджреЗрд╢ рдХреЗ рдмрд╛рдж):

  1. рдордЫрд▓реА рдХреА рд▓рд┐рдкрд┐ рдзреАрдореА рд╣реИ (mksh рд╕реЗ рдзреАрдореА)
  2. рдХреБрдЫ рдЕрдЬреАрдм рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ (рдЬреИрд╕реЗред ; and , ; or рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдмрджрд╕реВрд░рдд рд▓рдЧ рд░рд╣рд╛ рд╣реИ)
  3. рдкреЙрдЬрд╝рд┐рдХреНрд╕ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЖрд╕рд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЪрд╛рд╣рд┐рдП)

рдареАрдХ рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ 2 рдФрд░ 3 рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдпрджрд┐ рдордЫрд▓реА рдХреА рд▓рд┐рдкрд┐ рдЕрдиреНрдп рдЧреЛрд▓реЗ (рдЬреИрд╕реЗред mksh, bash) рдХреА рддреЗрдЬ рд╣реИ ред

рджреВрд╕рд░реА рдУрд░ , рдореИрдВ рдордЫрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐:

  1. рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп zsh рд╕реЗ рддреЗрдЬ рд╣реИ (рд▓реЗрдХрд┐рди рдмреИрд╢ рд╕реЗ рдзреАрдорд╛)
  2. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╕рдХреНрд╖рдо рд╣реИрдВ (рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ)
  3. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рд░рд▓ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ set -Ux )

@ylluminate рдЗрд╕ рдЪрд╛рд░ рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдордЫрд▓реА рдЬреИрд╕реА рдордЫрд▓реА рдХрд╛ рдЖрдирдВрдж рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рдХрд┐рддрдиреЗ рдЖрд▓рд╕реА/рд╡реНрдпрд╕реНрдд рд╣реИрдВ, рдЕрднреА рднреА рдЖрд▓рд╕реА/рд╡реНрдпрд╕реНрдд рд╣реИрдВред рдЙрддреНрд╕реБрдХ рд▓реЛрдЧ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЦреЛрд▓ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдЬрд╛рджреВрдЧрд░/рдпрд╢, рдПрд▓реНрд╡рд┐рд╢/рдПрд▓рд╡рд┐рд╢, рдорд╛рдЗрдХрд▓рдорд╛рд╕рд┐рдирд┐рд╕/рдУрд╣, рдФрд░ рдореИрдВ :-рдкреА)ред рдпрджрд┐ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдЧреИрд░-рдордЫрд▓реА рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдПрдХ рдЧреИрд░-рдордЫрд▓реАрджрд╛рд░ рдЦреЛрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдордЫрд▓реА рдкрд░ && || рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдмрд╣реБрдд рдЧреИрд░-рдордЫрд▓реА рди рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ begin; end рдирд┐рдХрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ (рджреЗрдЦреЗрдВ рдХрд┐ 594b460ba2d8dca59a3bfd282397c5f33aa9da6f рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ,рдХрд╛рдЙрдВрдЯрд░- ; and or рджреЛрд╣рд░реА рднреВрдорд┐рдХрд╛рдПрдВ рдирд┐рднрд╛рдПрдВ,рдмрд╣реБрдд рдХреБрдЫ рдмрджрд╕реВрд░рдд) рдФрд░ рдХреЗрд╡рд▓ рдереЛрдбрд╝реА рд╕реА рдЪреАрдиреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

@ рдкрд┐рдХрдлрд╛рдпрд░ рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ

рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ FWIW posix_spawn рдФрд░ рдЗрд╕рдХреЗ рддреЗрдЬрд╝ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдмреИрд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ alias ред

ivan<strong i="5">@alarmpi</strong> /tmp> echo 'echo test' > script
ivan<strong i="6">@alarmpi</strong> /tmp> time bash script
test
0.02user 0.01system 0:00.03elapsed 96%CPU (0avgtext+0avgdata 2776maxresident)k
0inputs+0outputs (0major+149minor)pagefaults 0swaps
ivan<strong i="7">@alarmpi</strong> /tmp> time mksh script
test
0.00user 0.00system 0:00.02elapsed 0%CPU (0avgtext+0avgdata 1420maxresident)k
480inputs+0outputs (2major+82minor)pagefaults 0swaps
ivan<strong i="8">@alarmpi</strong> /tmp> time fish script
test
0.07user 0.01system 0:00.09elapsed 85%CPU (0avgtext+0avgdata 4204maxresident)k
352inputs+0outputs (2major+231minor)pagefaults 0swaps

@ridiculousfish рдЬрд░рд╛ рд╕реЛрдЪрд┐рдП рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдзреАрдореА рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ echo рд▓рд┐рдП рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВред

@ krader1961 @ridiculousfish IMO, рдПрдХ рдмрд╛рд░ https://github.com/fish-shell/fish-shell/issues/2210 рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдмрд╣реБрдд рд╣реА рдЖрд╕рд╛рди рдЙрдкрд╛рдп рд╣реИ рдЬрд┐рд╕реЗ @kballard рдиреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИред

@pickfire рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдУрд╡рд░рд╣реЗрдб рдХреЛ рдорд╛рдк рд░рд╣рд╛ рд╣реИ, рди рдХрд┐ echo ред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрд╕ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп (рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ config.fish рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ) рд╕реЗ рдЖрдЧреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗред

рдпрд╣рд╛рдБ рдПрдХ рдЕрд▓рдЧ рдорд╛рдЗрдХреНрд░реЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реИ:

> cat test.fish
for i in (seq 1000)
    ls > /dev/null
end

> time fish test.fish
        1.51 real         0.74 user         0.65 sys

> cat test.sh
for i in {1..1000} ; do
    ls > /dev/null
done

> time bash test.sh
        2.01 real         0.85 user         1.12 sys

рдпрд╣рд╛рдВ рдордЫрд▓реА рдмрд╣реБрдд рдЬреАрддрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдо рдкреЙрдЬрд╝рд┐рдХреНрд╕_рд╕реНрдкреЙрди рдХреЗ рдЕрдВрддрд░ рдХреЛ рдорд╛рдк рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ridiculousfish рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЬреЛ рдЖрдкрдиреЗ рдореБрдЭреЗ рджрд┐рдпрд╛ рд╣реИ:

> cat test.fish
for i in (seq 1000)
    ls > /dev/null
end
> time fish test.fish
4.18user 4.04system 0:22.62elapsed 36%CPU (0avgtext+0avgdata 4360maxresident)k
96inputs+0outputs (1major+321041minor)pagefaults 0swaps
> cat test.sh
for i in {1..1000} ; do
    ls > /dev/null
done
> time bash test.sh
0.70user 1.62system 0:09.81elapsed 23%CPU (0avgtext+0avgdata 2844maxresident)k
0inputs+0outputs (0major+154100minor)pagefaults 0swaps
> time mksh test.sh
0.00user 0.01system 0:00.04elapsed 24%CPU (0avgtext+0avgdata 1780maxresident)k
752inputs+0outputs (3major+203minor)pagefaults 0swaps

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ mksh рдЧрддрд┐ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИред

@ рдкрд┐рдХрдлрд╛рдпрд░ рдлрд┐рд╢ рдХрд╛ ls рд▓рд┐рдирдХреНрд╕ рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рд╕рд╛рдорд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмреИрд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕реЗрдм рд╕реЗ рд╕реЗрдм рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ command ls ред (рдбрд╛рд░реНрд╡рд┐рди рдкрд░, рдордЫрд▓реА рдХрд╛ ls рд░реИрдкрд░ рдмрд╣реБрдд рдкрддрд▓рд╛ рд╣реИ - рдореБрдЭреЗ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рд▓реЗрдХрд┐рди рдореИрдВ рднреВрд▓ рдЧрдпрд╛ред)

рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ mksh рдХреА "рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдЧрддрд┐" рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдпрд╣ рд╣реИ рдХрд┐ mksh рдореЗрдВ рдмреНрд░реЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ ls рдЖрд╣реНрд╡рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ ls рдПрдХ рдмрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЗрд╕реЗ 1000 рдмрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рд╣реИред

рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдорд╛рдк рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ - рдЖрдк рдЬреЛ рдорд╛рдк рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдЕрд▓рдЧ рдХреБрдЫ рдорд╛рдкрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ!

@ridiculousfish , рдХреНрдпрд╛ ls рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдордЫрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ command ls ? рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЖрдЙрдЯрдкреБрдЯ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рдареАрдХ рд╣реИ, рдЗрд╕ рдмрд╛рд░ рдореИрдВрдиреЗ рд╡рд╣реА рдХрд┐рдпрд╛ рдЬреЛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛:

> cat test.fish
for i in (seq 1000)
    command ls > /dev/null
end
> time fish test.fish
0.66user 1.04system 0:08.08elapsed 21%CPU (0avgtext+0avgdata 4364maxresident)k
624inputs+0outputs (4major+113176minor)pagefaults 0swaps
> cat test.sh
for i in $(seq 1000) ; do
    ls > /dev/null
done
> time mksh test.sh
0.21user 0.65system 0:07.64elapsed 11%CPU (0avgtext+0avgdata 1884maxresident)k
0inputs+0outputs (0major+119632minor)pagefaults 0swaps
> time bash test.sh
0.15user 1.04system 0:08.66elapsed 13%CPU (0avgtext+0avgdata 2816maxresident)k
0inputs+0outputs (0major+150700minor)pagefaults 0swaps

рдЕрдВрдд рдореЗрдВ, mksh рдЕрднреА рднреА рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╣реИ, рдЕрдм рдореБрдЭреЗ fish рдХрд╛ mksh рд╕реЗ рддреЗрдЬрд╝ рд╣реЛрдирд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ fish рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд░реНрдерди рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╣реЛрддрд╛ред

рд╡рд╣ .66 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдордп рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреА config.fish рд╕рд╛рдордЧреНрд░реА рдХреЗ рдХрд╛рд░рдг рд╣реИ - рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ рдРрд╕реЗред рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рдмреЙрдХреНрд╕ рдкрд░ рдпрд╣реА рджреЗрдЦрддрд╛ рд╣реВрдВ (рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП 3 рдореЗрдВ рд╕реЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда):

> time fish test.fish
0.15user 1.21system 0:01.33elapsed...
> time mksh test.mksh
0.12user 1.13system 0:01.24elapsed...
> time bash test.sh
0.18user 1.34system 0:01.47elapsed...

рд╣рд░ рдХреЛрдИ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред

рдХрд┐рд╕реА рднреА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдСрд░реЗрдХреНрдпреВрд▓рд░ рд╢реЗрд▓" рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдкрде рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рдВрдЯрд╛/рдирд┐рд╖реНрдкрд╛рджрди рдпрд╛ рдкреЙрдЬрд╝рд┐рдХреНрд╕_рд╕реНрдкреЙрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рд╕реЗ рдХрд┐рддрдиреЗ рджреВрд░ рд╣реИрдВ рдЬреЛ рдУрдПрд╕ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ .

@ridiculousfish , рдореЗрд░рд╛ config.fish рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ:

# Solarized colors
test $SHLVL = 2
and sh $HOME/.config/base16-shell/base16-solarized.dark.sh &
set fisher_home ~/.local/share/fisherman
set fisher_config ~/.config/fisherman
source $fisher_home/config.fish

рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╢рд╛рдпрдж рдпрд╣ fisherman рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред @bucaran рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдбрд╝рдХрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░, рдореИрдВрдиреЗ config.fish рдЦрд╛рд▓реА рдХрд░ рджрд┐рдпрд╛ (5 рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░рд┐рдгрд╛рдо):

> time fish test.fish; time mksh test.sh; time bash test.sh
0.62user 1.09system 0:07.28elapsed 23%CPU (0avgtext+0avgdata 4396maxresident)k
0inputs+0outputs (0major+108240minor)pagefaults 0swaps
0.21user 0.62system 0:06.92elapsed 11%CPU (0avgtext+0avgdata 1888maxresident)k
0inputs+0outputs (0major+116674minor)pagefaults 0swaps
0.29user 0.81system 0:07.78elapsed 14%CPU (0avgtext+0avgdata 2780maxresident)k
0inputs+0outputs (0major+145628minor)pagefaults 0swaps

@ridiculousfish @pickfire рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдореБрджреНрджреЗ рдкрд░ рдЪреИрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░

рд╣рд╛рдВ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрдкреИрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред @ рдкрд┐рдХрдлрд╛рдпрд░ рдпрджрд┐ рдЖрдк рдХреБрдЫ рдРрд╕реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдпрд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдмреИрд╢ рдФрд░ zsh рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд┐рдЯ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдордЫрд▓реА рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ рднреА, && рдФрд░ || рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдХрдорд╛рдВрдб рдХреЛ рдЪреЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдореБрдЭреЗ рдЕрднреА рднреА #2292 рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдордЫрд▓реА рдХреА рдмрдЧ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдордЫрд▓реА рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╕реЗ рдпрд╣ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рдпрд╣рд╛рдВ рдореИрдХреНрд╕рдлреНрд▓ рдХреЗ рд╕рд╛рде рд╣реВрдВ,: -1: || рдФрд░ && рдХреЛ рдлрд┐рд╢ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡реЛрдЯ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдордЫрд▓реА рдмреИрд╢ (рдпрд╛ zsh) рдирд╣реАрдВ рд╣реИред рдЙрди рдЧреЛрд▓реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ && рдФрд░ || рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдпрдерд╛рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рд▓рдХреНрд╖реНрдп-рд╡рд┐рд░реЛрдзреА рд╣реИред

@Nodd : # 2292 рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдЖрдкрдХрд╛ рд╕рдВрджрд░реНрдн рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдордЫрд▓реА рдХреЛ рдЙрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдирд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдФрд░ рдХрджрдо рд╣реЛрдЧрд╛ рдХрд┐ рдордЫрд▓реА рдПрдХ рдкреЙрдЬрд╝рд┐рдХреНрд╕ (рдмреИрд╢, рдЬрд╝рд╢, рдЖрджрд┐) рдХреНрд▓реЛрди рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдиреНрдп рдорд╛рдВрдЧреЗрдВ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдХрд┐ рдордЫрд▓реА рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЙрди рдЧреЛрд▓реЗ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВред

рдЙрди рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдордЫрд▓реА 2.3 рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдЦрд┐рд░рдХрд╛рд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдмрд╕ рд╡рд╣реА рдХрд░реЗрдВ рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдЙрддреНрддрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ:

рд╣реЗрдпрд░ рдпреВ рдЧреЛред рдПрдХ рдмрд╛рд░ рдкреАрдЖрд░ #1633 рднреВрдорд┐, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ ~/.config/fish/functions/fish_user_key_bindings.fish рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ:

function handle_input_bash_conditional --description 'Function used for binding to replace && and ||'
    # This function is expected to be called with a single argument of either & or |
    # The argument indicates which key was pressed to invoke this function
    if begin; commandline --search-mode; or commandline --paging-mode; end
        # search or paging mode; use normal behavior
        commandline -i $argv[1]
        return
    end
    # is our cursor positioned after a '&'/'|'?
    switch (commandline -c)[-1]
    case \*$argv[1]
        # experimentally, `commandline -t` only prints string-type tokens,
        # so it prints nothing for the background operator. We need -c as well
        # so if the cursor is after & in `&wat` it doesn't print "wat".
        if test -z (commandline -c -t)[-1]
            # Ideally we'd just emit a backspace and then insert the text
            # but injected readline functions run after any commandline modifications.
            # So instead we have to build the new commandline
            #
            # NB: We could really use some string manipulation operators and some basic math support.
            # The `math` function is actually a wrawpper around `bc` which is kind of terrible.
            # Instead we're going to use `expr`, which is a bit lighter-weight.

            # get the cursor position
            set -l count (commandline -C)
            # calculate count-1 and count+1 to give to `cut`
            set -l prefix (expr $count - 1)
            set -l suffix (expr $count + 1)
            # cut doesn't like 1-0 so we need to special-case that
            set -l cutlist 1-$prefix,$suffix-
            if test "$prefix" = 0
                set cutlist $suffix-
            end
            commandline (commandline | cut -c $cutlist)
            commandline -C $prefix
            if test $argv[1] = '&'
                commandline -i '; and '
            else
                commandline -i '; or '
            end
            return
        end
    end
    # no special behavior, insert the character
    commandline -i $argv[1]
end

function fish_user_key_bindings
    bind \& 'handle_input_bash_conditional \&'
    bind \| 'handle_input_bash_conditional \|'
end

@Globegitter

рдмрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

function sudo_bang_bang --on-event fish_postexec
    abbr !! sudo $argv[1]
end

@brj рдЗрд╕реЗ ~/.config/fish/functions/fish_user_key_bindings.fish рдореЗрдВ рднреА рдбрд╛рд▓ рд░рд╣рд╛ рд╣реИ? рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рд▓ рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд░реЛрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ, рдЖрдкрдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ config.fish рдореЗрдВ рд░рдЦреЗрдВ рдпрд╛ рдЗрд╕реЗ ~/.conf.d/[name-dont-matter].fish рдХреЗ рдЕрдВрджрд░ рд░рдЦреЗрдВред

@brj : рдЙрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдореБрджреНрджрд╛ред рдпрд╣ "&&" рдФрд░ "||" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рди рдХрд┐ "!!" - рдЕрд▓рдЧ рдЕрд▓рдЧ рдмрд╛рддреЗрдВред

@ рдлрд╛рд╣реЛ рд▓реЙрд▓ , рддреБрдо рд╕рд╣реА рд╣реЛред рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдЙрд╕ рдореБрджреНрджреЗ рд╕реЗ рдПрдХ рд╕реВрдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рд╕реВрдбреЛ рдХрд╛ рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рд╣реИ !!ред

@Globegitter рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ!

рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдордЫрд▓реА рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╢рд┐рдкрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдкреА рдХрд░ рд╕рдХреЗрдВ? рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдПрдХ рд╣реА рд▓рд╛рдЗрдирд░ (рдЧреЗрд░рд┐рдЯ рдХреЛрдб-рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ) рдЪрд┐рдкрдХрд╛рддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ && рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреЛрд▓реЗ (рд╡рд┐рдВрдбреЛрдЬрд╝ cmd.exe рд╕рд╣рд┐рдд рдпреВрдирд┐рдХреНрд╕-рд╡рд╛рдИ рдЧреЛрд▓реЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрд░реНрдпреБрдХреНрдд рд▓рд┐рдкрд┐ рдПрдХ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмреВрд╕реНрдЯрд░ рд╣реИ (рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдмреИрд╢-рд╕реА "рдпрд╣рд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ" рдЯрд╛рдЗрдк рдХрд░ рд░рд╣рд╛ рдерд╛ ...)

рдореЗрд░рд╛ рдХреНрдпрд╛ рд╣рд╛рд▓ рд╣реИ && ? рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрдХрд▓реНрдк рд╣реИ?

рдКрдкрд░ рдХреА рддрд░рд╣ рд╣реА рд╕рдорд╕реНрдпрд╛, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

gcc test2.c -o a.out && ./a.out

рдордЫрд▓реА рдореЗрдВред

gcc test2.c -o a.out; and ./a.out

@ivan рдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЬреАрд╕реАрд╕реА рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ "рдФрд░" рдФрд░ "./a.out" рджреЗрддрд╛ рд╣реИред

// рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╡реИрд╕реЗ, рдореИрдВ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдордЫрд▓реА рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рдЕрд╕рдВрднрд╡ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ :(

gcc test2.c -lwlc -o a.out && (( sleep 2s; DISPLAY=:2 xterm ) & ./a.out)

рдореИрдВ рдпрд╣ "рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрднрд╡" рдХрд╛рдо рдЕрдХреНрд╕рд░ рдХрд░рддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдордЫрд▓реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ ; and рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ? рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдордЫрд▓реА рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

@ivan рдЗрд╕реЗ рдЯрд╛рдЗрдк рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╢рд╛рдпрдж рдмреЗрд╡рдХреВрдл рд╕рд╡рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЛрд╖реНрдардХ рдХреИрд╕реЗ рдХрд░реВрдВ? рдореБрдЭреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ Google рдпреЛрдЧреНрдп рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ :(

gcc test2.c -lwlc -o a.out && ((рд╕реНрд▓реАрдк 2s; DISPLAY=:2 xterm ) & ./a.out)

@kozec рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдЕрдкрдиреЗ рдЖрдЗрдЯрдо рдХреЛ рдПрдХ рд╕рд╛рде рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдЖрдкрдХреЛ begin рдмрд╛рдПрдВ рдмреНрд░реЗрд╕ рдХреА рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ) рдФрд░ end рджрд╛рдПрдВ рдХреА рддрд░рд╣ред

gcc test2.c -lwlc -o a.out; and begin sleep 2s; env DISPLAY=:2 xterm; end & ./a.out

рдпрд╛ рдЗрдВрдбреЗрдВрдЯ:

      gcc test2.c -lwlc -o a.out
         and begin sleep 2s
             env DISPLAY=:2 xterm
         end & ./a.out

@floam рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд▓рдЧрднрдЧ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рди рдкрд╣рд▓реЗ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ :(

рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг:

begin sleep 2s ; env DISPLAY=:2 xterm ; end & Xephyr :2

2s рд╕реЛрддрд╛ рд╣реИ, рдлрд┐рд░ xterm рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, _then_ рдЙрд╕ xterm рдХреЗ рд▓рд┐рдП XServer рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред XServer рдХреЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ xterm ofc рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╣ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рд╕рдорд╕реНрдпрд╛: https://github.com/fish-shell/fish-shell/issues/238

рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

fish -c 'sleep 2s; env DISPLAY=:2 xterm' & Xephyr :2

рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд╛рд╕, рдирд┐рд░реНрдорд╛рдг рдФрд░ рдПрдирдкреАрдПрдо рд░рди-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ, рддреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдХреБрдЫ/рдЕрдзрд┐рдХрд╛рдВрд╢ рдордЫрд▓реА рдкрд░ рдирд╣реАрдВ рд╣реИрдВред рд╢реЗрдмреИрдВрдЧ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣ рд╕рдм рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

&& рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА (рдпрд╛ "рдЕрдЪреНрдЫреА") рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХ рдкрд░ рдмрд▓реНрдХрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рднреА рдирд┐рдпрдорд┐рдд рдЧреЛрд▓реЗ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдЖрджрд┐ рдХреЗ рддреНрд╡рд░рд┐рдд рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдбреАрд▓ рдмреНрд░реЗрдХрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛?

рдЦреИрд░, рдпрд╣ рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рддрд░реНрдХ рд╣реИред рдордЫрд▓реА рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ "рдореЛрдб" рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВ? рдпрд╛рдиреА, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдЬрд┐рд╕реЗ рдЖрдк рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ "рд╢реБрджреНрдз" рдордЫрд▓реА рд╕рд╛рдордЧреНрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрд╛ рдЖрдк рдордЫрд▓реА-рдЖрдЗрдореНрд╕ рдХреЗ рд╕рд╛рде рдмреИрд╢-рдЬреИрд╕реЗ рдЧреЛрд▓реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди "рд╕реНрддрд░" рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛, рдХреЛрдИ рд╕рдВрдЧрддрддрд╛ рдпрд╛ рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рди рд╣реЛред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрддрд░ рдкрд░, рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд░реЛрдд-рд╕реЗ-рд╕реНрд░реЛрдд рд╕рдВрдХрд▓рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдмреИрд╢ рдХреЛрдб рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдордЫрд▓реА рдХреЗ рдЖрдВрддрд░рд┐рдХ, рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВред рдЖрдк рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╣рд░ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдмреИрд╢ рдПрдЯ рдЕрд▓ рдХреА рднрд╛рд╖рд╛-рд╕реНрддрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВред рдмрдирд╛рдо рдордЫрд▓реА рджреБрдирд┐рдпрд╛-рдмрд┐рдЦрд░рдиреЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ, рд╣реИ рдирд╛?

рд╡реИрд╕реЗ рднреА, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдпрд╣ рдореЗрд░рд╛ $0.02 рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

"pure fish"
XOR
"compatibility with bash / becoming another bash clone"

рдЬрдм рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрди рджреЛ рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдордзреНрдп рдореИрджрд╛рди (рдУрдВ) рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдордЫрд▓реА рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рдЧреВрдврд╝ рдЧреЛрд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреИрд╢-рдЬреИрд╕реЗ рдЧреЛрд▓реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдорд╛рдирдХ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдордЫрд▓реА рдХреЗ рдХрд┐рд╕реА рднреА рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЕрд╡рд╕рд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкреИрд░ рдХреА рдЕрдВрдЧреБрд▓реА рдХреЛ рдЦрдбрд╝рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╡реНрдпрд╛рдкрдХ рд╣реЛрдиреЗ рдФрд░ рд╕рдВрдЧрддрддрд╛ рд╕рд┐рд░рджрд░реНрдж рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреИрд╢ рдХреЗ рд╕рд╛рде рдкреИрд░ рдХреА рдЕрдВрдЧреБрд▓реАред

... рдЬрдм рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрди рджреЛ рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдордзреНрдп-рдореИрджрд╛рди рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 2,000 рдШрдВрдЯреЗ (рдПрдХ рд╡реНрдпрдХреНрддрд┐ рд╡рд░реНрд╖) рд╕реЗ тАЛтАЛрдЕрдзрд┐рдХ рдХрд╛ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ (рдпрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдореВрд╣) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВред рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ, @ylluminarious рд╕реЗ рдкреБрд▓-рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ

#4620 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

elmigranto picture elmigranto  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

frankyan picture frankyan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thomcc picture thomcc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rwz picture rwz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pluckytree picture pluckytree  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ