ã¯ããã« ããã«ã¡ã¯ãçãããä»æ¥ã¯ãã·ã§ã«ã¹ã¯ãªããã使ã£ãé«åº¦ãªèªååã®ãã¹ããã©ã¯ãã£ã¹ã¨ãã¿ã¼ã³ã«ã¤ãã¦è§£èª¬ãã¾ãããããã¯ãã¡ãã£ã¨ããç¥èã§å®è¡ã§ããä½æ¥ãå¤§å¹ ã«å¹çåã§ããTipsã§ããã·ã§ã«ã¹ã¯ãªããã¯ãç¹ã«UNIXç³»ã·ã¹ãã ã§ã®èªååã¿ã¹ã¯ã«æ¬ ãããªããã¼ã«ã§ããé©åã«ä½¿ç¨ããã°ãè¤éãªã¿ã¹ã¯ãå¹ççã«ãããã¦ä¿¡é ¼æ§é«ãå®è¡ã§ãã¾ãã ãã¤ã«ã¨ã¯ãå復çã§ããã¥ã¢ã«ãªä½æ¥ã®ãã¨ãæãã¾ããããã«ã¯ãä¾ãã°ãæåã§ã®ã·ã¹ãã ã®ã¹ã±ã¼ãªã³ã°ããã¨ã©ã¼ã®ãã©ãã«ã·ã¥ã¼ãã£ã³ã°ãã«ã¼ãã£ã³ãªã¡ã³ããã³ã¹ä½æ¥ãªã©ãå«ã¾ãã¾ãããã¤ã«ãç¹å®ãããããèªååãããã¨ã§ãã¨ã³ã¸ãã¢ã¯ããåµé çãªã¿ã¹ã¯ãããã¸ã§ã¯ãã«ç¦ç¹ãåããããã¨ãã§ãã¾ãã ãã¤ã«ãå¤å¥ããæ¹æ³ã¨ãã¦ã¯ã以ä¸ã®ãããªåºæºãæãããã¾ãï¼ æä½æ¥ã§ããã㨠å®å ¨ãªæä½æ¥ã ãã§ãªãããããã¿ã¹ã¯ãèªååããããã®ã¹ã¯ãª
This article is about a few quick thumb rules I use when writing shell scripts that Iâve come to appreciate over the years. Very opinionated. Things¶ Use bash. Using zsh or fish or any other, will make it hard for others to understand / collaborate. Among all shells, bash strikes a good balance between portability and DX. Just make the first line be #!/usr/bin/env bash, even if you donât give exec
bash ã®ã·ã§ã«ã¹ã¯ãªãããæ¸ãã¨ãã«ããã¤ãè³æ»ã§ä»¥ä¸ããã£ã¦ããã(ååãæ´åãã¦ããããã®ãã³ãããã¦ãã) ã¨ãã£ã¿ãªã CI 㧠shellcheck ãã¾ãã set -euxo pipefail ã¨åé ã«æ¸ã ãããªæã #!/bin/bash set -euxo pipefail ãã¤ã¾ã§ãã³ããã§ã¯ãããã«ã¢ã¬ãªã®ã§ãæå³ã調ã¹ãã¡ã¢ã shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts ã¤ã±ã¦ãªãæ¸ãæ¹ã«è¦åãåºãã¦ããã ããããã®è¦åã«ã¯ã¨ã©ã¼ã³ã¼ãå²ãæ¯ããã¦ãã¦ã¨ã¦ãä¾¿å© ã¨ã©ã¼ã³ã¼ããã¨ã«æ£èª¤ä¾ã解説ãæ¸ããã¦ããã®ã§ãããããã SC1000 ã®ä¾ CI ãããã ããã¨ãã£ã¿ã®ãã©ã°ã¤ã³ãå å® ãã¦ããã®ã§ã¨ããããå ¥ãã¦ããã¨è¯ã set
yasuããã«æãã¦ããã ããã®ã§ã¡ã¢ã§ãã vimã§éã«Ctrl+Vã¨ãã§ã³ããããã³ã¼ãããã¼ã¹ãããã¨,ã¤ã³ãã³ããå´©å£ããäºãå¤ã ããã¾ãã ã§ãããããªæã« :set paste ã¨ãã¦ãã¼ã¹ãããã¨è¯ãæãã«ãã¼ã¹ãããã¾ããããã!!! ç¥ãã¾ã§ ã¡ãªã¿ã«ãããç¥ãã¾ã§ã¯emacséãã¦ãã¼ã¹ããã¦ã¾ããâ¦ãééãããâ¦ã ããã«ä¾¿å© id:ST_ha1cyon ãããã ã¡ãªã¿ã«:set pasteããå¾ã:set nopasteããã¨ãã¨ã«æ»ããã id:mattn ãããã set paste ããã°ã«ãããã¼ãè¨å®ããããã® pastetoggle ã¨ãããªãã·ã§ã³ãããã¾ãã詳ãã㯠:help pastetoggle ãã ããã« :i! :a!ããããããã .ããã
ã¨ããç°å¢ã§ãããã ããApacheã®è¨å®ãã¡ã¤ã«ãé ç½®ããconfigtestãè¡ãã¨ã以ä¸ã®ã¨ã©ã¼ãåºãã Invalid command '\xef\xbb\xbf', perhaps misspelled or defined by a module not included in the server configuration ãã¡ã¤ã«ã®æåã³ã¼ãã¯ãUTF8ã§ãããã"EF BB BF"ã¯ãBOMãã¨å¼ã°ãããããã¹ããUnicodeã§æ¸ããã¦ããããããè¨è¿°å½¢å¼ã®èå¥ãè¡ãããã®ç¬¦å·ãããã (æ¥ããããªããåãã¦ç¥ã£ãã) â BOM (Byte Order Mark, ãã¤ãã»ãªã¼ãã¼ã»ãã¼ã¯) Unicodeã®UTF-16ãªã©ã®16bitåä½ã®æåã¨ã³ã³ã¼ãã£ã³ã°ã¹ãã¼ã ã§ã¯ã8bitåä½ã§ãã¼ã¿ãé åããéã®ã¨ã³ãã£ã¢ã³ã¨ãã¦ãããã°ã¨ã³ãã£ã¢ã³ã¨ãªãã«ã¨ã³ãã£ã¢ã³ã®
(ãã®è¨äºã¯ãWindowsã§Goãã®ç¬¬2åã§ã) æ´åæéã»éçºç°å¢ ãã¦ãGo ã§ã®ããã°ã©ãã³ã°ç°å¢ãæ´ããã«ããã£ã¦ãæéã決ãã¦ãããã ã¾ãéçºç°å¢ã ãããã®ä¸é£ã®ææ¸ã§æ³å®ããã®ã¯ä»¥ä¸ã®ã¨ããï¼ Windows Windows 8.1 x64ã§åä½ç¢ºèªã ãããããã以åã»ä»¥éã§ãåã CygWin/Mingw ã¨ãã¯ï¼ç´æ¥çã«ã¯ï¼ä½¿ããªã ãªãã Windows ã§ã³ã¼ãã£ã³ã°ãã¦ãã¨ç³ãæããããããªé¢¨æ½®ãæè¿ãããã å人çã«ã Apple製åãè²·ã£ã¦ã¯ãªããªãã¨ããä¸æã®æããã èªåã®è¥ãããã¯Xç°å¢ãªããä¸é¨ã®ãã«ã¸ã§ã¢ã®ãã®ã ã£ãããããï¼ã¨ããããã¿ ãããWindows ã«ãã ãããç°è«ã¯èªããªãã ã¾ãããã¼ã«é¡ã®ã¤ã³ã¹ãã¼ã«æã«ã¯ã ã§ããã ãåç¾æ§ã®é«ãæ¹æ³ãã¨ã ããã«ãããmake && make install ã§ããã¨æã£ã¦ããæ代ããã¼ãã«ã
vimã§ãã¼ã¹ãããã©ããã Vimã®ã¤ã³ãµã¼ãã¢ã¼ãã§æ®éã«ãã¼ã¹ãããã¨ããªããè¬ã®ã¤ã³ãã³ããå ¥ãã¾ãããã set :pasteã¨ããã£ã¦ããè²¼ãä»ãã¦ãset :nopasteããã¨ãããåé¿ã§ãããã§ããããããããã©ãããã ãã®ä¸é£ã®æµãããããã³ã°ã§ãããããã£ããã§ããããã¼ã¹ãããCmd-vã¯åã®å ´åã¯å¤åiTermãå¦çãã¦ãããããç¡çããã vimã§ãã¼ã¹ãããã¨ãã¤ã³ãã³ããããªãã¿ãããªè¨äºããããã©ãï¼çºã§è²¼ãä»ããããªãæç¹ã§æããã«ããã©ãããã pbpasteã使ã Macã«ã¯ãpbpasteã¨ããclipboardã®ä¸èº«ãåºåããã³ãã³ããããã ããã¨ã:r !commandãcommandã®åºåãæ¿å ¥ãããã¨ãçµã¿åãããã¨â¦ï¼
èªåãã¡ã¤ã«ã¿ã¤ãæ¤åº vimã§ã¯èµ·åæï¼å³å¯ã«ã¯ãããã¡ã«å±éæï¼ã«èªåã§ãã¡ã¤ã«ã®æ¡å¼µåã«å¯¾å¿ãããã¡ã¤ã«ã¿ã¤ããé¸ãã§ãããæ©è½ãã¤ãã¦ãã ãããæå¹åããã«ã¯ã.vimrcã« filetype on ã¨è¨è¿°ããã°ãã ã ããä¸è¬çãªãã¡ã¤ã«ã¿ã¤ãã«ã¤ãã¦ã¯èªåã§è¨å®ãåæ ããããã®ã®ãå°ãå¤ããã¨è¨å®ãç¡ãã£ãããã ãããªã¨ãã¯èªåã§ã :set filetype=hoge ãããã®ç縮形ã§ãã setf hoge ãªã©ã¨ãã¦é½åº¦èªã¿è¾¼ãå¿ è¦ããã ããã¯é常ã«ããã©ããã 解決ç vimã¯èµ·åæã«filetype.vimã¨ãããã¡ã¤ã«ãèªã¿è¾¼ããã¨ã§ãã®èªåæ¤åºãè¡ã£ã¦ãã åã®Macã§ã¯/usr/share/vim/vim73/filetype.vimã«åå¨ãã¦ãããããã®ä¸ãè¦ãã¨ä»¥ä¸ã®è¡ããã runtime! ftdetect/*.vim ãã®è¡ã¯ftdetect以ä¸
vimãç·¨éããã«å½ããããªãããã®ãã¼ã¿çããã³ãããããã£ã¦ã¨ãããã¾ãããããããvimä¸ã§ãã®ã¾ã¾ã³ããããã¨ã¤ã³ãã³ããåããæãããæãã«ããã¾ããããã¯å¤åautoindentãé¢ä¿ãã¦ãã®ããªããã調ã¹ã¦ãªãã®ã§åããã¾ãããâ ã¾ããã¨ãããããã¼ã¹ãã¢ã¼ãã«ããã°ç´ãã¾ãã vimãéãããä¸åãã£ã¨ãã°OKã.vimrcã«set pasteã¨æ¸ãã¦ããã®ãããããªã :set pasteè¿½è¨ bashuraããããã³ã¡ã³ããããã¾ãããset pasteã«ã¯å¯ä½ç¨ãããããã§ããããã¼ã¹ããããã¨ãã«éã£ã¦ã¤ããã®ãè¯ãããã§ããvimå ã§ãªãã¤ã³ã¯ã§æ¸ããã¨ã§ããã
http://la.ma.la/misc/js/set/ Pythonã®setåãjsã«ç§»æ¤ãã¦ã¿ããsetã£ã¦ã®ã¯è¦ç´ ãéè¤ããªããªã¹ãã http://www.python.jp/doc/release/lib/types-set.html é åã¨ãã¦æ±ãããã±ã¼ã¹ãå¤ãããã«æãã®ã§Arrayãæ¡å¼µãã¦Setã®ã¡ã½ãããå ããæãã§ä½ã£ããå¶ç´ä»ãã®é åãã¿ãããªæè¦ã§æ±ããããã«ãaddãupdateã使ããã«pushã使ã£ã¦è¦ç´ ã追å ããã¨éè¤ãã¦ãã¾ã(pushãä¸æ¸ãããã°ãããã©ãç´æ¥å¤ãä»£å ¥ããããã©ããé²ããªã)ããªã®ã§å³æ ¼ã§ã¯ãªããæ ¼ç´ã§ããã®ã¯stringã¨numberã¨booleanåã®ã¿ãã§ãã¨ã©ã¼ãåºãããã§ããªããããã辺ããå æ¸ãªã®ã§ä½ãç´ãããã ç¨éã¨ãã¦ã¯Aããã¨Bããã¨Cãããããã¯ãã¼ã¯ãã¦ãURLã¨ããã«ãé¢ãããããªããããã¯ãã¼ã¯ãã¦ãªãU
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}