ããã«ãã³ã¯æ©èœããªãããã§ãsudoãæ€çŽ¢ã«å€±æããããã°ã©ã ãšããŠäœããã®åœ¢ã§è§£éãããŸãã ããã¯ããœãŒã¹ããã³ã³ãã€ã«ããããã£ãã·ã¥ã·ã§ã«ãåããUbuntu 12.04LTSã§çºçããŸãã
ä»»æã®ã³ãã³ããå®è¡ããŸãã
$ ls
åã®ã³ãã³ããrootãšããŠå®è¡ããŸãã
$ sudo !!
sudoïŒ!!ïŒã³ãã³ããèŠã€ãããŸãã
ã³ãã³ãsudo !!
ã¯ã以åã«å®è¡ãããã³ãã³ãïŒ ls
ïŒãrootãšããŠå®è¡ããŸãã
ãŸããbashã§åçŸæé ãå®è¡ããŠãåé¡ã®åå ãsudo
ã¯ãªãããšã確èªããŸãããããã¯ãæåŸ
ã©ããã«åäœããŸããã
ãŸããMac OS X 10.7ã®ä»¥åã®ããŒãžã§ã³ã®fish-shellã«ã¯ãã®åé¡ã¯ãªãã sudo !!
ã¯æåŸ
ã©ããã«æ©èœããããšã«æ³šæããŠãã ããã
ããã¥ã¡ã³ãã®FAQã§èª¬æãããŠããŸãïŒ http ïŒ//fishshell.com/docs/current/faq.html#faq -history
説æããŠãããŠããããšãã
å±¥æŽæåãåé€ããçç±ãç解ããŠããŸãã ãã ãããã®çç±ãšãEnd and Homeã®ä»£ããã«CeãšCaã䜿çšã§ããããšã¯ç解ããŠããŸãããå€ãã®ãŠãŒã¶ãŒãç¹ã«ä»¥åã®ãŠãŒã¶ãŒã«ãšã£ãŠã¯!! ãŸããHomeããŒãšEndããŒããªãã©ãããããã䜿çšããŠããå Žåã§ããsudoãšå ¥åããæ¹ãã¯ããã«ç°¡åã§ãã Up + C-a + sudoããã
ããã§ããå±¥æŽçœ®æããŒã¯ã³ã®æ©èœã埩å ããããšãæ€èšããŸããïŒ
ãŸããªã±ãŒã¹ãªã®ã§!! ããå¿«é©ã«äœ¿çšã§ããå Žåã¯ã次ã®æ©èœãè©ŠããŠãã ããã
function sudo!!
eval sudo $history[1]
end
ããã¯ãsudo !!ãã ãã§åŒã°ããŸãã
ãŸãã¯ç§ã䜿çšããä»ã®å¯èœæ§ïŒ
function .runsudo --description 'Run current command line as root'
commandline -C 0
commandline -i 'sudo '
commandline -f execute
end
bind \es .runsudo
次ã«ãMSãæŒããŠãsudoãçŽåã«çœ®ããŠçŸåšã®ã³ãã³ãã©ã€ã³ãå®è¡ããŸãã
ãŸãã¯ããã®äŸãå€æŽããããšã§ãåã®ã³ãã³ãã©ã€ã³ãçŸåšã®ã³ãã³ãã©ã€ã³ã«é
眮ããããšãã° '\ eïŒ'ã«ãã€ã³ãããé¢æ°ãäœæã§ããŸãã ãã®ã¢ãããŒãã¯ãã!!ããåçŽã«äœ¿çšãããããåªããŠããŸãã å®è¡åã«ã³ãã³ãã©ã€ã³ã衚瀺ããŠæŽæ°ããæ©äŒãäžããããããã§ãã
æåŸã®ã³ãã³ããå°ãå€æŽããŸããã
function .runsudo --description 'Run current command line as root'
set cursor_pos (echo (commandline -C) + 5 | bc)
commandline -C 0
commandline -i 'sudo '
commandline -C "$cursor_pos"
end
bind \es ".runsudo"
ã«ãŒãœã«äœçœ®ãå®å šã«å®è¡ããã®ã§ã¯ãªããä¿åããŸãã
ïŒ$ãããã°ããã§ããã
function sudo
if test "$argv" = !!
eval command sudo $history[1]
else
command sudo $argv
end
end
äœããã®çç±ã§ãŸã !!
ã䜿çšããŠãã人ã®ããã®sudo !!
ã
ããããšãã sudoã䜿çšãã人ã¯éåžžã«å€ãã§ã!! ãã®æ§æã¯ãbashãzshãå«ãä»ã®å€ãã®ã·ã§ã«ã§ãµããŒããããŠããããšãåæãšããŠããŸãã sudo !! ããŒã ããŒãšãšã³ãããŒã¯é ãã«ããããããããã®ããŒã䜿çšãããããå ¥åãç°¡åã§ãã
äžèšã®é¢æ°ãããã©ã«ãã§fish-shellã«å«ããããšããå§ãããŸãã
!! ç¥èªã®è¯ãåè£ã§ãïŒïŒ731ïŒ
!!ã®ãµããŒããè¡šæããŸãã ããã³é¢é£ããã·ã§ãŒãã«ããã è¿œå ããŠãåé¡ã¯ãªããéã¯ãŠãŒã¶ãŒã«å人çãªå²åŠãæŒãä»ããŠããããã«æããŸãã
çæ³çãªè§£æ±ºçã«ã€ããŠã®ç§ã®çŸåšã®èãã¯ããã§ã!! çç¥åœ¢ïŒïŒ731ïŒã§ããå¿ èŠãããããµãã³ãã³ãïŒsudoãªã©ã®ã³ãã³ããåãåãã³ãã³ãïŒããµããŒãããããã«é¢æ°ã·ã°ããã£ïŒïŒ478ïŒãå®è£ ããŸãã 次ã«ãç¥èªããµãã³ãã³ãã®äœçœ®ã§å±éãããããããsudo !!ã æ¡å€§ããŸãã
èªåãè¿œå ãã
ããã¯å€ããã®ã§ãããFishã§ã¯å®éã«ããã©ã«ããšããŠæäŸãããã¯ãã®æ©èœã§ãã æã£ãŠããªãçç±ã¯ãããŸãã-å人çã«äœ¿ããããªãã®ã§ããã°ãããã¯åé¡ãããŸããããäœåãªã³ãã³ããæã£ãŠããŠããå®éã«ã¯èª°ãå·ã€ããŸãã-人ã ã¯ããŸããŸãªæ¹æ³ã§ç©äºãè¡ãã®ã奜ãã§ãã
é ïŒïŒ ã»ãšãã©ã®ã·ã§ã«ã«å®è£ ãããŠããã®ã§ã人ãå·ã€ããŸãã ããšãã°ã次ã®ã³ãã³ãã«ã€ããŠèããŠã¿ãŸãã
echo fish is great!!
bash / zsh / tcshã§ã¯ãããã¯äºæããªãæãããããšãããŸãã éæ³ã®æ§æã§ãã ããã¯ãéãé¿ããããšããäžçš®ã®å¥åŠãªçžäºäœçšã§ãã
ç§ã®ææ¡ã¯å®è£ ããããšã§ãã!! éæ³ã®æ§æãšããŠã§ã¯ãªãããšã€ãªã¢ã¹ãšããŠã ããã¯ããã³ãã³ãäœçœ®ãã§ç¹å¥ãªããšãè¡ãã ãã§ããããšãæå³ããŸããåŒæ°ã§ã¯å±éãããŸããã ãŸããéã®æ©èœã»ãããæããŸããããã¯æãŸããããšã§ãã
ããã䟿å©ã«ããã«ã¯ããµãã³ãã³ãã«ã€ããŠéã«æããå¿
èŠããããŸããæãäžè¬çãªäŸã¯sudo
ãã time
ã strace
ãªã©ããããŸããéã¯ãšã€ãªã¢ã¹ãå±éããŸãã ããµãã³ãã³ãäœçœ®ãã«ãããŸããããã¯ãããèªäœãã¯ãŒã«ã§äŸ¿å©ãªæ©èœã§ãã
sudo echo fish is great!!
ãæ€èšãããšãææ¡ããããœãªã¥ãŒã·ã§ã³ã¯åŽ©å£ããŸãã ãã¹ãŠã®æ§æã«ã€ããŠåãè°è«ãããããšãã§ããŸãïŒ echo I really like fish (the shell)!
ãæ··ä¹±ããŸãããïŒ ãŸããããµãã³ãã³ããã®ãªã¹ããç¶æããããšãäžå¯èœã§ãããæè»æ§ãäœäžããã®ã§ã¯ãªãããšå¿é
ããŠããŸãã
ãšã€ãªã¢ã¹ã䜿çšãããšãã³ãã³ãã®ã¿ãå±éãããfishã¯ã©ã®åŒæ°ãïŒãµãïŒã³ãã³ãã§ã©ããããã§ãªãããèªèããŸãã ãããã£ãŠã sudo echo fish is great!!
ã¯last-command-expansionãå®è¡ããã代ããã«ãªãã©ã«ãgreat !!ããæž¡ããŸãã sudoã«ïŒãããŠããã«ãã£ãŠãšã³ãŒããïŒã ç§ã¯ããããŠãŒã¶ãŒãæåŸ
ãããã®ã ãšäž»åŒµããŸãã èšèšãšçè«çæ ¹æ ã«ã€ããŠã¯ãç¥èªïŒïŒ731ïŒãšé¢æ°ã·ã°ããã£ïŒïŒ478ïŒã«é¢ãã説æãåç
§ããŠãã ããã
SirCmpwnã¯ãå æ¬çãªé¢æ°çœ²åãèŠæ±ããããšã¯ãšã€ãªã¢ã¹ã¢ãããŒãã®æ¬ ç¹ã§ãããä»ã®æ§æèŠçŽ ãæ··ä¹±ããããšãæ£ããã§ãã å®éã®äŸã«ã¯ãgitïŒïŒ434ïŒãŸãã¯ã¯ã€ã«ãã«ãŒãïŒïŒ967ãªã©ïŒã䜿çšãããã¬ãŒã¹æ¡åŒµã®ç ©ããããå«ãŸããŸãã æ§æã«ã¯é«ãã³ã¹ããããããããä»ã®æ©èœïŒïŒ354ãªã©ïŒãšéè€ããŠããå Žåã¯æ§æãåé€ããããšããŸãã
ãšã«ãããããããªããµããŒãããã®ãã«ã€ããŠã®ç§ã®è°è«ã§ã!! åºæ¬çãªæ§æèŠçŽ ã¯ããŒãŽãŒã§ãã ãã ããfishã®æ§æãå€æŽããå¿ èŠã®ãªãæ¹æ³ã§å°å ¥ããããšã¯ã§ããŸãã
{}
ãšã®æ¯èŒã¯è²§åŒ±ã ãšæããŸãã éã§ã¯ããã¬ãŒã¹ã¯ä»ã®ã·ã§ã«ãšã¯ç°ãªãåããããŸãã 人ã
ã¯ãããbashãåéã®ããã«æ©èœããããšãæåŸ
ãããšãã«ã®ã¿ããã«ã€ãŸãããŸãã !! æ§æã¯ãä»ã®äžè¬çãªã·ã§ã«ãšåãããã«æ©èœããå¿
èŠããããŸãã ãŸãã ïŒïŒ ããã¯ãåé¡ãåŒãèµ·ããã»ã©é »ç¹ã«ã³ãã³ãã«è¡šç€ºããããšã¯æããªããã®ã§ãã å®ã¯ã䜿ã£ãŠã¿ãŠå€±æããåæ°ãå€ããšæããŸã!! éã®å Žåã誰ããæåéã䜿çšããåæ°ãã¯ããã«äžåããŸã!! ã³ãã³ãã§ã
!
ã¯ä»ã®ã·ã§ã«ã§ã¯æ··ä¹±ããŠãããšç§ã¯äž»åŒµããŸããããã®ããã«å®è£
ãããŠããªãæ¹ãããã§ãããã ããšãã°ã httpïŒ//codegolf.stackexchange.com/a/17776/3103ã«ãåçŽãªãHelloãworldïŒããå
¥åããŸããã !
ãåå ã§å€±æããUNIXã·ã§ã«ã§èšè¿°ãããããã°ã©ã ïŒã°ãããã©ã³ã¿ã€ã ãšã©ãŒã®è³ªåïŒã 7ã€ã®è³æ祚ããããã£ãã®ã§ããã®æ©èœã䜿ããããªããšãã¯é©ãã¹ãããšã ãšæããŸãã
ãã ãããŠãŒã¶ãŒãããŒã¯ã³ãšããŠ!!
ãæžã蟌ãé »åºŠã¯ã©ãããããªã®ã§ã !!
èªäœã¯åé¡ãªãã¯ãã§ãã ç¹°ãè¿ãã«ãªããŸããã !!
ãè¿œå ãããšãä»ã®å±¥æŽçœ®æãã¿ãŒã³ãè¿œå ããããã«ä¿ãããŸããããã®äžéšã¯ç
©ãããå ŽåããããŸãã
èªåèªèº«ãè¿œå ãã-ã¡ããã©ãã®ç§ã®æåã®é±æ«ã«éãšåºããããã ééããªããµããŒããããŠããå¿ èŠããããŸãã
èªåãè¿œå ãã-ãããå¿ èŠã§ãã
ãããåžæãã人ã®ããã«ãåè¿°ã®é¢æ°ãšãã€ã³ãã£ã³ã°ã«ãããéåžžã®sudo !!
ã³ãã³ããããsudo
è¿œå ããããæåŸã®ã³ãã³ããsudoãããããããã®ã¯ãŒã¯ãããŒãç°¡åã«ãªããŸããã
ããªãã¯åœŒãã«è©ŠããŠã¿ãã¹ãã§ãã ããã«ãããreadlineãšzshã®æ§æãåæ€èšããŠãåæ§ã®ãã€ã³ãã£ã³ã°ã䜿çšã§ããããã«ãªããŸããã
7ã€ã®ããŒã¹ãããŒã¯ïŒãã®ãã¡ã®2ã€ã¯ã·ããïŒã1ã€ã®ãã€ã³ãã£ã³ã°ã«å€æããŸãã
_ããªã_ã奜ãã§ãããã©ããã«é¢ä¿ãªã-æ¬åœã«çç±ããããŸã!! ãµããŒããããŸãããïŒ äžåãç¢å°ã䜿ãã®ã楜ãã人ãããã°ãå€ãã®äººã!!ã䜿ãã®ã楜ãã人ãããŸãããæ£çŽãªãšããããããæªãããšã«ãªãã®ã¯ãªãã§ããããã ãããæãŸãªã人ã¯ããã䜿ãå¿ èŠã¯ãããŸããã
確ãã«ãå®è£ ããã®ã¯ããã»ã©é£ããããšã§ã¯ãããŸãããïŒ...
ã¯ããéã®ã¹ã¯ãªãããšäžç·ã«ããã¯ã§ããããšã¯ç¥ã£ãŠããŸãããbashãåæ§ã®ã·ã§ã«ãšåãããã«ã¯æ©èœããŸãããããã¯ãå€ãã®å Žåéåžžã«äŸ¿å©ã§ããã
bashãšzshãïŒæ°ããæ§æèŠçŽ ãšããŠïŒãããè¡ãæ¹æ³ã玹ä»ããããªãçç±ãšãéã®å²åŠã«æ²¿ã£ãæ¹æ³ã®ææ¡ã«ã€ããŠã¯ãäžèšã®ã³ã¡ã³ããåç §ã
ããšã³ãŒãã£ãã·ã¥ã¯çŽ æŽãããïŒïŒããšããè°è«ã '!!'ã䜿çšãããããåªããŠããæŽå²ã¯å°ã匱ãã§ãããç§ã¯ãã®ç¹ãç解ããŠããŸãã åçŽãªãsetshell_historyadvancedãã®ããã«ããŸãã¯äœããããšã³ãŒãã£ãã·ã¥ã¯çŽ æŽããã!!ããšãããªã¹ã¯ãåãããšãããšããªã人ã ã«ãããå¯èœã«ããå¯èœæ§ããããŸãã ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
ããã«ãããããããã!!ãã®ç§ã®ãŠãŒã¹ã±ãŒã¹äŒŒãŠããŸãããããããããã€ãã®æ©èœæ¡åŒµã§åé¿ã§ããŸãã
ããšãã°ãbashã䜿çšããMacã®å ŽåïŒ
$ brewã¢ããããŒã
$ brewæ代é
ã
$ brew fetch !!
ãã®ããã以åã®ã³ãã³ãã®åºåãæ°ããã³ãã³ãã«å®æçã«äœ¿çšããŠããŸãã
éã§ç§ã¯ãããè¡ãããšãã§ããŸãïŒ
$ brew fetchïŒbrew oldïŒ
ããæç¹ã§ãããããããã¯ç§ã䜿çšã§ããææ¡ã«ãªãã§ãããããç§ãæ¬åœã«å¿
èŠãšããŠããã®ã¯ãïŒïŒãããã¯å
ã®å±¥æŽãæ€çŽ¢ã§ããããã«ããããšã§ãã
äŸãã°ïŒ
$ brew fetchïŒbre
æ®å¿µãªãããfishã¯ãããã¯ãã£ãã¯ãªã©ããæ··ä¹±ããããã®ã§ã¯ãªãããµãã³ãã³ãã«ïŒïŒã䜿çšããããšãããªãèªãã«æã£ãŠããŸãããEnterããŒãæŒããŸã§ãå®éã«ã¯ãã®ããã«æ±ãããŸããã å°ãªããšãããã¯ç§ãèŠãŠãããã®ã§ãã
éãæåã® 'ïŒ'ïŒå¥åãµãã³ãã³ãïŒã®åŸã«å±¥æŽæ€çŽ¢ãèš±å¯ããå ŽåãïŒå±¥æŽæäœããªãæ¹ãåŠçãããããšæããŸãã
ææ¡ãç解ãããšãäžç¢å°ãæŒããšãã³ãã³ãã©ã€ã³å šäœã§ã¯ãªããæãå åŽã®ãµãã³ãã³ãå ã§ã®ã¿å±¥æŽã®çœ®æãå®è¡ãããã¯ãã§ãã
ïŒ-1ïŒ
ç§ã¯ãŸã bashã¹ã¿ã€ã«ã®!!
å®è£
ããµããŒãããŠããŸãã
å°å ¥ããããããïŒup_arrowïŒãCtrl + pãããã³ã³ãã³ãå±¥æŽæ€çŽ¢ããµãã³ãã³ãã®äœçœ®ã§æ©èœããããšããå§ãããŸãã
ä»ã®ã·ã§ã«ã®å±¥æŽAPIå šäœã¯ã人ã ãéåžžèŠããŠããã ãã§ååã«æ··ä¹±ããŠããŸãã ããããã
æ£ããã ããã¯äŸ¿å©ã§ãã!!ããããªãç°¡åã«çœ®ãæããããšãã§ããŸãã ãŸãã¯ïŒããŒã¯ãŒãã®äœ¿çšã
!!
ãç¥èªã§ãããšããèããæ¬åœã«å¥œãã§ãã
æè¿ã®ãã€ããªãŒãã«ãã®ç¥èªã¯ãã³ãã³ãäœçœ®ã§ã®ç¥èªã®ã¿ãèš±å¯ããŠããããã§ãããã®ãããªå Žåã®åŒæ°ãšããŠäœ¿çšã§ããããã«æŽæ°ãããããšãé¡ã£ãŠããŸãã
ãã®æ©èœã¯é倧è©äŸ¡ãããŠããŸãã sudo cmd
ãŸãã¯eval sudo $cmd
ã
@bucaranç§ã¯æ£ç¢ºã«!!
ãç§ã¯é床äžèŽããªãããé床ã®ããã§ãã!!
ããŠcmd
ïŒ
æåŸã®ã³ãã³ãã§ãã$cmd
ãšããå€æ°ãäœæãããšããããšã§ããïŒ ãã€ãã£ãå€æ°ã§ã¯ãããŸããã
ããããšã
@mdsibãããå¥ã®åé¡ã§ãåŒæ°ã®äœçœ®ã«ç¥èªãèš±å¯ããªãããšã«ã€ããŠã®è°è«ããã£ãããšãèŠããŠãããšæããŸãã åœæã¯ãããå®è£ ããªãããšã奜ãŸããŠããŸããã ããã¯ééããªããããå€ããã§ãããã
ãã®ã¹ã¬ããããã®ãã€ã³ãã¯ãããã«ã¯çºçããªããšããããšã ãšæããŸãããã®Githubã®åé¡ããéäŒããŠãzshã«åãæ¿ããå¿ èŠããããŸãã ã¢ãã£ãªã¹ïŒ
!!
ãããã«ãªãããã§ã¯ãªããå²åŠçãªBSã®ããã«ãããªãåçŽãªæ©èœã®Githubã®åé¡ãå®è£
ãããã«3幎ééãããŠããããã§ãã
æ©èœã倧ããããšã§ã¯ãªãããšãä»ã®äººã«çŽåŸãããããšããŠãã人ã
ãèŠãã®ã¯é¢çœãã§ãã 確ãã«ãããªãã¯ãããæãŸãªãã®ã§ãããªãã¯æ°ã«ããŸãã..ããã¯ãéãããè¯ããšæãã®ã§ã人ã
ã«ç·ã奜ãã§ã¯ãªãããã«èª¬åŸããããšããŠãããããªãã®ã§ãã
ããã§ãããåçŽãªãæ©èœã§ã¯ããŸããããªãããã«æããããããæ¢åã®æ©èœãæ°ã«å
¥ã£ãŠããããã«ããã€ãè¿œå ãããå Žåã¯ã誰ããéããã©ãŒã¯ããå¿
èŠããããŸãã ãã®ããã«ã©ããã§éããªãããã§ãã
ã/ bin /ãäœããŸãã!! ããã¯æ¬¡ã®ããã«ãªããŸãã
#!/bin/fish
eval $history[1]
çæçã«ã¯ãäžè¶³ããŠããæ©èœãšå
¥åããåŸåãåé¿ããã®ã«åœ¹ç«ã¡ãŸã!!ã
ã/ bin /ïŒviãäœæããŸããïŒ
#!/bin/fish
for f in $history
echo $f | grep '^vi'
if test "$status" = "0"
eval $f
exit $status
end
end
çæ³çã§ã¯ãããŸããããç§ã®ã·ã§ã«ãä»ããé »ç¹ã«æåŸ ããããšãå®è¡ããåŸåãããã»ã©ååã§ãã
@SirCmpwn !!
ãåçŽãªæ©èœã§ããããšã¯ç§ã«ã¯æããã§ã¯ãããŸããã ããšãã°ãbashã¯ããããµããŒãããŠããŸãã
ls some_long_file.txt
!!:s/ls -l/cat/
ãã®äœ¿çšããå¿ èŠããããŸã!! ãµããŒããããŠãããã©ããïŒ ãéã¯å¿æŽãã¹ã!!ããšèšããŠãŒã¶ãŒãããäœãæå³ãããã«ã€ããŠç°ãªãèããæã£ãŠãããããããŸããã
ããªãã¯ããã«ã€ããŠåŒ·ãæããŠããã®ã§ãç§ã¯ããªãïŒãŸãã¯èª°ãïŒãã©ã®ããã«ææ¡ãæžãããšããå§ãããŸã!! éã§åäœããŸãïŒå®è£ ã§ã¯ãªãã»ãã³ãã£ã¯ã¹ïŒã ã©ã®æ§æãæ£ç¢ºã«ãµããŒããããŸããïŒ ãã®æ¡åŒµã¯ãå€æ°ãŸãã¯ããã»ã¹æ¡åŒµãªã©ã®ä»ã®ã¿ã€ãã®æ¡åŒµãšã©ã®ããã«é¢é£ããŸããïŒ å±éãããæååã§åŒæ°ã®åå²ã¯ã©ã®ããã«çºçããŸããïŒ ãããé²ãããã«ãšã¹ã±ãŒãã䜿çšã§ããŸããïŒ
ããã¯èª å®ãªãèŠæã§ãã æ©èœã¯åäžã®ãŠãŒã¹ã±ãŒã¹ã§ã¯å®çŸ©ãããŸããã è°è«ããããã®å ·äœçãªææ¡ãå¿ èŠã§ãã
ããã®ã±ãŒã¹ãæ©èœããããã®ã§ãããã©ã®ããã«ããŸããŸããããšèšãã°ãããã¯åé¡ãªãæå¹ã§ãã ããããäœããå®è£ ããåã«ã誰ãã詳现ãç解ããå¿ èŠããããŸãã
çæçã«ã¯ãå ·äœçãªèšç»ã®1ã€ã¯ãã°ããŒãã«ãšã€ãªã¢ã¹ãå®è£ ããŠããäœæããããšã§ãã 1ã€ã«ã å¥ã®æ¹æ³ã¯ãdocoptäœæ¥ãããŒãžããsudoã®é¢æ°ã·ã°ããã£ãäžããŠãããäœæããããšã§ãã éåžžã®ãšã€ãªã¢ã¹ã«ã ç§ãã¡ãã©ã¡ãã®æ¹åã«é²ããã¯ãç§ãã¡ãèãããã©ããã«ããã£ãŠããŸã!! ã©ãã§ãããŸãã¯ã³ãã³ãäœçœ®ã§æ¡åŒµããå¿ èŠããããŸãã
@ridiculousfishããªãã¯çµ¶å¯Ÿã«æ£ããã§ã '!!' æ©èœã®ãªã¯ãšã¹ãã¯ããªã詳现ã«ããå¿
èŠããããŸãã ç§ã¯ãã€ã次ã®ãããªããšãããŠããã®ã§ãããªããäžããç¹å®ã®äŸã䜿çšããããšã¯ãããŸããã
$ ls -l some_long_file.txt
$ ^ ls-l ^ cat
æããã«ããããæ©èœããŸããã ããã¯ç§ã«ãšã£ãŠã¯å¥ã®æ©èœèŠæ±ã§ãããç§ã¯æè¿éã®ãã¹ããå§ããã°ãããªã®ã§ãæ°ã«ããŸããã§ããã
ãfishïŒã³ãã³ãåãäºæããŠãããšãã«ãªãã€ã¬ã¯ããçºçããŸãããFishã¯ã³ãã³ãã®åã«ãªãã€ã¬ã¯ãæäœãèš±å¯ããŠããŸãããã
æ¢åã®æ©èœãšç«¶åããªããããã³ãã³ãäœçœ®ã®ã^ãã眮æãšããŠæ±ãã®ã¯ç°¡åãªããã§ãã ããããããã¯å¥ã®åé¡ã§ãããã!!ããšã¯äœããæ確ã«å®çŸ©ããå¿ èŠããããšããã®ã¯æ£ããã®ã§ãããã«ã€ããŠèšåããã ãã§ãã ïŒãŸãã¯äžè¬çã«ã¯åã«å±¥æŽçœ®æïŒãæå³ããŸãã
ãããç§ã䜿çšããããã€ãã®äŸã§ãïŒ
$ !!
$ some command `!!`
$ !keyword
$ !123
@gillhamã«æè¬ããŸãããã®ãããªæ å ±ã¯ãæ©èœãèšèšãããšãã«éåžžã«åœ¹ç«ã¡ãŸãã
ãŸãã @ nyarlyã«ã¯!!
ãš!$
å·§åŠãªåé¿çãããããšã«ã泚æããŠãã ããïŒ //github.com/fish-shell/fish-shell/wiki/Bash-Refugees
ããè¯ãä¿®æ£ïŒ5ïŒ
Fishã¯éåžžã«å±¥æŽã«åºã¥ããŠãããããsudoãå¿ããããæ©èœããªãã³ãã³ãã§å±¥æŽãæ±æãããããå Žåã¯ãïŒé·æçã«ã¯ïŒæåã§å±¥æŽããæ¶å»ãã䟡å€ããããŸãã ã¯ããããã¯æ°ããã¿ãŒããã«ãéããbashãå®è¡ããã/ .config / fish / fish_historyãç·šéããŸãã ç§ãããã軜èãããšããéã¯ç§ãäœåºŠãééã£ãã³ãã³ãã«å°ããŸããã
@nyarlyã®mkdir âŠ; cd !$
ç¿æ
£ã«ã€ããŠã¯ãç§ã¯mkcd âŠ
ãã£ãŠããŸãïŒ
function mkcd --description 'mkdir and cd'
mkdir $argv[1]
and cd $argv[1]
end
å±¥æŽããã®æ¶å»ã«ã¯ãbashshenanigansã¯å¿ èŠãªãããšã«æ³šæããŠãã ããã
history --delete --prefix some_command
fish_config history
ã䜿çšãããšããã€ã³ãã¢ã³ãã¯ãªãã¯ã§ãããè¡ãããšãã§ããŸãã
ãã®æ©èœã¯ã httpsïŒ//github.com/fish-shell/fish-shell/wiki/Bash-Style-History-Substitution- ïŒ!!-and-ïŒ$ïŒã䜿çšããŠFishå ã§éåžžã«ããè€è£œã§ããŸã-ããããåé¡éããå¿ èŠããããŸããïŒ
ïŒ-1 ïŒïŒ-1ïŒå®å šãªbashäºæã¢ãŒããå®è£ ãããŠããªãéãã
ããã¯æ»ããããåéã ãšæããŸãã ãããfishã«å®è£ ãããŠããå Žåãåäžã®ïŒsã«ã€ããŠã¯ã©ãã§ããããããŸããkshã®å±¥æŽæ©èœã«ã€ããŠã¯ã©ãã§ããããã $ïŒïŒã¯ã©ãã§ããïŒ éã¯cshã¹ã¿ã€ã«ã®ã·ã§ã«ã§ãã 人ã ãé©å¿ã§ããªã/é©å¿ã§ããªãå Žåã¯ãzshããããŸã...
ç§ããã®è°è«ããç§ããããèŠã€ãã人ã ã®ããã®tl; drãšããŠèŒããããšã ïŒ3幎以äžïŒ
ç§ã¯åŸè ã®1人ã§ãããããã解決ãããããšãé¡ã£ãŠããŸãããéãåççã«äœ¿çšããããšã¯ã§ãããããªãã®åŽåããããã«äœ¿çšãããã·ã³ã®æ°ã§ãã®åé¿çãè¿œå ã§ããŸãïŒãã·ã³ããšã«ç°ãªãæ§æã»ããã¢ãããå¿ èŠã§ãïŒã ïŒïŒ ãããç§ã«ãšã£ãŠã®èŠä»¶ã§ãããšããã§ã¯ååã§ãã ã§ãããããã€ã®æ¥ãéãç§ã®ãŠãŒã¹ã±ãŒã¹ã«åãããšãæåŸ ããŠããã®è°è«ããã©ããŒããŸãã
@ tetra-archosãŸã å ·äœçãªææ¡ã¯åºãŠããªãã®ã§ããç¹åŸŽããäœãªã®ããã£ããææ¡ã§ããŠããŸããã ããªãã¯æããã«ããã«ã€ããŠåŒ·ãæããŠããã®ã§ãããªãããã®ããã«åŸããŠãããªãã°ãããªããåºçºç¹ãšããŠãè¡åãã©ãããã¹ãããææ¡ãããªãã°ãããã¯å€§ããªå©ãã«ãªãã§ãããã ãããã§ããªãå Žåã¯ãå°ãªããšã䜿çšããŠããå±¥æŽçœ®æãã©ãŒã ããªã¹ãããŠãããšäŸ¿å©ã§ãã
å®å šãªbashå±¥æŽçœ®æã®åäœã¯éåžžã«è€éã§ãããæ§æå¯èœã§ããããããbashãè¡ãããšãå®è¡ãããããšã¯åå¿è ã§ã¯ãªãããšã«æ³šæããŠãã ããã
ãŸã å ·äœçãªææ¡ã¯åºãŠããªãã®ã§ããç¹åŸŽããšã¯äœãããã£ãããšææ¡ããŠããŸããã
@ tetra-archosïŒããã¯çµ¶å¯Ÿã«éèŠã§ãã ãããŸã§ã®ãšãããããã®ã»ãšãã©ã¯ãç§ãã¡ã¯ã!!ãã欲ãã!!ãã§ããã ãããŠå€å "ïŒ$"ïŒãã㯠"æåŸã®ã³ãã³ãã®æåŸã®åŒæ°ãæ¿å ¥"ã§ãïŒã ããããããïŒãŸãã¯ä»£æ¿ïŒãå®è£ ããå Žåã¯ã詳现ãæããã«ããå¿ èŠããããŸãã
äŸãã°ïŒ
sudo !!
ãšå
¥åããEnterããŒãæŒããšããã¹ãŠãããã«å®è¡ãããŸãïŒããããšãæåã«ã³ãã³ããæ¿å
¥ããŠå確èªã§ããããã«ããŸããïŒããã¯æ¬¡ã®ããã«ãªããŸãã ãhistverifyããªãã·ã§ã³ã䜿çšããŠbashããŸããïŒåŸè
ã«åŸåããŸãïŒïŒçèã®èšæ¶ã ãã®å Žåã¯ãfish_user_key_bindingsã«æ¬¡ã®ãã®ãå ¥ããããšãã§ããŸãã
bind '!!' 'commandline -i "$history[1]"'
bind '!$' 'history-token-search-backward'
ïŒãããæ±ããåé¡ãããããããã©ã«ãã®ãã€ã³ãã£ã³ã°ã«ãããåãå ¥ããã¹ãã§ã¯ãªãçç±ã¯ããïŒããå ¥åããåŸã2çªç®ã®æåããã§ãã¯ããããã«åŸ æ©ããããšã§ãïŒ
!!
ã¯æªãç¿æ
£ã ãšæããŸã
ã³ãã³ãsudo !!
ã¯ãã·ã§ã«ãå®éã«äœãå®è¡ãããã誰ã«ãæããŸããã
a
nfang 'ã§sudo
ããŠp
äžæ£ãªã³ãã³ããå®è¡ããå Žåã¯ã次ã®ããã«å
¥åããŸãã
^p ^a sudo
å±¥æŽæ©èœã䜿çšãã代ããã«ãè¡ç·šéã³ãã³ã^ pããã³^ aã䜿çšããããã«ãŠãŒã¶ãŒã«éç¥ããã¡ãã»ãŒãžãè¿œå ããããšããå§ãããŸãã
!!: command not found, try 'Ctrl-p Ctrl-a' to prefix the previous command with 'sudo' or any other prefix
ç§ã!!
ãå«ãã§ãã ^p ^a
代ãããšããŠã®fish_vi_mode
ã®ããç°¡åãªæ¹æ³ïŒ
^v k I
ããªããäœããããæ¹æ³ã奜ãã§ã¯ãªãã®ã§ããããããæå¹ã§ãªããªãããšã¯ãããŸããã
2015幎11æ10æ¥åå8æ14åããIvanThamã [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
å«ã!! ãããã ^ pã®ä»£ãããšããŠã®fish_vi_modeã®ããç°¡åãªæ¹æ³
^ aïŒ^ vk I
â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/fish-shell/fish-shell/issues/288#issuecomment -155416048
ã
éããŸãçã§ãã
ãã®åé¡ã®äž¡åŽã«ã¯ãæ£åœãªããŒãºãšæžå¿µããããŸãã äž»ãªããŒã«ãã¢ããã¯ãè¿ éã§æ±ãæ¹æ³ã§ã¯ãªãããããè¡ãããã®_æ£ãã_æ¹æ³ãèŠã€ããããšã ãšæããŸã
ç§ã¯åæããŸãããããŠç§ã¯ãããããä»ã®æ¹æ³ã«å察ããããšã¯äœããããŸããã圌ãã¯ãã ããããŸãã
ç§ã®ïŒãããŠæããã«ä»ã®äººã®ïŒããŒãºã«åããŸãã
2015幎11æ10æ¥12:19 PMããEricMrakã [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
éããŸãçã§ãã
ãã®åé¡ã®äž¡åŽã«ã¯ãæ£åœãªããŒãºãšæžå¿µããããŸãã ç§ã¯æããŸã
äž»ãªããŒã«ãã¢ããã¯ãè¿ éãªæ¹æ³ã§ã¯ãªããæ£ããæ¹æ³ãèŠã€ããããšã§ãã
æ±ãæ¹æ³â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/fish-shell/fish-shell/issues/288#issuecomment -155494929
ã
åæã®è°è«ã§èšåãããã¢ãããŒããç¹°ãè¿ããããããå°ãæ¡åŒµããããã«ïŒç§ã¯ããŒãã€ã³ãã£ã³ã°ãã!!ããããããŸãæ©èœããããšãçºèŠããŸããã
ããã€ãã®ããŒã«ãã€ã³ãã§ãããã®é¢æ°ãäœæããŸããïŒç§ã«ãšã£ãŠã¯^ Sã bind \cs 'prepend_command sudo'
ïŒã ã³ãã³ãã©ã€ã³ã«ã³ã³ãã³ããå«ãŸããŠããå Žåã¯ãsudoãå
é ã«è¿œå ãããŸãã ã³ã³ãã³ãããªãå Žåã¯ãå±¥æŽã®æåŸã®ã¢ã€ãã ã®åã«sudoãè¿œå ãããŸãã ãããã£ãŠã sudo !!<Enter>
ã¯^S<Enter>
ãŸãã
function prepend_command
set -l prepend $argv[1]
if test -z "$prepend"
echo "prepend_command needs one argument."
return 1
end
set -l cmd (commandline)
if test -z "$cmd"
commandline -r $history[1]
end
set -l old_cursor (commandline -C)
commandline -C 0
commandline -i "$prepend "
commandline -C (math $old_cursor + (echo $prepend | wc -c))
end
ãã®ãããªèšå®ã¯è€éãããŠå®è¡ã§ããªããšèšã人ãããŸãã èãããã解決çã¯ãç§ã®æ©èœã«æ©èœçã«äŒŒããã®ãéã«å«ããããšã§ããå¯èœæ§ããããŸãããã®ããããããæ§æãããšãå°ãªããšã1ã€ã®ã©ã€ããŒã«ãªããŸãã
ãã¡ãããããã¯some_command --with-subshell-param (!!)
ãããªä»ã®èŠæ±ã«ã¯çããŸããã
@Ahtiããã¯å®éã«ã¯æªãããšã§ããã¡ããã©ããã
ããããããŸã§ã®ãšãããããã¯sudo !!
ãŸãã ã³ãã³ãã®éäžã§ããããsudo
ã§ããã¹ãã ãšæ°ä»ãã®ã¯ãç§ã«ã¯ããããããšã§ãã ^s
ãã€ã³ã¹ã¿ã³ãsudo
ãã¬ãã£ãã¯ã¹ïŒ
å人çã«ç§ã¯äœ¿ã£ãããšããªã!!
以å€ã®æèã§sudo !!
ããã¯ç§ãæ°ã«ããªãããã«ã
å¶ç¶ã«ããç§ã¯fish_vi_modeãè©ŠããŠã¿ãŠãæ¬åœã«æ°ã«å
¥ã£ãŠããŸãã ãã ããViã¢ãŒãã§ã¯ã ^s
ã¯ãã€ã³ããããŠããªãããã«èŠããŸãã ææ¡ïŒ
ããŠãconfig.fishã«ããŒãã€ã³ãã£ã³ã°ããããŸããã ïŒ2254ãèŠã€ãã次ã«https://github.com/faho/fish-shell/commit/f7e8ad632a388d5f1c5eb4cfc33f3cdb1f7fd831ãèŠã€ãã次ã«http://stackoverflow.com/a/16675092/292408ãèŠã€ããŸãããããã«ããããã€ã³ãã£ã³ã°ãfish_user_key_bindingsã«é 眮ããå¿ èŠãããããšã確èªãããŸããããŸã ååšããŠããªãã£ãæ©èœã
ããã¯æ©èœããViã³ãã³ãã¢ãŒã[N]
ããã¬ãã£ãã¯ã¹ã¯æåŸ
ã©ããã«æ©èœããŸãã
ããŒãžã£ãŒã§çŸåšã®ãã€ãã©ã€ã³ãå®è¡ããããã®Alt-Pããã§ã«ãããŸãã Alt-Sãè¿œå ãã¹ããããïŒ
@Ahtiã¯ã誰ããæ¢ããŠãããã®ã«å¯Ÿããéåžžã«ãšã¬ã¬ã³ããªãœãªã¥ãŒã·ã§ã³ã ãšæããŸãã ã©ã³ãã ãªæ¡åŒµãå¥åŠãªãšããžã±ãŒã¹ãå¿é ããããšãªããããŒãã€ã³ãã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã å¿ èŠã«å¿ããŠäœ¿çšãŸãã¯ãã£ã³ã»ã«ããããã®ããã¹ããé 眮ããã ãã§ãã
@nyarlyã®çœ®æãš@Ahtiã®ããŒãã€ã³ãã£ã³ã°ãœãªã¥ãŒã·ã§ã³ã®äž¡æ¹ã奜ãã§ãã
å人çã«ã¯ã sudo !!
ã³ã³ããã¹ãã§ã®ã¿!!
ã䜿çšããŸã
ãªã€ïŒ ãã®ã¹ã¬ããã¯çŸåšãã»ãŒ4幎åã®ãã®ã§ãã æè¿ãÇÇ.comãšÇÇ.netïŒGithubã§ã¯ãã€ããŒãªã³ã¯ãèš±å¯ãããªãã®ã§ãã³ããŒã¢ã³ãããŒã¹ãïŒãè³Œå ¥ããŸããã
ããïŒ ã«ãã³ããïŒ @ geoff-codesã©ããã£ãŠãããããŸãããïŒïŒ
圌ãã¯æè¿ã.comãš.netã®ãåœéåããã¡ã€ã³åã®èš±å¯ãéå§ããŸããã
ãã ããçŸæç¹ã§ã¯ããµããŒãã¯ãŸã ããªããã°ããããŸãã ããšãã°ãâµâµãcomã¯ç»é²ã§ããŸãããâµÇ.comã¯ç»é²ã§ããŸããã
!!ãcomã«ç»é²ã§ãããšã¯ç¥ããŸããã§ããã
ãã®åé¡ããåŠãã æèšïŒUnixã·ã§ã«ãäœæããå Žåãå¿ ãå®è£ ããå¿ èŠãããæ©èœã¯sudo !!ã ãã§ããããããªããšã人ã ã¯çããŠãããªãããã§ãã
çå£ã«ãããããç§ã¯ãããããŸãæ©èœããŠãããšèšã人ã ããã®èšèãæã£ãŠããŸãïŒ
@bucaranã¯ãã確ãã«ããã§ãðã
åœéåãã¡ã€ã³å-IDNïŒ
https://en.wikipedia.org/wiki/Internationalized_domain_name
ç·šéïŒãã®æçš¿ã§ã¯é ãããŸãããããŠãããã®@ geoff-codesã®ãããªç»é²ãïŒ ããã¯è³¢æãªæè³ã§ãªããã°ãªããŸããã 2æåïŒsortaïŒ.comïŒ
#!.com
ã¯ã±ãŒããåã£ãŠããã ããã com TLDããŸãã¯è§£æ±ºãã¹ãäœãã«ã€ããŠãããçŠæ¢ããã«ãŒã«ã¯ãããŸããïŒ
Windowsãã¬ãŒã³ããŒã·ã§ã³ã®bashã§ããã¬ãŒã³ããŒã·ã§ã³ãè¡ã£ãŠãã人ãäœããå
¥åããŸãã
ãã®ãããªïŒ
$> echo hello Windows !!
ãããŠãäœãèµ·ãã£ãã®ããçãããæšæž¬ã§ããããšãé¡ã£ãŠããŸãã
2016幎5æ11æ¥ååŸ1æ57åããAaronGyesã [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
åœéãã¡ã€ã³å-IDN
2016幎5æ11æ¥åå4æ44å58ç§ãTimopheyïŒ[email protected]ïŒã¯æ¬¡ã®ããã«æžããŠããŸãã
ããïŒ ã«ãã³ããïŒ @ geoff-codeshttpsïŒ//github.com/geoff-codesã©ãã§ããã
å
ãããè¡ãïŒïŒâ
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
<
https://github.com/fish-shell/fish-shell/issues/288#issuecomment -218435761â
ã³ã¡ã³ãããã®ã§ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/fish-shell/fish-shell/issues/288#issuecomment -218438118
ã ãããç§ã¯bashã«åãæ¿ããå¿ èŠããããŸããïŒ
@ base698-å±¥æŽçœ®æã®æãäžè¬çãª2ã€ã®ãŠãŒã¹ã±ãŒã¹ããµããŒãããããã«ããã£ãã·ã£ãŒãã³ãã©ã°ã€ã³ãäœæããããšã«ãªããŸããã æåŸã®ã³ãã³ãå šäœã«ïŒ$ãæåŸã®åŒæ°ã«ã æ£çŽãªãšãããéã®ã³ãã³ãã©ã€ã³ç·šéããšãŠãè¯ãã®ã§ãç§ã¯ã»ãšãã©èªåã®ç¿æ £ãç ŽããŸããã ããã§ããç§ã¯ã§ããããšãæ¬åœã«å¥œãã§ã
> which tool
> cat (!!)
ããšãã°ãã¹ã¯ãªããã調ã¹ãŸã
æŒåž«ãã€ã³ã¹ããŒã«ãããã fisher install nyarly/fish-bang-bang
ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ã§ããŸãã
å®å
šãæãããã«ïŒãããŠæ£ããäŸã瀺ãããã«ïŒ
ãããç§ãèšåããYouTubeãããªã®ã¹ã¯ãªãŒã³ã·ã§ããã§ããããã¯ã!!ãã®åªããæ©èœã®1ã€ã§ãã Windowsã§ãå©çšã§ããããã«ãªã£ããã¿ãŒã³ã
https://www.youtube.com/watch?v=2dB0igTfhfg&feature=youtu.be&t=760
圌ã¯git commit -a -m "Rawr!!"
ãå®è¡ããããšæã£ãŠããŸã
çµæã¯git commit -a -m "Rawrclear"
ç§ã¯éã倧奜ãã§ããã!! ããŸãã«ã䟿å©ã§ãã sudo !!
ã¯ããããŸãããã以åã®æ
å ±ãæ°ããã³ãã³ãã«æž¡ãæ¹æ³ãšããŠã䜿çšã§ããŸãã äŸãã°ïŒ
find . -name something | grep "pattern"
ããããç§ã¯ç§ã欲ãããã®ãæã«å
¥ãããŸã§ãã¿ãŒã³ã§éãã§ããŸããã
次ã«ãããããã®ãããªãã®ã«æž¡ããŸãïŒsomeCommand !!
ïŒã çŸåšãéã§ã¯ãããã¯ããŸãã«ãå€ãã®ã¹ããããå¿
èŠãšããŸãã åé¿çã¯ç§ã«ã¯ååã«æ©èœããŸããã
zshãæ¡åŒµããŸã!! ããªãããããç·šéã§ããããã«ã ãããã£ãŠãzshã«æ»ãå¿ èŠããããŸãã
ãã£ãã·ã£ãŒãã³ã䜿çšããŠããå ŽåïŒããã¯éåžžã«éèŠã§ãïŒã nyarly/fish-bang-bang
ãã€ã³ã¹ããŒã«ããŠãã³ãã³ãå
ã®ã©ãã§ã!!
ãš!$
æ¡åŒµãååŸã§ããŸãã
@nyarlyãããç§ã¯ãããè©ŠããŸããã ãããã2çªç®ã®!
ãå
¥åãããçŽåŸã«ã©ã®ããã«å±éããããã¯æ°ã«å
¥ããªãã ããã¡ãªãæããŸããã zshã¯ãã¹ããŒã¹ã«å
¥ã£ãåŸããŸãã¯EnterããŒãæŒããåŸã«æ¡åŒµããããããæ°åãè¯ããªããŸãã
ç·šéïŒæ°ã«ããªãã§ãã ãããç§ã¯ãããããããšãã§ããŸããã§ããã ZSHãèªåãæããã®ã«èšå®ããã®ãããã«é¢åããå¿ããŠããŸããã nyarlyã®ãã©ã°ã€ã³ãè¡ãå¿ èŠããããŸãã
[解決æžã¿]ããïŒ
https://blog.hospodarets.com/fish-shell-the-missing-config
ãããå®è£
ãããªãã£ãã®ã¯ãšãŠãããããã§ãïŒ ããã¯ãFishã®çŽäº€æ§ã®æ³åããã³ãŠãŒã¶ãŒãã©ãŒã«ã¹ã®!!
ãš!$
ããããŠããããs^
ãè¶
ããŠèããå¿
èŠããããŸãã ã ãã人ã
ã¯ãããã ãã䜿ãã®ã§ãã Fishã®ãœãªã¥ãŒã·ã§ã³ã¯ããã€ã³ã¿ã©ã¯ãã£ãã§ãããåŒæ°ã®ããäžè¬çãªçœ®ãæããå¯èœã§ãã ã¹ãããŒã¯æ°ã®ç¹ã§ã¯ååã«å¹ççã§ããã !!
åæ§ã«å¹ççã§ãã
!!
ãš!$
ãèŠéããŠããŠãå¥ã®æ¹æ³ãåŠã³ãããªããŠãŒã¶ãŒãããŸãã Fishã¯ãããã®æ©èœã ãããšããžã±ãŒã¹ãšããŠå®è£
ããå¿
èŠããããŸããïŒçŽäº€æ§ã®æ³åãåç
§ïŒïŒ ãŸãã¯ãBashå±¥æŽã®ãã¹ãŠã®çœ®æã§ããïŒ ãŸãã¯ä»ã®ã·ã§ã«ããã®ãã¹ãŠã®æ©èœïŒ ãŠãŒã¶ãŒãèããããšãã§ãããã¹ãŠã®æ©èœïŒ
äœããã³ããŒããŠè²Œãä»ããã人ã®ããã®ä¿®æ£ã¯æ¬¡ã®ãšããã§ãã
ãããã/ .config / fish / features /fish_user_key_bindings.fishã«å ¥ããŸã
function bind_bang
switch (commandline -t)
case "!"
commandline -t $history[1]; commandline -f repaint
case "*"
commandline -i !
end
end
function bind_dollar
switch (commandline -t)
case "!"
commandline -t ""
commandline -f history-token-search-backward
case "*"
commandline -i '$'
end
end
function fish_user_key_bindings
bind ! bind_bang
bind '$' bind_dollar
end
https://github.com/fish-shell/fish-shell/issues/288#issuecomment-7869918ã§ãªã³ã¯ãããŠãã@siteshwarã®URLãå£ããŠããŸãã ã³ã¡ã³ããç·šéããŠããã®æªè§£æ±ºã®åé¡ãèªãã§ãã人ã®ããã«ä¿®æ£ããŠããã ããŸããïŒ
ç§ã¯åœŒã®ã³ã¡ã³ããç·šéããŠãFAQãçŸåšãã¹ãããŠããå Žæã瀺ããŸããã
ããã§éã¯&&ãš||ãæã£ãŠããŸã ïŒhttps://github.com/fish-shell/fish-shell/issues/4620ïŒbashã®å®å šãªä»£æ¿åã«éåžžã«è¿ãã§ãïŒ
ç§ã¯æ¬åœã«æ··ä¹±ããŠããŸã-
ãããã£ãŠããã®æ倧ã®èšèšç®æšã宣èšããã·ã§ã«ã¯æ¬¡ã®ãšããã§ãã
1. Everything that can be done in other shell languages should be possible to do in fish
...ç§ã¯ä»ã®ãã¹ãŠã®ã·ã§ã«ã®äžã§æãäžè¬çã«äœ¿çšãããã®ããããã®æäœãè¡ãããšãã§ããªãã®ã§ããïŒ
éã®ãããã質åã§ã¯ããŠãŒã¶ãŒã¯ä»£ããã«ãã¹ãã ãšèšã£ãŠããŸã
First press Up, then Home, then type "sudo ".
ç·ããªããŠã¹ãã¬ããã éå»6ãæéã«äœããã®çç±ã§[ããŒã ]ãã¿ã³ãæŒãããŠãŒã¶ãŒã¯äœäººã§ããïŒ ãã®é·ãã§ã¯ãmanããŒãžããã³ãã³ããèªåçã«è§£æããããšã¯ãããŸããŸããmanãã¡ã€ã«ãéããŠèªåã§èŠã€ããã ãã§ã¯ååã«çŽäº€ããŠããªããšäž»åŒµããããšãã§ããŸãã
@andysalerno
å®è¡ãããã¢ã¯ã·ã§ã³ã¯ãsudoãåã«ä»ããŠåã®ã³ãã³ããå®è¡ããããšã§ãã
ãããŠéã¯ãã®æ©èœãæäŸããŸã
å
¥ã代ããã«First type "sudo ", then press shift+1, then press shift+1
ããã§ãctrl+p, ctrl+a, type "sudo "
ããã¯bashã§ãåãããã«æ©èœããŸã
ããªãããããã質åã«èšåããã®ã§ãç§ã¯ãããããäžåºŠãã§ãã¯ããŸããããããŠèª°ãããã®ã·ã§ãŒãã«ããã«ã€ããŠã®éšåãåé€ããŸããã ïŒãããä¿®æ£ããããã«https://github.com/fish-shell/fish-shell/pull/3879ãäœæããŸããïŒ
ãã®ã·ã§ãŒãã«ãããæ©èœããçç±ã¯ãã©ã€ã³ç·šéçšã«åºãå®è£
ãŸãã¯æš¡å£ãããŠããreadline
ã©ã€ãã©ãªã«åŸãããã§ãã
æéãèŠã€ãããããããFAQã«è¿œå ããããã®ãã«ãªã¯ãšã¹ããäœæããŸã
Home
ããŒã䜿çšããããšã¯ãå€ãã®ããŒããŒãïŒããšãã°ãç§ã®3ã€ã®ããŒããŒããã¹ãŠïŒã®å¥ã®å Žæã«ãããããå®éã«ã¯ãªãã·ã§ã³ã§ã¯ãããŸããã
ãããåã³æã¡åºãããã®thxã ãããè¡ãã«ã¯ãç°¡åïŒä¿®é£ŸåãšæåããŒã®ã¿ãããŒã ããŒãç¢å°ããŒãªãïŒãé«éïŒããŒã¹ãããŒã¯ãå€ãããªãïŒãããã³_ææžåããã_æ¹æ³ãéèŠã ãšæããŸãã
ããããç§ã¯ctrl + pã«ã€ããŠç¥ããªãã£ãïŒ ç§ã¯ããã!!ãããããã«å¥œãã§ãã
ç·šéïŒ
æåŸã«å®è¡ããã³ãã³ããåè©äŸ¡ããä»ã®æ¹æ³ã¯ãããŸããïŒ ç§ã¯èªåèªèº«ãbashã§ãã®ãããªããšãããããããŠããããšã«æ°ã¥ããŸãïŒ
> man -w fish # prints location of man file for fish
/usr/share/fish/man/man1/fish.1
> less $(!!)
ããã»ã©ç°¡æœã§ã¯ãããŸããããevalãšhistoryå€æ°ã䜿çšããŠãããè¡ãããšãã§ããŸãã
> man -w fish
/usr/share/fish/man/man1/fish.1
> less (eval $history[1])
ãããããããè¡ãããã®ããè¯ãæ¹æ³ã¯ãalt-pã䜿çšããããšã§ãã ã³ãã³ããå ¥åããåŸã«alt-pãæŒããšãFishã¯ã³ãã³ãåºåãlessã«ãã€ãããŸãã
> man fish
alt-p > man fish ^&1 |less;
ç§ã¯ãã¹ãŠã®å匷æã®äººã
ãç解ããŠããŸãã..匷æã®ãã®ããã®ãããªãåé¿çããããç¬ããªããéããŠäŸ¿å©ã§ããéåžžã«å€ãã®äŸããããŸãïŒ
First press Up, then Home, then type "sudo ".
ãã³ã³ãã³ãã¯ãæ £ããã°éæ³ã®ããã«ãªããŸããéã®ç·ãã¡ãèããå€ããŠãå ã«æ»ãããšãæ¬åœã«æãã§ããŸããå°ãªããšãã次ã®ãããªåªããã³ãã³ããããã€ããããŸãã
!!
!WORD
!WORD:p
!:n
!$
!^
!n:n
!:gs/MISTAKE/FIX
!#
!#^
éã¯ããªãããã§ãããè¯ãä»äºãç¶ããŠãã ãã
å±¥æŽã®æåŸã®ã³ãã³ããå®è¡ããããã®ãµããŒããããŠããæ¹æ³ã¯ãããŸããïŒ ä»ã®tmuxãŠã£ã³ããŠã§ã³ãã³ããåŒã³åºãããã«ãã¯ãã䜿çšããŠããã ããªã®ã§ãå ¥åããªããŠãããŸããŸããã ããããç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ã次ã®ãããªããšãã§ããããã«ããããšããããšã§ãã
$ echo "hi"
hi
$ x
hi
$ x
hi
eval $history[1]
ãè©ŠããŸãããã2çªç®ã®åŒã³åºããççºããŸãã ããã¯ã !!
ã³ãã³ãã®äŸ¿å©ãªç¹ã§ãã æ¬åœã«åãå
¥ããããªãããšã®1ã€ã¯ãç¢å°ããŒã䜿çšããããšã§ãã ãã®ãŠãŒã¹ã±ãŒã¹ããµããŒãããéã®ã³ãã³ãã¯ãããŸããïŒ
ç§ãä»èããããšãã§ããæåã®ããšã¯ããããå±¥æŽã«è¿œå ããããšãé²ãå é ã®ã¹ããŒã¹ã䜿çšããããšã§ãã
$ function x ; eval $history[1] ; end
$ echo "hi"
hi
$ x # note leading space
hi
$ x
hi
ããã¯ç¢ºãã«ç§ãç¥ã£ãŠããçŽ æŽãããããšã§ã¯ãããŸããã ãã ãããã®åçŽãªã±ãŒã¹ã§ã¯ã history-search-backward
ãã€ã³ãã£ã³ã°ã§ååãªããã§ãã ããã¯ããã©ã«ãã§ã¯ç¢å°ããŒã§ãããè¿œå ãŸãã¯å€æŽã§ããŸãã
ããïŒ ããã¯è¯ãèãã§ããç§ã¯å é ã®ã¹ããŒã¹ã䜿ãããšãèããŸããã§ããã ç§ã¯ãããè©ŠããŠã¿ãå¿ èŠããããŸãã
æŽæ°ïŒ
ããã¯ç§ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯å®ç§ã«æ©èœããŸããã $ eval $history[1] #note extra leading space
ãããç§ãFishãšäžç·ã«ããããªãçç±ã§ããå¯èœæ§ããããŸãã ãšã¬ã¬ã³ãã§ã·ã³ãã«ã§ãããå€ãã®ããšã«å¯Ÿããæšæºçãªã·ã§ãŒãã«ããããªããããéçç£çã§ãã
æåã®ã¢ã€ãã ã åã®ã³ãã³ããsudoã§ç¹°ãè¿ãããïŒ
sudo !!
1ïŒäžãã¿ã³ãæŒã
åé¡ã5æã®ããŒããŒãã®[äžãž]ãã¿ã³ã«æã䌞ã°ãå¿
èŠããããŸãã çŽ4åã®1ã®æéãç§ã¯ãããèŠéããããããããŒããŒããèŠäžãããŠãããã©ãã«ããããæ£ç¢ºã«ç¢ºèªãããããã倱æãããã®ãä¿®æ£ããå¿
èŠããããŸãã ããã§...
2ïŒããŒã ããŒãŸãã¯Ctrl-AããŒãæŒããŸã
ããŒã ã¯å¥ã®ã¹ãã¬ããã§ãããããŸããŸãªããŒããŒãã®éåžžã«å€ãã®ããŸããŸãªå Žæã«ãããç§ã¯ãããæ¢ãå¿
èŠããããŸãã Ctrl-Aã¯ããèªç¶ã«æ¥ãã®ã§ãããŸããããšæããŸãã
3ïŒãsudoããšå
¥åããŠreturnããŒãæŒããŸãã
ããããŸãããããã¯7åã®ããŒã¹ãããŒã¯ã ãã§ããããã®ãã¡ã®1ã€ã¯ãšã©ãŒãçºçãããããã¯ãŒã¯ãããŒã倧éšåã®æéäžæãããåå ã«ãªããŸãã
次ã®é ç®ãç§ã¯åã®æåŸã®è°è«ãç«ã«ãããïŒ
ls -l /etc/network/iptables
cat !$
ãŸãã¯éãšäžç·ã«ïŒ
1ïŒãç«ããšå
¥åããŸã
2ïŒAlt-Up
ããããŸããããããããŸãèªç¶ã§ã¯ãããŸããã AltããŒãæŒãããšã¯ãã£ãã«ãªãããã®æšªã«ããSuperïŒCmd / Windows / whateverïŒããŒãæŒãããšããããããŸããããã«ãããçŸåšã®ã³ã³ããã¹ããå®å
šã«å€ãããŸãã
éã¯ããã¹ãŠã®äž»èŠãªåè£è ã®ããã«ãããè¯ãæŽå²ã®æ¡å€§ãå¿ èŠãšããŠããŸãã ãã®æ¬ åŠã¯ããã€ãšã³ããŠãŒã¶ãŒã®çç£æ§ã®äœäžã§ãã
@wrecklassæããsudo !!
åãåºããªãã£ãã®ã§ã httpsïŒ//github.com/nyarly/fish-bang-bangãšæžããŸãã
ãŸããIIRCã®éã«ã¯ãAlt-Pã| less
ãè¿œå ããã®ãšåãããã«ãã³ãã³ããçŸåšç©ºã®å Žåã«æåŸã®å±¥æŽãšã³ããªã§æ©èœãããprependsudoãçšã®Alt-Sãä»å±ããŠããŸãã
ãããŠãããã次ã
ãšç»å Žãããšããçç±ã ãã§ïŒããªã!!éã®äžã§bashã®ããã«æ©èœããªãã®ããïŒç§ã¯é¢é£ããããšæããŸãïŒ !
æåã®ç¹å¥ãªæ±ãã¯ãã®1ã€ã§ããç§ãbashããè¿œãåºããã é·å¹Žã®éã®ãŠãŒã¶ãŒãšããŠããã®è¡åã声ã®å°æ°æŽŸããªã ããããã«æã¡èŸŒãŸããããç§ã¯éåžžã«å€±æããã§ãããã
sudo !!
ã¯ãã®ãããªæšæºçãªãã®ã§ãã éãå€ä»£ã®bashæ§æããéããããã«éåžžã«æžåœã«åªåããŠããããšã¯ç解ããŠããŸãããå人çãªå²åŠãæ¯æããŠåæ³çã«æçšãªæ©èœãæŒãã®ããããšã«ãã£ãŠãç§ãã¡ã¯é²æ©ãæ¢ããŠãããšæããŸãã
@ClickSentinelã¯ããŸãã«ãã®çç±ã®ããã«ç§ã䜿çšããŠèŸãfish
ã«ã¹ãã£ãã¯ãbash
ã ïŒã¹ãã€ãªãŒïŒ
çŸåšã®èšç»ã§ã¯ãã°ããŒãã«ãªç¥èªãå®è£ ããããšã§ãã!!ãããµããŒãã§ããããã«ãªããŸãã etalã ããã«ã€ããŠã¯ïŒ5003ãåç §ããŠãã ããã
ããããã®ã³ãŒã¹ãå®è¡ããã®ã§ãç§ã¯ãããæ¯æããŠãã®åé¡ãéããŸãã
@tukusejssirsãš@ ClickSentinel ã httpsïŒ //github.com/fish-shell/fish-shell/issues/288#issuecomment -306212011ã®ã³ãŒããæ§æã«è¿œå ããŠã¿ãŸãããïŒ
ç§ã¯æ°å¹Žéãã®å€çš®ãæã£ãŠããŸããïŒç§ã®æ§æã®åé¡ïŒãã®åé¡ãå€åïŒïŒããå€æŽãããŸããããããŠããã¯ç§ãæãé Œãã«ããŠããã·ã§ã«äººéå·¥åŠã®äžéšã§ãïŒãŸããç¹ã«è¿œå ã®ã±ãŒã¹ã§ç§ã®ããªã¢ã³ãã§ã¯ã !$
åã®æååã䜿çšããŠäžåãã®ããŒã¯ã³æ€çŽ¢ãå®è¡ããå¿
èŠããããŸããããã¯ãbashã§äœæ¥ãããšãã«æãç
©ãããããšã®1ã€ã§ããïŒ
ç§ã®å€çš®ïŒãŸãã¯å€åç§ã¯å€çš®ãçãã ...èŠããŠããªãïŒman_shrugging :)ïŒ
function bind_bang
switch (commandline --current-token)[-1]
case "!"
# Without the `--`, the functionality can break when completing
# flags used in the history (since, in certain edge cases
# `commandline` will assume that *it* should try to interpret
# the flag)
commandline --current-token -- $history[1]
commandline --function repaint
case "*"
commandline --insert !
end
end
function bind_dollar
switch (commandline --current-token)[-1]
# This case lets us still type a literal `!$` if we need to (by
# typing `!\$`). Probably overkill.
case "*!\\"
# Without the `--`, the functionality can break when completing
# flags used in the history (since, in certain edge cases
# `commandline` will assume that *it* should try to interpret
# the flag)
commandline --current-token -- (echo -ns (commandline --current-token)[-1] | head -c '-1')
commandline --insert '$'
case "!"
commandline --current-token ""
commandline --function history-token-search-backward
# Main difference from referenced version is this `*!` case
# =========================================================
#
# If the `!$` is preceded by any text, search backward for tokens
# that contain that text as a substring. E.g., if we'd previously
# run
#
# git checkout -b a_feature_branch
# git checkout master
#
# then the `fea!$` in the following would be replaced with
# `a_feature_branch`
#
# git branch -d fea!$
#
# and our command line would look like
#
# git branch -d a_feature_branch
#
case "*!"
# Without the `--`, the functionality can break when completing
# flags used in the history (since, in certain edge cases
# `commandline` will assume that *it* should try to interpret
# the flag)
commandline --current-token -- (echo -ns (commandline --current-token)[-1] | head -c '-1')
commandline --function history-token-search-backward
case "*"
commandline --insert '$'
end
end
function fish_user_key_bindings
bind ! bind_bang
bind '$' bind_dollar
end
ããããšã@ scooter-dangleããã¯ïŒ228ãããããŸãæ©èœããŸã
Fishãäœããã®ã¢ã¯ã·ã§ã³ãå®è¡ããããã®ããæ £çšçãªæ¹æ³ãæäŸããå ŽåããããŸãã
LANG=C :
fish: Unsupported use of '='. To run ':' with a modified environment, please use 'env LANG=C :âŠ'
ãã¶ã!!
ã¯ãããã©ã«ãã§ããããè¡ãããã®å¥ã®ããæ
£çšçãªæ¹æ³ã瀺åãããã®ãããªã¡ãã»ãŒãžãçæããããšãã§ããŸããïŒ
ãã ããææ¡ã¯åãããã«å¹ççã§ããå¿ èŠããããŸãã æ¯èŒïŒ
sudo !!<enter>
ããã¹ãŠããŒããŒãäžã®æã®åºæ¬äœçœ®ãã<up><home>sudo <enter>
ã Fishã®FAQã§<C-p><Ca>sudo <enter>
ãæãåãããã«ã¢ã¯ã»ã¹ã§ããŸããããã¯ããã©ã«ãã®BashãZSHãªã©ã§ãæ©èœããããããŠãŒã¶ãŒã¯ä»ã®ã·ã§ã«ãåŠçããå¿
èŠããããšãã«ããŒã¿ãã«ãªæ°ããç¿æ
£ãæ¡çšã§ããŸãã!$
å Žåã <alt-.>
ææ¡ããã®ã¯åé¡ãªãããã§ãããïŒ
@psychoslaveãã¹ãŠã®å€ãåé¡ãç¹ã«éãã
ãããããã¯ããŸãã ããã¯çŽ50å以äžçããããŸããã
æãåèã«ãªãã³ã¡ã³ã
äœããã®çç±ã§ãŸã
!!
ã䜿çšããŠãã人ã®ããã®sudo !!
ã