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
ć§ćă使ç¨ă§ăăžăăăfishăăăăăľăăźăăăŚăăă¨äžżĺŠă§ăă
ăăăă¨ăďź
||
ăăăă§ăăăă
ĺĽăŽćčŚăčż°ăšăăă¨ćăăžăă
'||' ăăăłă&&ăăŻć§ćčŚç´ ă§ăăăăăăăłăăăăłăăžăăŻăăŻĺç´ăŞăłăăłăă§ăă ăăŽă˘ăăăźăăŻăˇăłăăŤă§ăŻăŞăźăłă§ăă
ć˘ĺăŽćŠč˝ăĺŽčŁ
ăăăăăŤčż˝ĺ ăŽć§ćčŚç´ ăĺ°ĺ
ĽăăăŽăŻčŻăčăă§ăŻăŞăă¨ćăăžăă
bashă¨ăŻç°ăŞăăžăăăĺéĄăăăžăăă
&&ă¨||ăć缨ăăžăăăăŻä¸čŹçăŤä˝żç¨ăăăăˇăłăżăăŻăšăˇăĽăŹăźă§ăăă使ăăăăăĺăăŚăăă¨é常ăŤäžżĺŠă§ăă
maxflăŽććĄăŤ+1ă
maxflăŽććĄăŤ+1ă
RubyăŤăŻand
ă¨or
ăăźăŻăźăăăăăžăă
+1
誰ăăăăăĺźăĺăăăăŽăŞăăç§ăŻç°čŤăŻăăăžăăă
-1ăă&& / ||ăĺŽčŁ ăăăăăŚămaxflăŤ+1ăăžăă ăăăŚăç§ăŻăăăĺŽčŁ ăăăăšăççąăćŹĺ˝ăŤç解ăăŚăăžăăă ăăăŻăˇăłăżăăŻăšăˇăĽăŹăźă§ăŻăăăžăăăbashă§ăŻĺăŞăć§ćă§ăăăfishă§ăŻăăŽć§ćăŻĺĺ¨ăăžăăă ăžăă ';ăžăăŻ'㯠'||'ă¨ăžăŁăăĺăć°ăŽăăźăšăăăźăŻăĺż čŚă¨ăăăăăć§ćçłčĄŁă¨ăăŚăŻĺŽéăŤăŻĺ˝šăŤçŤăăŞăă§ăăăă
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
ăĺŽčĄăăăăăŤtrueăčżăĺż
čŚăăăă¨äťŽĺŽăăžăăăă ăăăăă°ăăăŽăăăŤć¸ăăă¨ăă§ăăžăă
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
ďźă1ă¤ăçăžăăŞăăă°ăŞăăŞăăŁăăă¨ăé¤ăăŚăăăăŻăă§ăŤ[
ăăăŤćăăžăă çšăŤéăŽăăăŤćăăăă¨ăŻăăăžăăăăăă¤ăăŞă§ăăăăăăăăŤăăăžăďźéăăľăăźăăăŚăăŞăăă¨ăĺŹăăćă[[
ă¨ăŻç°ăŞăăžăďźă
ć§ćă2ă¤ďźăăŽĺ ´ĺăŻ3ă¤ă§ăďźăăă¨ăăăŞă桡䚹ăăžăă ăŠăŽć§ćă使ç¨ăăĺż čŚăăăăžăăďź
if a
b
end
a; and b
a && b
çĺŽăŽĺĺăé¤ăăŚă &&
ăćçăŽăăă§ăă ;and
ă¨ĺ
Ľĺăăă¨ăăžăŁăăĺăć°ăŽăăźăšăăăźăŻăĺż
čŚăŤăŞăăžăďź &
ăŻShiftăĺŤăžăăăăďźă &&
ăčż˝ĺ ăăă¨ăć§ćăčż˝ĺ ăăăă¨ăăĺ§ăăăžăďź begin
ăăăŞăăźăŻăźăăĺžăŤćżĺ
Ľă§ăăăăă and
ăŻçšĺĽăŞćšćłă§č§ŁćăăăćŠč˝ăăžăďźă
ĺéĄăŻă ; and
ă¨; or
ć§ćăăăăă¨ă§ăăć°ăăć§ćăŻéč¤ăăŚăăăăăŤćăăžăă ăăăăŻăă§ăŤä¸ç¨ŽăŽéćłă§ăďź $status
ĺ¤ć°ăăă§ăăŻăăăˇă§ăŤăšăŻăŞăăé˘ć°ă§ăŻăăăžăăďźăŽă§ă &&
ă¨||
罎ăćăăŚăĺéĄăăăžăăă ||
ă
ăŠăčăăăăăăŽăăăăăŞăă ăăăčĄăăŤăŻăć§ćă1ă¤ă ăăăăšăă ă¨ćăăžăă ç§ăŻ; and
ă¨; or
ă弽ăă§ăăăĺ¤ăć§ćăĺé¤ăăăă°ă &&
ă¨||
ăŤĺéĄăŻăăăžăăă ăă ăăä¸ä˝äşćć§ăčć
Žăăă¨ă ; and
ă¨; or
ă使ç¨ăăăă¨ćăăžăă ăăăăă begin
ăďźbashăŽä¸ćŹĺź§ăŽăăăŤďźçăăŞăă¨ăăă...ăăăăăăăŻćŞăăăŞćăăŤăŻăŞăăžăăă
çľăżčžźăżăŽ[[ăbashăŽăăăŤăľăăźăăăŚăżăžăăăďź ăăéŤéăŤăŞăďźçľăżčžźăżăŽă¨ăłăźăĺç §ďźă&&ă¨||ăăľăăźăăăžăă [[ăăăł]]ĺ ăŽćźçŽĺăŻăăăăł/ăžăăŻĺä˝ăă¨ăăĽăŹăźăăăžăă
[[
ăŻĺŽéăŽăłăăłăă§ăŻăŞăăăăbashăŤăŽăżĺĺ¨ăăžăă ĺéĄăŻă [[
ă[
ďźăťă¨ăăŠďźă¨ĺăă§ăăă¨ăăăă¨ă§ăăăä¸ĺż
čŚăŞĺźç¨ăéżăăăăăŽçšĺĽăŞč§ŁćăŤăźăŤăăăăžăă ç´äş¤ć§ăŽćłĺă¨çşčŚĺŻč˝ć§ăŽćłĺăĺç
§ăăŚăéăŤĺŤăžăăŞăççąă確čŞăăŚăă ăăă
ĺŽéă [
ăŻăçşčŚĺŻč˝ć§ăŽćłĺă¨ç´äş¤ć§ăŽćłĺăŽăăăŤĺĺ¨ăăŞăă¨ăťăźç˘şäżĄăăŚăăžăăă /usr/bin
ăŽăă¤ăăŞă§ăăăăĺĺ¨ăăžăă test
ăŻăăżăčŁĺŽă使ç¨ăăŚć¤ĺşă§ăăăăăăăéăŽăăă§ăă ăă ăăăă¤ăăŞăŽăăăăŻăŻăăŞăćŁćçă§ăăăăăçľăżčžźăżă¨ăăŚĺŽčŁ
ăăăă¨ăă§ăăžăă
ăă¨ăă°ăbashă§ăŻ[[
ăăšăŚăŽćĺĺăčŞĺçăŤĺźç¨ăăžăă
[[ abc = $variable ]]
ăăăă犺ç˝ăŽĺĺ˛ĺä˝ăĺĺ¨ăăŞăăăăéă§ăŻăăăŻĺż
čŚăăăžăăă ăžăăć§ććŠč˝ă§ăăăăă &&
ă ||
ă <
ăăăăł>
čŞĺçăŤĺźç¨ăăžăă éăŽĺ ´ĺă &&
ăŻ-a
ă ||
ăŻ-o
ă§ăă <
ă¨>
ăĺĺ¨ăăžăăă
=~
ćźçŽĺăăăăžăă fish
ă§ăŻăăăŽăăăŤquietgrepă使ç¨ă§ăăžăă
echo $ANSWER | grep -qE '^y(es)?$'
ăžăă bash
ăŻ<
ă¨>
ćźçŽĺăăăăžăă äťăŽćĺĺăăă大ăăăžăăŻĺ°ăăćĺĺăăă§ăăŻăăžăă ăăă彚çŤă¤ăă¨ăŻăăŁăăŤăăăžăăă
ăžăă =
ăăăł!=
ćźçŽĺă使ç¨ăăĺ ´ĺăŻăćŁčŚčĄ¨çžă使ç¨ăăăŽă¨ĺăăăăŤăă°ăăăłć§ćă使ç¨ă§ăăžăă çš°ăčżăăžăăăăăŽăăăŤéăăŞgrepă使ç¨ăăžăă
[[ abc = a* ]]
ăžăă [[
ăŻă -e
ă -nt
ă -ot
ă -ef
ăăăăł!
ăćă¤ăăăŤĺŽçžŠăăăŚăăžăăăéăŤăŻăă§ăŤtest
çľăżčžźăžăăŚăăžăă
[[
ăčż˝ĺ ăăă¨ăĺĽăŽăăźăŻăźăăčż˝ĺ ăăăă ăă§ăĺŽéăŤăŻć¤ĺşă§ăăăĺŽéăŤăŻĺ¤ăăŽćŠč˝ăčż˝ĺ ăăăžăăă ĺŻä¸ăŽčĺłćˇąăćŠč˝ăŻ=~
ă§ăăăquiet grepďźăžăăŻPerlďźăŻăć°ăăć§ćăčż˝ĺ ăăŞăăŚăĺăăă¨ăĺŽčĄă§ăăžăă ăăŽä¸ăăˇă§ăŤăŤăăšăŚăčż˝ĺ ăăăšăă§ăŻăăăžăăă ćŁčŚčĄ¨çžăçľăżčžźăĺż
čŚăŻăŞăă¨ćăăžăă
ăăă§ăăăĺż
ăăăbashăŽ[[
ăăŤăă¤ăłăĺĺŽčŁ
ăăĺż
čŚăăăă¨ăăćĺłă§ăŻăŞăăçŹčŞăŽăăăăăŁăćă¤ć§ćć§é ă¨ăăŚĺ°ĺ
Ľăăĺż
čŚăăăăžăă ă¤ăžăăfishăŻăbashăŽăăăŤčŚăăĺ¤ăăŽăăźăŻăźăă¨ć§ćăĺ
ąćăăžăăăăăăăŻç°ăŞăăăăăăăăŠăŽăăăŤčĄăăăŞăăăŻăăăăžăăă
ăăŞăăč¨ăŁăăă¨ăŤĺşăĽăăŚăăăăăç§ăăĄčŞčşŤăŽtest
ăĺŽčŁ
ăăćšăčŻăć§ćă§ăăăéă䝣ăăăŤmath
ĺŽčŁ
ăăćšćłăŽăăăŤă cond
ăăăŞĺĺăŤĺ¤ć´ăăăžăăexpr
ă <ă>ăŽăăăŞăăŽăĺŽčŁ
ăăă¨ăăăžă§čĄăăă¨ăă§ăăžăăăčžć¸ĺźé ĺşăŽäťŁăăăŤčŞçśăŞďźć°ĺ¤ďźä¸Śăšćżăă使ç¨ăăŚăćĺĺă ăă§ăŞăć°ĺă§ăćŠč˝ăăăăăŤăăžăă
@UndeterminantăăŤăă¤ăł[[vs
ăžăăbashăŽ[[ăŽç˛žçĽăŻăç´äş¤ć§ăŽćłĺăŤéĺăăžăăăăăŻăć§ćăăľăăźăăăçšĺŽăŽćĄäťśăŤĺŻžăăŚăŽăżăă俎ćŁăăăăł/ăžăăŻ/ăžăăŻă§ăă
ăăăˇăĽăŽif commands...; then ...; fi
ăéăif...then
éăç°ĄĺăŤčŞăăăŽăŻçŽčăŞăă¨ă§ăă ăăăăç§ăăĄăŻăăăŽćăăćăă§ăăžăăă ăăăăă俎ćŁăăăŽăŻăéĺ§...çľäşăç°ĄĺăŤăăăă¨ă§ăă
ăăăŤĺĽĺŚăŞă˘ă¤ăă˘ăăăăžăďźç§ăŻăăă弽ăăăŠăăăŻăžăŁăăăăăăžăăďźďź
if (foo; and bar)
...
end
çžĺ¨ăăłăăłăéĺ§ćăŽ(...)
ăŻéćłă§ăă čŞçśăŞčŞăżćšăŻăăăĺŽčĄăăĺşĺăăłăăłăĺă¨ăăŚä˝żç¨ăăăă¨ă§ăăăăăŽăăăŤăŻeval
ĺż
čŚă§ăă
ăăŽčŞăżĺăăç´ćĽč¨ąĺŻăăŞăă¨ç˘şäżĄăăŚăăĺ ´ĺăŻă裸ăŽ(...)
ăbegin ...; end
ăćĺłăăăăăŤĺĺŠç¨ă§ăăžăă
ăăŽä˝ç˝Žă§stdoutăăăŁăăăŁăăŞăăă¨ăŻä¸č˛Ťć§ăăăăžăăăăé常ăŤăłăłăăŻăă§ăŻăŞăźăłăŞĺ¤čŚłă§ăă
ç§ăĺŤăăŞăŽăŻă if (...)
ăăăăŤĺĽăŽćĺłăćąăăŚăăăă¨ă§ăăĺşĺăăăŁăăăŁăăŚăăăźăŤĺ¤ăŽč§Łéăĺ˛ăĺ˝ăŚăžăă äžďź if (math 2 \< 4)
â math
ăŻăšăăźăżăšăčżăăăstdoutăŤ0ăžăăŻ1ăĺşĺăăžăă éčŚăŞç¨éăŽ1ă¤ăŻă if $saved_bool
ă§ăă
ăăăŻĺŽç¨çă§ăŻăŞăă¨ćăăžăăçšăŤ0/1ăçľśćçăŤââ桡䚹ăăŚăăăăăćĺĺăŤăăźăŤĺ¤ăŽćĺłăćŁăăĺ˛ăĺ˝ăŚăăă¨ăŻă§ăăžăăă ăăăăćĺăŤif (...)
ăŤééăăă¨ăăăăăŻĺççăŞć¨ć¸ŹăŽăăă§ăă
äşćć§ăŽăăăŤăbashă¨zshăŤăăä¸čŹçăŞćźçŽĺăćäžăăŚăă ăăă ć°čŚăŚăźăśăźă䝼ĺăŽăˇă§ăŤćŠč˝ăŽăťă¨ăăŠăăłăăźăăŚč˛źăäťăăăŽăç°ĄĺăŤăŞăăťăŠăéăŽĺăčžźăżçăéŤăăŞăăžăă ç§ăŻĺ¤ăăŽçšă§éăŽćšă弽ăă§ăăăăăăăŽă°ăăăĺ°ăăŞăăźăăŤăŽăăă¤ăăŻă15嚴䝼ä¸ăŽăˇă§ăŤăŽăŤăšăżăă¤ăşăčĄăă¨ăăŤăĺŽéăŤăŻĺéĄăŤăŞăăŞăăŻăăŽĺŠçšăăăé˘ĺăŞăăŽăŤăŞăŁăŚăăăă¨ăăăăăžăăă
ç§ăŻćŁç´ăŤč¨ăŁăŚă &&
ăăă°ăăăĺ°ăăŞăăźăăŤăă¨ăŻčŚăŚăăžăăă zshăŽăăăŞă罎ćăˇă§ăŤăă§ăŻăŞăăéăçŹčŞăŽč¨čŞă¨ăăŚćąăŁăĺ ´ĺăĺŚçżăăăŽăŻéŁăăăăăžăăă éăćĺăăćĺžăžă§ăŠăŽăăăŤćŠč˝ăăăăŤă¤ăăŚăŽăăĽăźăăŞă˘ăŤăčŞăă ăăăăăç解ăăăŽăŻéŁăăăă¨ă§ăŻăŞăă¨ćăăžăă
command1; and command2
ăăăŞăăŽăăăă¨ă and
ăcommand2
ćĄäťśäťăĺŽčĄă§ăăă command1
ă¨command2
éăŽçľĺă ăă§ăŻăŞăăă¨ăăăć確ăŤăŞăăžăă
ăăăă @ Undeterminant ăăťă¨ăăŠăŽäşşăćĺăŤăăăçşčŚăăă¨ăăŞăŠăŤćĺăŤăăăčŚăăŽă§ăăăŞăăŻăăăčŚăŚăăžăăăăăŽćčŚăžăăŻçżç庌ăŽăŹăăŤăćéă¨ă¨ăăŤćĽăăăăŤăăŚăă ăăă ăă¨ăă°ăĺ¤ăăŹăŹăˇăźć§ćăăć°çžčĄăĺĺžăăžăăăăćŁç´ăŞă¨ăăăĺ¤ćăăĺż čŚăŽăăăăšăŚăŽăăŽăăăăŤĺ¤ćăăćéăăăăžăăă ç§ăŽĺéĄăç§ăŽĺ¤ăč¨ĺŽĺ ăŽăŠăăŤăăăăŤé˘ăăŚăéăăćťăŁăŚăăčĄçŞĺˇăăŞăă¨ăăĺĽĺŚăŞăă¨ăčŚă¤ăăŚăăžăă
ăăŞăăŽčŚćšăŻç解ă§ăăžăăă大ăăŞăăśă渥ăăŽă§ăŻăŞăăćéăăăăŚĺ¤ć´ăĺ ăăăă¨čăăŚăăäşşăŤé˘ăăŚăŻĺčŚăăăăžăă 誤解ăăŞăă§ăă ăăăç§ăéăć°ăŤăăăĺ Ľĺă芌ăżăĺ ´ĺăŻăäťăăzshăŤćťăŁăŚăă ăăă ăăŽăăăŞčăćšăć¨čŤăŻăć°ĺč ăŤă¨ăŁăŚăăĺ°ăéć¸ăéăăăăŤéčŚă ă¨ćăăžăă
ăăă§ăăăăŞăăŻčŞăżăăăăŤă¤ăăŚăŻćŁăăăŽă§ăăăĺ¤ăăăŽăćŠč˝ăăăŚăäşşă ăĺźăé˘ăăăăŽă¨ăŠăźă§ăŻăŞăčŚĺăä¸ăăžăăăă
@ylluminateăăŞăăŻčŞĺăă ăžăăŚăăžăă fishă&&
ăăľăăźăăăŚăăŚăăčŤçćźçŽĺă ăă§ăŞăăšăŻăŞăăć§ćăŤăĺ¤ăăŽéăăăăăăăbashăžăăŻzshăăăŽć§ćă使ç¨ăăăă¨ăŻă§ăăžăăă
ăăŽéăă fishăŻćŠč˝ăç°ăŞăăžăăă¤ăžăăăłăźăăç´ćĽăłăăźăăŚč˛źăäťăăă ăă§ăŻăăăžăăă ăłăźăăbashă§č¨čż°ăăăŚăăĺ ´ĺăŻăć示çăŤéăŤĺ¤ćăăĺż čŚăăŞăéăăbashă¨ăăŚäżćăăŚăă ăăă ăăăăŻĺĽă ăŽč¨čŞă§ăă
ăă
ç§ăčĄăŁăĺ ´ĺ
command1 && command2
éă§ăŻă䝣ăăăŤç§ăăżă¤ăăăăă¨ă示ĺăăŚăăžă
command1; ăăăłcommand2
誰ăăďźăłăăłăăŠă¤ăłă§ďź2çŞçŽăŽăŞăăˇă§ăłăăăăŻăŞăźăłă§ćŞćĽçă§ĺ Ľĺăăăăă¨ćŹĺ˝ăŤäżĄăăŚăăžăăďź
ć°ăăć§ćăĺ°ĺ Ľăă䝣ăăăŤăăłăăłăăĺŽčĄăăăăăŽć˘ĺăŽć§ćăŤĺşăĽăăŚăăăăăăăăŻăŞăźăłă§ăă
bashă§čăăŚăżăžăăăďź
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
ăăăŻăçšĺĽăŞć§ćăŽäťŁăăăŤăłăăłăă使ç¨ăăăă¨ă§éżăăăăä¸ç¨ŽăŽăăłăťăłăšă§ăă
ăăŽč¨č¨ä¸ăŽćąşĺŽăŤăŻăçšăŤifăšăăźăăĄăłăă§ăłăšăăçşçăăžăăăăăăĺć¸ăăĺż čŚăăăăžăă ăăăăăäťăŽč˛ăŽăăăŤéăä˝ăćšćłăčŚă¤ăăăăă§ăŻăŞăăăăăŽč¨č¨ĺ˛ĺŚăŽçŻĺ˛ĺ ă§éăćšĺăăćšćłăčŚă¤ăăăăă¨ăăçŤĺ ´ăăă˘ăăăźăăăĺż čŚăăăăžăă
ăăŞăăŽăłăźăăŻćŹĄăŽăă¨ăăăžăăăďźăăăăŻă§&
ă使ç¨ă§ăăă¨äťŽĺŽăăŚďźďź
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ăăăŻç§ăéă芌ăăă¨ăăŤçşčŚăăăąăźăšă§ăă orĺźăŻifăšăăźăăĄăłăăŽĺ¤ă§ăŻtrueă§ăăăifăšăăźăăĄăłăă§ä˝żç¨ăăă¨ďźăŽăăăŤčŚăăžăăďźďźfalseăŤăŞăăžăă ç§ăăăă§ä˝ăăéăăŚăăŞăéăďź
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
bashă¨ćŻčźăăŚăă ăăďź
~/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 / endă使ç¨ă§ăăžăă
if begin; test 0 = 1; or echo stuff | grep stuff ; end
...
ă§ăăăăăăăŻăă¤ăăŤé˘äżăăŚăăăŽă§ăŻăŞăăĺŞĺ é ä˝ăŤé˘äżăăŚăăă¨ćăăžăă
ăăŽăă°ă§ăăăăăăŤăéăăăźăŤćźçŽĺăăľăăźăăăĺż čŚăăăăăŠăăăŤă¤ăăŚăŻĺ¤ăăŽćčŚăăăăžă:)
ă§ăăăăăăăŤćĺ Ľăăăă¨ăăŤăŽăźăŤćčŹăăžăă
ç§ăŽćĺłăŻăăŠăĄăăĺŞăăŚăăăăŠăăăŤă¤ăăŚăŽč°čŤăăăăăăă¨ă§ăŻăăăžăăă ăăăŻăă ăŽĺŽç¨çăŞăă¨ă§ăă
ăťă¨ăăŠăŽäşşă¨ĺăăăăŤăç§ăŤăŻĺŽčĄăăçŹčŞăŽăšăŻăŞăăăăăăžăă é常ăŤĺç´ăŞĺ ´ĺă§ăă&&ćĄäťśăŻăłăăłăăŽćĺďź0ăçľäşďźăäżč¨źăăžăăăă;ăăŻä˝ă辡ăăŁăŚăć°ăŤăăăŤĺ
ăŤé˛ăă§ăă ăăă ĺłďź ăăăăŁăŚăăăăăŻăžăŁăăĺăă§ăŻăăăžăăă ç§ăăĄĺ
¨ĺĄăăăăŤĺćăăăă¨ăéĄăŁăŚăăžăă :)
ă ăăăç§ăŻç§ăŽăšăŻăŞăăăćăŁăŚăăžăăăăăŚăăăăŽăŠăăéă§ĺä˝ăăžăăă ăŻăăç§ăŻăă使ç¨ăăžă&&ă ăăăăăăăŻăä¸čŹçăŤ&&ă使ç¨ăăăbashă使ç¨ăăăăăä¸ăŽăłăźăăŽĺšłĺă§ăçşçăăžăă ç°ĄĺăŤč¨ăă¨ăăłăźăă使ç¨ă§ăăŞăăŞăŁăă¨ăăăă¨ă§ăă ďźD
ç§ăŻçĺăŤćăŁăŚăăžăă...ăăŽĺä˝ăŽăżďź&&ăćĺłăăďźă俎ćŁăăĺžćĽăŽbashăŽăăăŤĺ ăŤćťăăăăŤăfish configăăĄă¤ăŤă§é˘ć°ăžăăŻĺŽçžŠă確çŤăăăă¨ăŻĺŻč˝ă§ăăďź ĺşćĽăžăăďź ăăŁă¨ăăăăďź ĺŽčĄĺŻč˝ă§ăăďź
çš°ăčżăăŤăŞăăžăăăăandăăŽä˝żç¨ăăăéŠĺă§ć確ăŤăŞăĺŻč˝ć§ăăăăă¨ăŤĺćăăžăă ăăăăăăăŻç§ăŽăłăźăă§ăŻćŠč˝ăăžăăăăžăăä¸čŹçăŤăĺĺżč 䝼ä¸ăŽbashăłăźăă§ăŻćŠč˝ăăžăăă ăăăăŁăŚă&&ă罎ăćăăăă§ăŤč¨čż°ăăăăłăźăăĺ¤ć´ăă䝣ăăăŤďź...ăŻçşçăăžăă...ăăăŚăăăăćŠč˝ăăžăăďźă誰ăăĺż čŚăŞĺ ´ĺăăžăăŻĺż čŚăŞĺ ´ĺăŤăéăĺžćĽăŽbashăăćšăç°Ąĺă§ăă
ăăšăŚăŽćéŤăŽäşşăăăăŚĺŞĺăŤăăä¸ĺşŚćčŹăăžăďź
bash
/ zsh
ăšăŻăŞăăă¨ăŽäşćć§ăŤă¤ăăŚăăăăžă§ăŤĺŽĺ
¨ăŤčżăĽăăăă¨ăăăăžăăďź äťĽĺăŽăłăĄăłăăŽă¨ăăă fish
ăăăăăăžăăăăăăŻăăˇă§ăŤç°ĺ˘ă§ăă§ăŤć§çŻăăăăšăŚăŽă¤ăłăăŠăšăăŠăŻăăŁăăé常ăŤĺ¤ăăŽăŻăźăŻăšăăźăˇă§ăłă¨ăľăźăăźăŤĺ¤ćăăăăăŤćéăăăăă¤ăăăăŞăăăă§ăă čżăĽăăăăăä¸ĺşŚčŠŚăăŚăżăăă§ăă ăăă§ăŞăăă°ăç§ăŻăăăŞăă§ăă ćŠăçśăăă§ăăăă ăăăă¨ăă
@rhoconlinux &&
ăăľăăźăăăăăăŤFishăĺ¤ć´ăăŚăăbashăšăŻăŞăăăŻćŠč˝ăăžăăă ăăăăăăŻăăăŤĺ¤ăăŽéăăăăăžăă
ç§ăŻăăŞăăŽçăăç解ăăŚăăžăăă§ăă^ _ ^
&&ĺéĄăŽă¨ă¤ăŞă˘ăšăžăăŻé˘ć°ăĺŽçžŠăăăă¨ăŻĺŻč˝ă§ăăďź
@rhoconlinuxăăăăFishăăźăľăźăĺ¤ć´ăăĺż
čŚăăăăžăďźC ++ăŽĺ ´ĺďźă ç§ăŽăă¤ăłăăŻăFishă&&
ăľăăźăăăŚăăŚăăFishă¨BashăŽéăŽäťăŽăăšăŚăŽéăăŽăăăŤăBashăšăŻăŞăăăŻĺŽčĄăŤĺ¤ąćăăă¨ăăăă¨ă§ăă
@kballardçăďź ăăźăâŚâŚăăăčăăŚă¨ăŚăć˛ăăă§ăă ĺăăăžăăă čś ăŻăŞă˘ă :)
čś éŤéăŽăăŁăźăăăăŻăăăăă¨ăă ç§ăŻăăčŻăćĽĺ¸¸ăŽçľé¨ăŽăăăŤéă使ç¨ăăăăăăç§ăŽăăŽăŽăăăŤbashăżăźăăăŤăäżćăăžăă
äšžćŻďź ďź+1ďź
&&
ăĺéĄăŤăŞăĺ ´ĺăŻăç°ĄĺăŤĺŻžĺŚă§ăăžăă
sed 's/&&/; and /' ~/.bashrc > ~/.config/fish/config.fish
ăăăăăăăăăŞăăăăĺż čŚăăăĺŻä¸ăŽăă¨ăŤăŞăăă¨ăŻăăăăăŤăăăžăăă ă¤ăžăăďź522ăŽĺŽčŁ ă§ăă
&&äşćć§ăŽä¸ťăŞĺćŠăŻăć˘ĺăŽăăŽăĺ¤ćăăŞăăă¨ă ă¨ćăăžă
ăłăźăăăźăšă§ăăăă¤ăłăżăźăăăăăăłăăźă˘ăłăăăźăšăăăžăă
ăă¨ăă°ă sudo add-apt-repo... && sudo apt-get update && sudo
apt-get install ...
ăšăăăăă襨示ăăăăłăăźăăŚč˛źăäťăăăăŽă§ăăă夹ćăăžăă
ăăăŻç§ăăĄăćč˛ăŤăăŁăŚč§Łćąşă§ăăăăŽă§ăŻăăăžăăâ常ăŤĺĺ¨ăăžă
貟ăäťăăăšăăăăăć¨ćşăŽ[ba] shć§ćă使ç¨ăăžăă
ăăăŚă &&
ăŻăç§ăăśă¤ăăŁăŚăăä¸çŞăŽĺéĄă§ăă
ďź export FOO=bar
ăŻďź2ă§ăăă function export; set -x -g
(echo $argv | sed 's/=/\n/'); end
ă§č§Łćąşă§ăăžăăďź
ăăăăăăăŻćˇąĺťăŞĺéĄă§ăŻăăăžăăăç§ăŻăżă¤ăăłă°ăŽçżć
Łă躍ăŤă¤ăăžăăă
bash
ă貟ăäťăăCtrl + Dă
ăăźăăçžĺ¨/䝼ĺăĺŽčĄăăăăăŽăăźăăźăăˇă§ăźăăŤăăăčż˝ĺ ăăăă§ă
bashăŽä¸ăŽăłăăłăăŠă¤ăłă
ăăŽĺéĄăŤé˘ăăç§ăŽ2ăťăłăďź
ç§ăŻăˇă§ăŤăłăăłăĺźăłĺşăăčĄăăăăă¤ăĄăłăăăźăŤďźhttps://github.com/andres-montanez/MagallanesďźăŤĺăçľăă§ăăăăŚăźăśăźă¨ĺŻç¨żč
ăŽĺ¤§ĺ¤ć°ăŻbashăˇă§ăŤă使ç¨ăăžăă ăăĄăăăăăĄăăĄă§ă&&ăă使ç¨ăăŚăłăăłăăéŁéăăăžăă
ćăăăŞĺéżçăăăăžăďźăăšăŚăŽăłăăłăăć示çăŤbashăŤć¸ĄăăŞăŠďź
ăăăăăăăŻĺ¤ăăŽĺéĄçšăăăăăăžăă 1ă¤ăŻăĺĽĺŚăŞĺŻä˝ç¨ăçşçăăĺŻč˝ć§ăăăăă¨ă§ăďźă¤ăžăăPATHă¨äťăŽĺ¤ć°ăĺăăăăŤĺŽçžŠăăăŚăăŞăďźăăăăŻăăăŽĺŻä¸ăŽçŽçăŽăăăŤăăźăŤăŽăłă˘é¨ĺăăăăăłă°ăăăă¨ăćĺłăăăăźă¸ă§ăłăă¨ăŤäżŽćŁăăăźă¸ăăĺż
čŚăăăăžăăć´ć°ăăăăłăŤă
&&ăŻăfishă¨äşćć§ăŽăŞăĺ¤ăăŽbashćŠč˝ăŽ1ă¤ăŤăăăžăăăăćăĺşćŹçă§ĺşă使ç¨ăăăŚăăćŠč˝ă§ăăĺŻč˝ć§ăăăăžăă ăă¨ăă°ăä¸č¨ăŽăăźăŤăŻPHPă§ăăăăăč¤éăŞăăŽăŻăăšăŚPHPă§ĺŽčĄăăăĺşćŹçăŞăˇăšăă ăłăăłăăŽăżăăˇă§ăŤăŤć¸Ąăăăžăă ăăŽăăăŞćĺ°éăŽăŚăźăšăąăźăšă§ć§ćăŽéäşćć§ăčŚă¤ăăăă¨ăŻă¤ăŠă¤ăŠăăžăă
ç§ăŽćčŚă§ăŻă @ cbenă&&
ă¨č¨ăŁăăă¨ăŤĺŽĺ
¨ăŤĺćăăžăăăăăŻăăłăăźă¨č˛źăäťăăŽéăă&&
ăľăăźăă ăă§ăăăăŞăłăŠă¤ăłăŽăłăźăăšăăăăăć°çžăăăăă§ăă
ç§ăŻĺćăăžăăăć§ćăŞăŠăŽčŚłçšăăéăăŠăŽăăăŤé˛ăăăčć
Žăăăă¨ăéčŚă§ăăăăăŻăéă使ç¨ăăăăžăăŻä˝żç¨ăăăĺ¤ăăŽéçşč
ăŽçć´ťăăŻăăăŤĺŽšćăŤăăăăŽă ă¨ćăăžăă &&
ă; and
罎ăćăăă ăăŽăăăŤćăăžăăăäťăŽäşşăŤéăŽç´ ć´ăăăăäźăăă¨ăăă¤ăç
ŠăăăăŚĺ°ăăăăĄăŞăćăăžăăăăăăăĺăăŞăăă°ăŞăăžăăăăăă¤ăăŽăăźăŻăźăăĺ¤ć´ăăă¨ă彟ăăŻé常ăăŞăç§ăăăŽăăăŞĺç´ăŞăăŽăĺ¤ć´ăăŞăăă°ăŞăăŞăăŽăçĺăŤćăăžăă ăăăăç§ăŻéăĺŽăĺż
čŚăăăăžăăăăăŚăăăŻéăäżé˛ăăăăăŽç´ ć´ăăăăąăźăšăä˝ăăžăăă
ćăŤăŻăăăŻćŹĺ˝ăŤć大ăŽĺ˝ąéżăä¸ăăăă¨ăă§ăăćăĺç´ăŞăăŽă§ăă
ă¤ăžăăbash &&
ć§ćă訹ĺŻăăăă¨ăŤĺ
¨ĺă注ăă§ăăžăă
@Globegitteră¨@cbenăč¨ăŁăăă¨ăŤĺćăăžăă č¨ĺ¤§ăŞéăŽăšăŻăŞăăă¨ăăă°ăŠă ă&&
ă¨||
äžĺăăŚăăžăă ç§ăŻăŻăźăŻăšăăźăˇă§ăłă§ăăŁăăˇăĽăˇă§ăŤă使ç¨ăăŚăăžăăăăšăŻăŞăăăä˝ćăăă¨ăăŤăˇă§ăŤéăŽäşćć§ăăăă¨äžżĺŠă§ăă
FishăšăŻăŞăăă¨BashăšăŻăŞăăăŽéăŤăŻă &&
ă¨||
䝼ĺ¤ăŤăĺ¤ăăŽĺ¤§ăăŞéăăăăăŽă§ăăăă§ăłăĄăłăăăăăšăŚăŽäşşăăFishăŤ&&
ăĺăĺ
Ľăăăăă¨äżĄăăŚăăăŽăŻăŞăă§ăăăăŞăăăăŽćĺłăăăăžăăďź BashăłăźăăŽăšăăăăăĺŽčĄăăĺż
čŚăăăĺ ´ĺăŻă bash
ăĺŽčĄăăăšăăăăăĺŽčĄăăŚăăăFishăŤćťăăžăă
ĺ¤ăăŽäşşăéăŤă蝢ĺăăăăă¨ćăŁăŚăăă¨ćăăžăăăăăăĺŽçžăăăăăŽă¤ăłăăŠăšăăŠăŻăăŁăăăăžăă ăă¨ăă°ăčŞĺăŽăŻăźăŻăšăăźăˇă§ăłă ăăŤ15ĺš´éăŽăˇă§ăŤăšăŻăŞăăăăăďźéăĺŽčĄăăăäťăŽăľăźăăźăŻč¨ăăžă§ăăăăžăăďźăĺ¤ćăŤćéă貝ăăĺż čŚăŻăăăžăăă ć°ăćăăăŚăçŠäşăăéăŽăăăŤăćŠč˝ăăăăă¨ăŻĺéĄăăăžăăăăĺĽăŽăˇă§ăŤăŤĺ¤ć´ăăăăăŽăŻăźăŻăăăźăŤăăŽăăăŞĺććčłăčĄăćšćłăŻăăăžăăă
ä¸čŹçăŞäşćć§ăŽĺéĄăŤĺŻžĺŚăăă°ăéăŤăŻăăŞăăŽăŚăźăśăźăćľĺ Ľăăă¨ćăăžăăăéăŽéçşăŤćşăăäťăŽäşşăč¨ăŁăŚăăăă¨ăăăăăăŻăăă¸ă§ăŻăăŽĺŞĺ äşé ă§ăŻăŞăăăă§ăă ăăŽçšă§é˘¨ćŻăĺ¤ăăŁăăăćçľçăŤăŻéăŤç§ťăăăăŽă§ăç§ăŻăăŽççąăăăăăŤçŽăĺ ăăăŚăăžăă
ĺż
čŚăŤĺżăăŚbash
ăžăăŻzsh
ăĺŽčĄăăăă¨ăŤé˘ăăŚăŻăç§ăŽĺ ´ĺăăăăăŽăˇă§ăŤăĺŽčĄăăăŽăŻăăŞăăŽéăŤăŞăăžăăăă䝼ĺ¤ăŽĺ ´ĺăŻăăăŽăăšăăăŠăăŽăŻă°ăăăŚăăžăă
@kballardç§ăŻfishă§čĄăăšăŻăŞăăăŽ95ďź
ăŤçćłçăŞăŻăźăŻăăăźăćăŁăŚăăžăďźcmd + CĺĽăŽă˝ăźăšăăăŽé常ăŤĺç´ăŞăšăŻăŞăăăcmd + tabăăiTermăcmd + văEnteră ăăăç§ăăăăăăă¨ăŽăăšăŚă§ăăăä˝ĺăŞbash
ăŞăŠăŻä˝ăăăăžăăă ăťă¨ăăŠăŽĺ ´ĺăăăăăŽăšăŻăŞăăăăăŽćŁç˘şăŞăŻăźăŻăăăźă§ćŠč˝ăăăŽă匨ăăĺŻä¸ăŽăă¨ăŻă &&
ĺĺ¨ăăăă¨ă§ăă ăăăç§ă¨ç§ăŤă¨ăŁăŚăăăŽĺéĄă解湺ăăäťăŽăťă¨ăăŠăŽäşşăé常ăŤĺ˝šçŤă¤ă¨ćăççąă§ăă
ăăŞăčŞčşŤăăăăçľé¨ăăŚăăŞăăŽăŞăăăăŞăăŽăŻăźăŻăăăźăé ťçšăŤä¸ćăăăĺ ´ĺăăăăŻĺč¨ăăăćŹĺ˝ăŤăăŞăăŽĺżăŤĺşĺˇăăă¨ç§ă俥ăăŚăă ăăă
ç§ăŻäťăŽăăšăŚăŽăăăŤéă大弽ăă§ăăăăç§ăĺ ăŤćťăăă¨ăă§ăăŞăăŁăççąă§ăăăăăăăŽĺç´ăŞăă¨ăŻăăăç§ăŤă¨ăŁăŚç´ ć´ăăăăă¨ă匨ăăăăŽă§ăăăăăŚç§ăŻăăă§äťăŽăăă¤ăă䝎ĺŽăăžăă
ăŠăăă PRďź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
形ĺźăŽčĄăŤč˛źăäťăăŚăćŠč˝ăăăăă¨ăă§ăăžăă
PRďź1633ăĺăĺ
Ľăăăăăžă§ăăăŽăšăŻăŞăăăŻ_typing_ &&
/ ||
ăă貟ăäťăă§ăŻćŠč˝ăăŞăăă¨ăŤćł¨ćăăŚăă ăăă
@kballardăăăźăăăăŻç´ ć´ăăăăăĽăźăšă§ăďź ăŠăăăăăă¨ăă
ăăăŻĺŽéăŤăŻć¤ç´˘ă˘ăźăăéŠĺăŤĺŚçăăŚăăŞăăăăŤčŚăăžăďźăăźă¸ăŁăźă˘ăźăăŤă¤ăăŚăŻăăăăăăžăăăćŁç˘şăŤä˝ăć§ćăăăŚăăăŽăăăăăžăăďźă ć¤ç´˘ä¸ăŤ&
ăžăăŻ|
ăćźăă¨ăć¤ç´˘ăçľäşăăžăă ăăăŻč¨ăŁăŚăăăŠăăăŁăŚăăăĺŚçăăăŽăăăăăžăăă
č¤ć°čĄăŽăłăăłăă§|
ăžăăŻ&
ă¨ĺ
ĽĺăăăăăŽăă°äżŽćŁă使ç¨ăăŚăăšăŻăŞăăăć´ć°ăăžăăă
@kballardPRăä¸é¸ăăăŽăčŚăžăăă ăăăăŁăŚăä¸ăŤč˛źăäťăăăšăŻăŞăăăŻă &&
ăćć°ăŽăăšăżăźă§ćŠč˝ăăăĺż
čŚăăăăžăăďź
ăăăăăăăšăă§ăă 芌ăăŚăżăŚăĺéĄăăăă°ćăăŚăă ăăă
-ăąăăł
2014ĺš´9ć1ćĽăŤăŻăĺĺ1ć14ĺAMă§ăăăŤăŻăšPadourek [email protected]ć¸ăăžăăďź
@kballardPRăä¸é¸ăăăŽăčŚăžăăă ăăă§ăä¸ăŤč˛źăäťăăăšăŻăŞăăăŻăćć°ăŽăăšăżăźă§&&ăĺä˝ăăăĺż čŚăăăăžăăďź
â
ăăŽăĄăźăŤăŤç´ćĽčżäżĄăăăăGitHubă§čĄ¨ç¤şăăŚăă ăăă
ć°ćĽĺăŤăŞăŞăźăšăăăć°ăă2.1.1ăăźă¸ă§ăłă§ăăŽăšăŻăŞăăă芌ăăžăăăăćŠč˝ăăŚăăŞăăăă§ăă 2.2ăžă§ĺž ăăŞăăă°ăŞăăžăăăďź ăăăă¨ăďź
@pragmattica ďź2.1.1ăŻăťăăĽăŞăăŁăă°äżŽćŁăŞăŞăźăšă§ăăă ć°ăăćŠč˝ăŻčż˝ĺ ăăăžăăă§ăăă
@xfix ďź
ç´ ć´ăăăďź+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
ăăăĺéĄă@pragmatticaă§ăăăă¨ăăăăŁăŚăăă¨ćăăžăăăłăăłăcommandline
ăŻăĺźç¨çŹŚăŞăă§ăăăăĄăźăčżăăžăă ăăăăăă ăă ăăăăŁăŚă httpsďź//github.com/fish-shell/fish-shell/issues/2210ă俎ćŁăăăăăä¸č¨ăŽăšăŻăŞăăă俎ćŁăăĺż
čŚăăăăžăă
ăăăŻăžă ć¤č¨ăăĺ§ăăŚăăžăăďź
+1
ăˇăłăăŤăŻĺĽĺŚăŞăăŽă§ăŻăŞăăĺ¤ăăŽăăă°ăŠăăłă°č¨čŞăŽăă¸ăăŻăŤä¸čŹçăŤä˝żç¨ăăăŚăăžăă
ăłăăźă˘ăłăăăźăšăăŽäşćć§ăŻé常ăŤçžĺŽçăŞč°čŤă§ăăăç§ăŻăăăćŻćăăŚăăžăă
ç§ăŻćŞč
ăŤăŞăăăăŽč°čŤăçˇ ăăăăăžăă ăăăŻĺŽčŁ
ăăăžăăă çšăŤăăbashăšăŻăŞăăăăăłăăłăăăŤăăă˘ăłăăăźăšăăă§ăăăăăŤăăăă¨ăăçš°ăčżăăŽçşč¨ăŤćŠăžăăăŚăăžăă fishă&&
ăăăł||
ćźçŽĺăăľăăźăăăŚăăĺ ´ĺă§ăăăăăăŽćźçŽĺăĺŤăăšăăźăăĄăłăăĺç´ăŤĺăĺăŁăŚč˛źăäťăăăă¨ăă§ăăă¨ăŻéăăžăăă ç§ăăĄăŻăăŞăăăăăăăă¨ăă§ăăă¨ăăĺ°čąĄăä¸ăăăăăăžăăă ćŁç´ăŞă¨ăăăbash / zshăŽć§ćă¨ĺä˝ăĺż
čŚăŞĺ ´ĺăŻăăăăăŽăˇă§ăŤďźăžăăŻăăăă¨ăŽäşćć§ă丝埾ăă䝣ćżć掾ďźă使ç¨ăăĺż
čŚăăăăžăă
č°čŤăăăäťăŽă˘ă¤ăă˘ăŽăťă¨ăăŠăŻăçŹčŞăŽĺéĄăćąăăŚăăăŻăă§ăă çšăŤăksh88ďźbashă§ăŻăŞăďźăŤăăŁăŚćĺăŤĺ°ĺ
Ľăăă[[ ... ]]
ĺä˝ăŽăăă¤ăăĺŽčŁ
ăăăă¨ăŤăŻăăă¤ăăŽăĄăŞăăăăăăăăăăžăăă ăăăăăăăăăăăăăŽçšĺĽăŞăăźăŻăłăĺŽčŁ
ăăăŽă§ăŻăŞăăçľăżčžźăżăŽtest
ăłăăłăăžăăŻć°ăăăłăăłăăćĄĺźľăăăă¨ăŤăăŁăŚă
zshă¨bashăăľăăźăăăŞăă¨ăăăăŽćŚĺżľăŤăŻăžă é常ăŤä¸ĺŽăăăăžăă čŤçăŻç解ă§ăăžăăăĺćăăžăăă ćăŻéăŤă¨ăŚăčĺłăăăăžăăăăĺ寞ă§ĺźăŁčśăăžăăă éçşč ă¨ăăŚăăăăĺŽčŁ ăăăăă¨ăćăă§ăăç§ăăĄăĺĺăŤăăĺ ´ĺăŻăăăă§ăăă¸ă§ăŻăăăăŠăźăŻăăćŠäźăăăăăăăăžăăă ăăŽăăăŞčĺłćˇąăä˝ĺăŽĺé˛ăŽĺ˘ăă¨ĺăĺ ĽăăćçľçăŤĺŚ¨ăăăăŽçśçśçăŞćľćăčŚăăŽăŻć˛ăăăă¨ă§ăă
@ylluminate ăzshă¨bashăăľăăźăăăăăă¨ă§ä˝ăčăăŚăăžăăďź ăŠăŽăŹăăŤăŽäşćć§ăĺż čŚă§ăăďź
zshă¨bashăăľăăźăăăŞăă¨ăăăăŽćŚĺżľăŤăŻăžă é常ăŤä¸ĺŽăăăăžăă čŤçăç解ă§ăăžă...
éăbashă¨zshăŽćŠč˝ăăľăăźăăăăăăŽăă¸ăăŻăăăăăžăăă Javaăĺż čŚăŞĺ ´ĺăăŞăC ++ă使ç¨ăăăŽă§ăăďź Perlăĺż čŚăŞĺ ´ĺăăŞăPythonă使ç¨ăăăŽă§ăăďź @ridiculousfishăăĄăăăŠĺ°ăăăăăŤăăăă¤ăăŽć§ćçłčĄŁăŽäťăŤăéăăăŞăă嚸ăăŤăăăăăŤäťăŤä˝ăăľăăźăăăŞăăă°ăŞăăŞăă§ăăăăďź éăŻăŠăŽćçšă§ĺĽăŽăăăˇăĽăŻăăźăłăŤăŞăăžăăďź
PSăç§ăŻ1979ĺš´ăăçč¨ăçŤăŚăăăăŤăăă°ăŠăăłă°ăăăŚăăă80嚴䝣ĺă°ăăUNIXă使ç¨ăăŚăăžăă ć°ăĺăăŞăăťăŠĺ¤ăăŽăˇă§ăŤă使ç¨ăăžăăďźäžďźBourneăCshăKsh88ăKsh93ăBashăZshăXonshďźă ăˇă§ăŤăŽĺăćżăăŤăŻĺ¸¸ăŤä˝ćĽăĺż čŚă§ăďźăăŽăăă5ĺš´ăŤ1ĺç¨ĺşŚăăĺăćżăăžăăďźă ăăăăă¨ăăć°ăăăˇă§ăŤăĺ¤ć´ăŞăăŤăăšăŚăŽăŹăŹăˇăźăšăŻăŞăăăĺŽčĄăăŞăă¨ćĺĽăč¨ăăă¨ăŻăăăžăăă
@ krader1961ăăăšăăźăă ç§ăŽčŹčăŞćčŚă§ăŻ...
ç§ăŻăă¤ăéăŽăšăŻăŞăăăć¸ăăăă§ăŻăăăžăăďźćł¨ćăçśăăžăďźďź
; and
ă ; or
ăç§ăŤăŻéăăăăŤčŚăăžăďźăăă¨ăéăŽăšăŻăŞăăăäťăŽăˇă§ăŤďźmkshăbashăŞăŠďź
ä¸ćšăç§ăŻéă使ç¨ăăžăăççąăŻćŹĄăŽă¨ăăă§ăă
set -Ux
ďź@ylluminateăăŽ4ĺš´ĺăŽĺˇăčŚăă¨ăbashăŽăăăŞéă漽ăăżăăäşşăăžă ć ć°ă§ĺżăăăă¨ăăăăăžăă çąĺżăŞäşşăăĄăŻčŞĺăŽćŽťăä˝ăŁăŚăăžăďźăă¸ăˇăŁăł/ă¤ăăˇăĽăă¨ăŤă/ă¨ăŤăăăă¤ăąăŤăăˇăăš/ăăăăăăŚç§:-PăŞăŠďźă éăŽăăăŞćšćłă§çŠäşăăăăăăŽăŞăăăăăăéăŽăŞă掝ăĺż čŚă§ăă
&& ||
ăéăŤĺŽčŁ
ăăćšćłăćŹĺ˝ăŤć¤č¨ăăăăăăăăťăŠéăŁă˝ăăŞăăăŽăŤăăŞăĺ ´ĺăŻă begin; end
ăćĺşăăŚăăăă¨ăăăăăžăďźăłăăă594b460ba2d8dca59a3bfd282397c5f33aa9da6făčĄăăă¨ăĺç
§ăăŚăă ăăăăŤăŚăłăżăź- ;
and or
ăŻäşéăŽĺ˝šĺ˛ăćăăăă¨ăŚăăăéăďźăăăŚăťăăŽĺ°ăăŽç çłăćăŤĺ
Ľăăžăă
@pickfire ăéăŽĺ°ćŹăé ăăăŤă¤ăăŚčŠłăă
ç§ăŽăăšăăŽéă§FWIWăŻăŽăăăă§ăăăéŤéăŞĺ
¨ä˝çăŞbashăŽăă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
ăăă§ăŻéăăăăăĺăĄăžăăăăăăŻä¸ťăŤăăŠăźăŻă¨posix_spawnăŽéăă渏ĺŽăăŚăăžăă
ăăă§ăŽçľčŤăŽ1ă¤ăŻăĺ ćŹçăŞăăłăăăźăŻăšă¤ăźăăĺż čŚă ă¨ăăăă¨ă§ăă
@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
ăŻĺ°čąĄçăŞăšăăźăăćăŁăŚăăăăă§ăă
@pickfire fishăŽls
ăŻăLinuxä¸ăŽé˘ć°ă§ăăăbashăĺŽčĄăăŚăăŞăăĺşĺăăăéŠĺăŤăăăăăŤäťăŽĺŚçăĺŽčĄăăžăă Linuxă§ăŞăłă´ă¨ăŞăłă´ăćŻčźăăăĺ ´ĺăŻă command ls
ă ďźăăźăŚăŁăłă§ăŻăéăŽls
ăŠăăăźăŻăŻăăăŤčăă§ă-ç§ăŻăăăććăăĺż
čŚăăăăžăăăăç§ăŻĺżăăžăăăďź
ăăšăă§ăŽmkshăŽăĺ°čąĄçăŞé庌ăăŽčŞŹćăŻămkshăŤăŻăăŹăźăšćĄĺźľăăŞăăăă ls
1ĺă ăĺźăłĺşăăă¨ă§ăă ćăăăŤă ls
1ĺĺźăłĺşăćšăă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ăŽăłăłăăłăďźă¨ă¤ăŞă˘ăšăŽĺŽçžŠăŞăŠďźăĺĺ ă ă¨ćăăžăă ăĄăŞăżăŤăăăăŻç§ăŽLinuxăăăŻăšăŤčĄ¨ç¤şăăăăăŽă§ăďźăăăă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...
誰ăăă¨ăŚăčżăă§ăă
ăăłăăăźăŻăŤă¨ăŁăŚăfork / execăžăăŻposix_spawnăăăšăłăăłăăŤĺŽčĄăăä¸ç¨ŽăŽăăŞăŠăŻăŤăˇă§ăŤăăçľăżčžźăăă¨ăŻčĺłćˇąăăăăăăžăăăăăăŤăăăOSăćäžă§ăăć大é庌ăăăŠăă ăé˘ăăŚăăăăçĽăăă¨ăă§ăăžăă ă
@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ăĄăăťăźă¸ăăăăăŻă§ăăăăăŤăĺĽăŽĺéĄă§ăăŁăăă§ăăžăăďź
ăŻăăăăŽĺéĄăăšăă ăăŚçłă訳ăăăžăăă @pickfireçšăŤčĺłćˇąăăăžăăŻé˘éŁć§ăăăă¨ćăăăăăłăăăźăŻăăăŠăăźă˘ăăăăăĺ ´ĺăŻăĺĽăŽĺéĄăéăăŚăă ăăă
bashă¨zshăŽäşćć§ăŤă¤ăăŚăŻăĺäşşçăŤăŻĺŽĺ
¨ăŞäşćć§ăŻćĺž
ăăŚăăžăăăăäşćć§ăĺ°ăă§ăčż˝ĺ ăăăă¨ă§ăéăŽäşşć°ăéŤăžăĺŻč˝ć§ăăăăžăă
ăšăŻăŞăăăčć
ŽăăŞăăŚăă &&
ă¨||
ăŻăłăăłăăŽéŁéăŤé常ăŤä¸čŹçăŤä˝żç¨ăăăăăăéčŚă§ăă äžă¨ăăŚăç§ăŻăžă ďź2292ăŤĺéĄăăăăžăă éăŽăă°ă§ăŻăŞăă¨čăăăăăă¨ăŻçĽăŁăŚăăžăăăéăŽç¸ć§ăćšĺăăăă¨ă§äżŽćŁă§ăăăŽăŻäşĺŽă§ăă
ç§ăŻăăă§maxflă使ç¨ăăŚăăžăďź-1ďźăăăäşşć°ć缨ă§ăăă¨ćăăăĺ ´ĺăéăŽć§ćăŽä¸é¨ă¨ăăŚ||
ă¨&&
ăćăŁăŚăăăăă
éăŻbashďźăžăăŻzshďźă§ăŻăăăžăăă &&
ă¨||
ăĺŽčŁ
ăăççąăŻăăăăăŽăˇă§ăŤă¨ăŽäşćć§äťĽĺ¤ăŤăăăžăăă çžçśă¨ăŽäşćć§ăŻăăăŽăăă¸ă§ăŻăăŽĺçŽć¨ă§ăă
@Nodd ďźĺéĄďź2292ă¸ăŽĺç §ăŻăĺŽéăŤăŻăfishăăăŽć§ćăĺŽčŁ ăăŚăŻăŞăăŞăççąăŽäžă§ăă ăăăăăă¨ăŻăéăPOSIXďźbashăzshăŞăŠďźăŽăŻăăźăłă§ăăă¨äşşă ăŤćăăăăăăŽăă1ă¤ăŽăšăăăăŤăŞăăžăă ăăăŻăéăäťăŽĺ°ĺăŽč˛ćŽťăŽăăăŤćŻăčăă¨ăăäťăŽčŚćąăçăżĺşăă ăă§ăă
解湺çăć˘ăăŚăăăăšăŚăŽäşşăŤă¨ăŁăŚăfish 2.3䝼éăćçľçăŤĺŽĺ ¨ăŤćŠč˝ăă解湺çăăăăă¨ă確čŞă§ăăžăă
ä¸č¨ăŽĺçăŤč¨čźăăăŚăăăă¨ăĺŽčĄăăŚăă ăăă
ăŠăăă PRďź1633ăăŞăŞăźăšăăăăă揥ăŽć ĺ ąăĺĺžăăŚă/ .config / fish / features /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 ďźăăŽé˘ć°ăŽĺéĄăééăŁăŚăăžăă ăăăŻă!!ăă§ăŻăŞăă&&ăă¨ă||ăăŤă¤ăăŚă§ă - ç°ăŞăăăŽă
@faho lolăăăŞăăŻćŁăăă§ăă ăăŽĺéĄăăăă¤ăéçĽăĺąăăŽă§ăăăăsudoăŽĺĽăŽăąăźăšă ă¨ćăăžăă!!ă
@Globegitter桡䚹ăăŚăăżăžăăďź
ăŚăźăśăźăäžżĺŠăŤăłăăźă§ăăăăăŤăććĄăăăĺéżçăéăäžă¨ăăŚĺşčˇăăăŽăŻăŠăă§ăăďź ă¨ăŠăźăĄăăťăźă¸ăŻăăăăŤč¨ĺăăăăăŤç°ĄĺăŤćĄĺźľă§ăăžăă ăťăźăăšăŚăŽăˇă§ăŤďźunix-yăˇă§ăŤäťĽĺ¤ăŽWindows cmd.exeăĺŤăďźă§ĺä˝ăăăăă&&ă使ç¨ăăăŚăăĺă1ă¤ăŽăŠă¤ăăźďźgerrit code-reviewăăďźă貟ăäťăçśăăžăă ç§ăŤă¨ăŁăŚăä¸č¨ăŽăšăŻăŞăăăŻççŁć§ăĺä¸ăăăăăŽă§ăďźăă°ăăăŽéăbash -c "pââaste here"ă¨ĺ ĽĺăăŚăăžăă...ďźă
ç§ăŻăŠăŽăăăŤčĄăăžăă ďźďź ďź č§ŁćąşçăŻăăăžăăďź
ä¸č¨ă¨ĺăĺéĄăç§ăŻćŹĺ˝ăŤăăćšćłăčŚă¤ăăăă¨ăă§ăăžăă
gcc test2.c -o a.out && ./a.out
éă§ă
gcc test2.c -o a.out; and ./a.out
@ivanăŻăăă芌ăăžăăăăgccăŽĺźć°ă¨ăăŚăandăă¨ă./a.outăăćĺŽăăžăă
//硨éďźăĄăŞăżăŤăăăăŻéă§ăŻĺŽĺ ¨ăŤä¸ĺŻč˝ă§ăăăăăŤćăăăăăăbashăšăŻăŞăăă使ç¨ăăăă¨ăŤăŞăăžăă:(
gcc test2.c -lwlc -o a.out && (( sleep 2s; DISPLAY=:2 xterm ) & ./a.out)
ç§ăŻăăŽăĺŽĺ
¨ăŤä¸ĺŻč˝ăŞăăă¨ăé ťçšăŤčĄăăžăă ăăăăŞéăŽç°ĺ˘ă§; and
ć§ćă芌ăăŚăżăžăăăďź ăăžăăăăŞăĺ ´ĺăŻăăťăăłăăłăŤä˝ăĺéĄăăăăžăăďź ăăăéăŤĺ
ĽĺăăŚăăžăăăăăă¨ăĺĽăŽăăă°ăŠă ăă渥ăăăŚăăžăăďź
@ivană§ĺ Ľĺăăžăă
ăăăăă°ăăă質ĺă§çłă訳ăăăžăăăăăăŁăăŻăŠăăăă°ăăă§ăăďź ăăăĽăĄăłăă§ăăăăŤă¤ăăŚăŽĺčŞăčŚă¤ăăăă¨ăă§ăăăăăăŻćŁç˘şăŤă°ăźă°ăŤĺŻč˝ăŞăăăăŻă§ăŻăăăžăă:(
gcc test2.c -lwlc -o a.out &&ďźďźsleep 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
2ç§éăšăŞăźăăăŚăăăxtermă辡ĺăă_then_ăŻăăŽxtermăŽXServeră辡ĺăăžăă XServerăŽćşĺăć´ăĺăŤxtermofcăăŻăŠăăˇăĽăăžăă
ăăăăăăăŞăăă ĺéĄďź https ďź
ăăŞăăŻăăŞăăăăăă§ăŻăŞăăăăŞăăăăŞăăă°ăŞăăŞăăăăŤăăŁăŚăăŞăăăăăĺéżăăăă¨ăă§ăăăŽăčŚă¤ăăă§ăăăďź
fish -c 'sleep 2s; env DISPLAY=:2 xterm' & Xephyr :2
npm run-scriptsăŽéçşăć§çŻăăăăłĺ é¨ă§ć˘ĺăŽăšăŻăŞăăă大éăŤăăĺ ´ĺăçšăŤä¸é¨/ăťă¨ăăŠăéă§ăŻăŞăăăăĺăćżăăăŽăŻĺççă§ăŻăăăžăăă ăˇăăłă使ç¨ăăé常ăŽbashăšăŻăŞăăăŽĺ ´ĺăăăĄăăĺéĄăŻăăăžăăă
&&ăŽĺŞăăďźăžăăŻăĺŞăăăďźçšăŻăLinuxăMacă ăă§ăŞăăéçşç°ĺ˘ăŞăŠăŽčż éăŞăťăăă˘ăăăŤéŠăăWindowsăŽé常ăŽăˇă§ăŤă§ăćŠč˝ăăăă¨ă§ăă
ćąşăăŚĺĺźă匨ăăăăŽă§ăŻăăăžăăăăăŞăăăăčż˝ĺ ăăăŽăç解ăăăŽăŻéŁăăă§ăăďź
ăžăăăăăŻăăŞăă°ăăăč°čŤă§ăă éăŽăłăłăă¤ăŠăŤç°ăŞăăă˘ăźăăăćăăăŚăżăžăăăďź ă¤ăžăăăç´ç˛ăŞăéăŽăăŽă使ç¨ăăăăéăŽă¤ăşă ă¨ä¸çˇăŤăăăˇăĽăŽăăăŞăˇă§ăŤă¨äşćć§ăćăăăăă§ăăăćĺšăŤă§ăăăă税ăŽč¨ĺŽă§ăă äťăŽăˇă§ăŤă¨ăŻç°ăŞăăăŹăăŤăăŽäşćć§ăćăăăăă¨ă§ăĺŽĺ ¨ăŞäşćć§ăäşćć§ăŽăŞăăăŽăăžăăŻăăŽéăŽä˝ăăĺŽçžăăăă¨ăă§ăăžăă ă¤ăžăăĺşćŹçăŞăŹăăŤă§ăŻăĺ°ăŞăă¨ăăăŽăăăŤä˝ăăăŽă˝ăźăšéăłăłăă¤ăŠăĺŽčŁ ă§ăăžăă ăžăăŻăbashăłăźăăĺĺžăăŚăéăŽĺ é¨ä¸é襨çžăŤĺ¤ćăăžăă ăăŽçšă§ăăăŞăăŻçżťč¨łăŽăăăŤăăăă税éĄăŽăă¨ăăăăă¨ăă§ăăžăă ç§ăééăŁăŚăăĺ ´ĺăŻč¨ćŁăăŚăă ăăăăă ăăbash etalăăŽč¨čŞăŹăăŤăŽćŚĺżľăŻäżĄăăŚăăžăă éă¨éăŻä¸ççăŤéŠăăťăŠéăăŻăăăžăăăăďź
ă¨ăŤăăăăăăŻăăŽĺéĄăŤé˘ăăç§ăŽ0.02ăăŤă§ăăăăăŻă揥ăŽĺćăŤĺşăĽăăŚć§çŻăăăŚăăăăăćŹĺ˝ăŤă°ăăăŚăăăăăŤčŚăăžăă
"pure fish"
XOR
"compatibility with bash / becoming another bash clone"
ăăăăŽ2ă¤ăŽćŚĺżľăŽéăŤä¸éçšăăăăă¨ă匨ăăăăŽăä˝ăăŞăă¨ăă
ĺ°ăŞăă¨ăăbashăŽăăăŞăˇă§ăŤăŻăéăŞăŠăŽăăéŁč§ŁăŞăˇă§ăŤăăăăŻăăăŤć¨ćşçă§äşşć°ăăăă¨ăăçžĺŽăŤç´é˘ăăĺż čŚăăăăžăăăăăăŁăŚăéăă¤ăžĺ ăŤçŤă¤ăă¨ăă§ăăăˇă§ăŤăŤăŞăçžĺŽçăŞĺŻč˝ć§ăŽăăăŤăä˝ăăăŽäşćć§ăŹă¤ă¤ăźăĺŽéăŤĺĺ¨ăăĺż čŚăăăăžăă -ĺşăćŽĺăăŚăăŚäşćć§ăŽĺéĄăĺźă辡ăăăŞăă¨ăăçšă§ăbashă使ç¨ăăŚă¤ăžĺ ăžă§ă
...ăăăăŽ2ă¤ăŽćŚĺżľăŽéăŤä¸éçšăăăăă¨ă匨ăăăăŽăä˝ăăŞăă¨ăă
ĺż čŚăŞăłăźăăć¸ăăăăŤ2,000ćéďź1äşşĺš´ďźäťĽä¸ăćčłăăŚăăäşşďźăžăăŻäşşă ăŽă°ăŤăźăďźäťĽĺ¤ăŽä˝č ă§ăăăăžăăă ăăŽăăšăŚăĺŽčŁ ăăăăăŤă @ ylluminariousăŽăăŤăŞăŻă¨ăšăă確čŞăăăă¨ă漽ăăżăŤăăŚăăžăă ăăŞăăććĄăăŚăăăă¨ăŻăăŞă誰ăăPythonăŤPHPă解éăăăăă¨ăă§ăăŞăăŽăăĺ°ăăăă¨ă¨ĺăă§ăă çăăŻăçčŤçăŤăŻäşćć§ăšă¤ăăă使ç¨ă§ăăă¨ăăăă¨ă§ăăăăŞăăăăăăŽă§ăăăăă
ďź4620ă§ĺŽčŁ ăăăžăăă
ćăĺčăŤăŞăăłăĄăłă
||
ăăăă§ăăăă