47 KiB
		
	
	
	
	
			
		
		
	
	ð ÄeÅ¡tina â Deutsch â ÎλληΜικά â English â Español â Français â Indonesia â Italiano â æ¥æ¬èª â íêµìŽ â Português â RomânÄ â Ð ÑÑÑкОй â SlovenÅ¡Äina â УкÑаÑМÑÑка â ç®äœäžæ â ç¹é«äžæ
The Art of Command Line
- ã¡ã¿æ å ±
 - åºæ¬
 - æ¥åžžçã«äœ¿ããã®
 - ãã¡ã€ã«ãšããŒã¿ã®åŠç
 - ã·ã¹ãã ã®ãããã°
 - ã¯ã³ã©ã€ããŒ
 - ç®ç«ããªãã䟿å©ãªãã®
 - OS Xçšã®ãã®
 - Windowså°çš
 - ãããªããªãœãŒã¹
 - å 責äºé
 
ã³ãã³ãã©ã€ã³ã§æµããããã«æäœãã§ãããšããããšã¯ã軜ãèŠããããä»äººããçè§£ãããªãã¹ãã«ã ãšã¿ãªãããããšãããã ãããããããã®ã¹ãã«ã¯ãæããã«ãããåãããããã¯åããããšã³ãžãã¢ãšããŠã®ããªãã®æè»æ§ãçç£æ§ãæ¹åããŠããããã®ã ãããã§ã¯ãLinuxã§ã³ãã³ãã©ã€ã³ã䜿ãäžã§äŸ¿å©ã ãšæã£ãã¡ã¢ãTipsã®æ°ã ãæããŠã¿ãããããã®ã¯åºç€çã ããéåžžã«è©³ãããã®ãæŽç·Žããããã®ãææ§ãªãã®ãããããã®ããŒãžã¯ãããªã«é·ããã®ã§ã¯ãªãããããã«æžããŠããããšã®å šãŠã䜿ã£ããæãåºãããšãã§ããã°ãããªã詳ãããªããã ããã
ãã®ããã¥ã¡ã³ãã¯å€ãã®å·çè ãšç¿»èš³è ã«ããææã§ããã ããã«æžããŠããããšã®å€ãã¯ãå ã Quoraã«æžãããŠãããã®ãå€ãããããåªãã人ãã¡ãããã«æ¹åæ¡ãåºãããšãã§ããGitHubã«çœ®ãã®ãããã®ã§ã¯ãšæã£ãã ã³ãã³ãã©ã€ã³ã«ã€ããŠçåããããªã質åããŠã¿ãã ãšã©ãŒãæ¹åç¹ãèŠã€ãããè²¢ç®ããŠã¿ãã!
ã¡ã¿æ å ±
察象 :
- ãã®ã¬ã€ãã¯ãåå¿è åãã§ãçµéšè åãã§ããããå¹ åºã(æžããŠããããšã¯å šãŠéèŠ)ããã€æç¢ºã§(å€ãã®ã±ãŒã¹ã«å¯ŸããŠå ·äœçãªäŸãä»ãã)ããããŠç°¡æœ(ä»ã®å Žæã§èŠã€ãããããããªéèŠã§ãªãããšãè±ç·ããããšã¯çã)ã§ããããšããŽãŒã«ã«ããŠãããåé ç®ã¯ãå€ãã®å Žé¢ã«ãããŠå¿ é ã§ããããä»ã®æ¹æ³ã«æ¯ã¹ãŠåçã«æéãç¯çŽããŠãããã ããã
 - OS Xçšã®ãã®ãé€ããLinuxåãã®å 容ãšãªã£ãŠããããã®å€ãã¯åçš®Linuxããã³MacOS(ãããã¯Cygwin)ã§ã䜿ããã ããã
 - ã€ã³ã¿ã©ã¯ãã£ããªBashã䜿ãããšãæ³å®ããŠããããå€ãã®é ç®ã¯ä»ã®ã·ã§ã«ãBashã®ã¹ã¯ãªããã§ã䜿ããã ããã
 - (ãã®ãªããžããªãž)çµã¿èŸŒãã¡ãªãããããã®ã§ããã°ãæšæºUnixã³ãã³ããããã±ãŒãžã€ã³ã¹ããŒã«ã³ãã³ããå«ããã
 
泚æ :
- 1ããŒãžå
ã«åããããã«ãå
容ã«ã¯æé»çã«æžãããŠããããšããããããã§åãããããç¥ã£ããã³ãã³ããåããã°ã詳现ãã©ããã§èª¿ã¹ãããããããã¯ã§ããã ãããæ°ããããã°ã©ã ãã€ã³ã¹ããŒã«ããã«ã¯ã
apt-getãyumãdnfãpacmanãpipãbrew(ã©ããé©ãããã®)ã䜿ããã - ã³ãã³ãããªãã·ã§ã³ããã€ããåè§£ããŠçè§£ããæå©ãã«ãExplainshellã䜿ããã
 
åºæ¬
- 
åºæ¬çãªBashãåŠãŒããå®éã®ãšããã
man bashã¯çµæ§ç°¡åã«çè§£ã§ããããããªã«é·ããªãã®ã§ãããã§äžéãã®ããšã¯åããããã以å€ã®ã·ã§ã«ãããããBashã¯åŒ·åã ããåžžã«äœ¿çšå¯èœã§ãããšããå©ç¹ããã(èªåã®PCã«å ¥ããŠããŸã£ããšèšã£ãŠzshãfishãªã©ã ããåŠãã§ããŸããšãæ¢åã®ãµãŒããè§ŠããªããŠã¯ãªããªãæãªã©ã«å¶çŽãåºãŠããŸã)ã - 
ããã¹ããšãã£ã¿ã®ã©ããæäœ1ã€ã«ç¿çãããã
nanoãšãã£ã¿ã¯ç·šéã®åºæ¬æäœ(éããä¿®æ£ãããä¿åãããæ€çŽ¢ãã)ãåŠã¶æãã·ã³ãã«ãªæ¹æ³ã®ã²ãšã€ã ãã¿ãŒããã«å ã§é©åœã«ãã®ãæžãã«ããã£ãŠä»ã«å šã代æ¿åããªããšããç¹ã§ãçæ³çã«ã¯Vim(vi)ãããã ãã(éåžžã¯Emacsã髿©èœãªIDEãææ°ã®ãã£ããããšãã£ã¿ãã¡ã€ã³ã«äœ¿ã£ãŠãããšããŠã)ã - 
manã§ã®ããã¥ã¡ã³ãã®èªã¿æ¹ãç¥ãã(ç¥ããããã®ããã«æžããšãman manã§ã»ã¯ã·ã§ã³çªå·ãåãããäŸãã°1ã¯ãäžè¬çãªãã³ãã³ãã5ã¯ãã¡ã€ã«ããã®ãäœæ³ã8ã¯ç®¡çã«ã€ããŠãšãã£ãå ·å)ãaproposã§manããŒãžãæ¢ãããã³ãã³ãã«ãã£ãŠã¯å®è¡å¯èœãã¡ã€ã«ã§ã¯ãªãBashã®ãã«ãã€ã³ã³ãã³ãã§ããããšãçè§£ããhelpãhelp -dã§ãã«ããèŠãããããšãç¥ããã - 
>ã<ã|ã䜿ã£ããã€ãã«ããå ¥åºåã®ãªãã€ã¬ã¯ã·ã§ã³ãåŠãŒãã>ã¯åºåãã¡ã€ã«ãäžæžãã>>ã¯è¿œèšãšãªããstdout(æšæºåºå)ãšstderr(æšæºãšã©ãŒåºå)ãåŠãŒãã - 
*(ãŸãã¯?ã[...])ã䜿ã£ããã¡ã€ã«ã°ããå±éãã¯ã©ãŒããŒã·ã§ã³ãããã«ã¯ã©ãŒã"ãšã·ã³ã°ã«ã¯ã©ãŒã'ã®éããåŠãŒã(詳ããã¯ãã®åŸã®å€æ°å±éã®é ãåç §)ã - 
&ãctrl-zãctrl-cãjobsãfgãbgãkillãªã©ãBashã®ãžã§ã管çã«ã€ããŠè©³ãããªããã - 
sshã«ã€ããŠç¥ããšãšãã«ãssh-agentãssh-addã䜿ã£ããã¹ã¯ãŒããªãã®èªèšŒã®åºæ¬ã«ã€ããŠçè§£ãããã - 
ãã¡ã€ã«ç®¡çã«ã€ããŠã
lsãls -l(ç¹ã«ãls -lã®ååãäœãæå³ãããçè§£)ãlessãheadãtailãtail -f(ãŸãã¯less +F)ãlnãšln -s(ããŒããªã³ã¯ãšãœãããªã³ã¯ã®éããšããããã®å©ç¹ã®çè§£)ãchownãšchmodãdu(ãã£ã¹ã¯äœ¿çšéãŸãšããç°¡åã«èŠããªãdu -hs *)ããã¡ã€ã«ã·ã¹ãã 管çã«ã€ããŠã¯ãdfãmountãfdiskãmkfsãlsblkãinodeã«ã€ããŠã¯ãls -i(ãŸãã¯df -i)ã - 
åºæ¬çãªãããã¯ãŒã¯ç®¡çã«ã€ããŠã
ipãããã¯ifconfigãdigãtracerouteãrouteã - 
gitã®ãããªããŒãžã§ã³ç®¡çã·ã¹ãã ãåŠãã§äœ¿ã£ãŠã¿ããã - 
æ£èŠè¡šçŸã«ã€ããŠè©³ããç¥ããã
grepãegrepã®è²ã ãªãã©ã°ãåãããŠã-iã-oã-vã-Aã-Bã-Cãšãã£ããªãã·ã§ã³ã¯ç¥ã£ãŠãããŠæã¯ãªãã - 
apt-getãyumãdnfãpacman(ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«ãã£ãŠéã)ãšãã£ãã³ãã³ãã§ããã±ãŒãžãæ¢ãããã€ã³ã¹ããŒã«ããæ¹æ³ãåŠãŒããPythonããŒã¹ã®ã³ãã³ãã©ã€ã³ããŒã«ãã€ã³ã¹ããŒã«ããã®ã«ãpipãå¿ èŠã (åŸã«åºãŠããããã€ãã®ã³ãã³ãã¯pipã§ã€ã³ã¹ããŒã«ããã®ãäžçªç°¡å)ã 
æ¥åžžçã«äœ¿ããã®
- 
Bashã§ã¯ãåŒæ°ãè£å®ããŸãã¯å©çšå¯èœãªã³ãã³ããåæããã®ã«ã¿ãã䜿ããã³ãã³ãå±¥æŽããæ€çŽ¢ããã®ã«ctrl-rã䜿ãã(æ€çŽ¢ããŒãå ¥åããåŸãctrl-rãç¹°ãè¿ãå ¥åããããšã§æ¬¡ããæ¬¡ãžãšæ€çŽ¢çµæãéãããšãã§ãããEnterã§èŠã€ãã£ãã³ãã³ãã®å®è¡ãšãªããEnterã§ã¯ãªãå³ã«ãŒãœã«ããŒãæŒããå Žåã¯èŠã€ãã£ãã³ãã³ããå ¥åãããç¶æ ã«ãªãã)
 - 
Bashã§ã¯ãæåŸã®åèªãåé€ããã®ã«ã¯ctrl-wãè¡é ãŸã§å šãŠåé€ããã«ã¯ctrl-uã䜿ããåèªããšã«ç§»åããã«ã¯alt-bãŸãã¯alt-fãè¡é ã«ç§»åããã«ã¯ctrl-aãè¡æ«ã«ç§»åããã«ã¯ctrl-eãè¡æ«ãŸã§åé€ããã«ã¯ctrl-kãç»é¢ã®ã¯ãªã¢ã¯ctrl-lã§ãããBashã«ãããããã©ã«ãã®ããŒå²ãåœãŠãå šãŠèŠãã«ã¯
man readlineãåç §ãããããåºãŠãããäŸãã°ã**alt-.**ã¯åã®åŒæ°ãé çªã«è¡šç€ºãã**alt-***ã¯ã°ãããå±éããã - 
vi颚ã®ããŒå²ãåœãŠã奜ããªãã
set -o viãå®è¡ãããã(å ã«æ»ããããšãã¯set -o emacs) - 
é·ãã³ãã³ããç·šéãããšãã«ããšãã£ã¿ãèšå®ããåŸã§(äŸãã°
export EDITOR=vim)ãctrl-x ctrl-eã«ãã£ãŠç·šéäžã®ã³ãã³ããè€æ°è¡ã®ç·šéã®ããã«æå®ãããšãã£ã¿ã§éããããvi颚ã®å Žåã¯ãescape-vã - 
æè¿å®è¡ããã³ãã³ãã確èªãããªã
historyã!nãšç¶ããããšã§(nã¯ã³ãã³ã暪ã«è¡šç€ºãããæ°å)å床å®è¡ã§ãããctrl-rã**alt-.**ã§çšã¯è¶³ããã ãããã!$(çŽåã®åŒæ°)ã!!(çŽåã®ã³ãã³ã)ãšãã£ãçç¥åœ¢ãããããããã - 
cdã§ããŒã ãã£ã¬ã¯ããªãžã®ç§»åãããŒã ãã£ã¬ã¯ããªã«é¢é£ãããã¡ã€ã«ã«ã¢ã¯ã»ã¹ããå Žåã¯ãã¬ãã£ãã¯ã¹~ãã€ãã(äŸ:~/.bashrc)ãshã¹ã¯ãªããã®äžã§ã¯$HOMEã§ããŒã ãã£ã¬ã¯ããªã衚ãããšãã§ããã - 
åã®ã¯ãŒãã³ã°ãã£ã¬ã¯ããªã«æ»ããªã
cd - - 
éäžãŸã§ã³ãã³ããå ¥åããããã©å¿å€ããããæã¯ãalt-#ãæã€ãšè¡é ã«
#ãæ¿å ¥ãããã³ã¡ã³ããšããŠå ¥åããã(ctrl-aã#ãenterã§ãåã)ãããã¯åŸã§ã³ãã³ãå±¥æŽããæ€çŽ¢ã§ããã - 
xargs(ãŸãã¯parallel)ã䜿ãããéåžžã«åŒ·åãè¡ããšã«ããã€ã®ã¢ã€ãã ãå®è¡ããã(-L)ãã䞊å床(-P)ãå¶åŸ¡ã§ãããæ£ããå®è¡ããããå®ãã§ãªããªãããŸãxargs echoããŠã¿ãã°ããã-I{}ã䟿å©ãäŸãã°ä»¥äžã®éãã 
   find . -name '*.py' | xargs grep some_function
   cat hosts | xargs -I{} ssh root@{} hostname
- 
pstree -pã¯ããã»ã¹ããªãŒã衚瀺ããã®ã«äŸ¿å©ã - 
pgrepãpkillã§ãããã»ã¹åã§æ€çŽ¢ãããã·ã°ãã«ãéãã(-fã䟿å©)ã - 
ããã»ã¹ã«éããè²ã ãªã·ã°ãã«ãç¥ã£ãŠããããäŸãã°ãããã»ã¹ããµã¹ãã³ãããã«ã¯
kill -STOP [pid]ã䜿ããå šçš®é¡èŠããªããman 7 signalã - 
ããã¯ã°ã©ãŠã³ãããã»ã¹ããã£ãšå®è¡ãç¶ããããªã
nohupãããã¯disownã䜿ããã - 
netstat -lntpãss -platã§ãã©ããªããã»ã¹ããªãã¹ã³ããŠããã確èªããã(UDPãªã-uãä»ãã)ã - 
éãããŠãããœã±ããããã¡ã€ã«ãèŠãã«ã¯
lsofãåç §ã - 
uptimeãwã«ãã£ãŠã·ã¹ãã ã®çšŒåæéã調ã¹ãããã - 
aliasã«ãã£ãŠããå©çšããã³ãã³ãã®ãšã€ãªã¢ã¹(ã·ã§ãŒãã«ãã)ãäœæã§ãããäŸãã°ãalias ll='ls -latr'ã§ã¯æ°ãããšã€ãªã¢ã¹ã§ããllãäœæããã. - 
ãã䜿ããšã€ãªã¢ã¹ãã·ã§ã«èšå®ãæ©èœã
~/.bashrcã«ä¿åãããã°ã€ã³ã·ã§ã«ã«åæ ããããããã§å šãŠã®ã»ãã·ã§ã³ã§ããªãã®èšå®ãå©çšã§ããã - 
ãã°ã€ã³æã«å®è¡ãããŠã»ããã³ãã³ããç°å¢å€æ°ã
~/.bash_profileã«èšèŒãããç»é¢ããã®ãã°ã€ã³ãcronãžã§ãã§èµ·åãããã·ã§ã«ã«ã¯å¥ã®èšå®ãå¿ èŠã ã - 
Gitã§æ§ã ãªãã·ã³ã®èšå®ãã¡ã€ã«(äŸ:
.bashrcã.bash_profile)ãåæããããã - 
空çœãå«ã倿°ããã¡ã€ã«åã«ã¯æ³šæãå¿ èŠã ãBash倿°ã«ã¯ã¯ãªãŒããã€ãããããããªé¢šã«
"$FOO"ã ãã¡ã€ã«åã®åºåããšããŠãã«æåãæå®ããå Žåã«ã¯-0ã-print0ãªãã·ã§ã³ãä»äžããããäŸ:locate -0 pattern | xargs -0 ls -alorfind / -print0 -type d | xargs -0 ls -alã空çœãå«ãã ãã¡ã€ã«åãç¹°ãè¿ãå®è¡ããããã«ã¯ãIFS=$'\n'`ã䜿ã£ãŠIFSãæ¹è¡ã®ã¿ã«ãããã - 
Bashã¹ã¯ãªããã§ã¯ã
set -xã§ãããã°åºåãåºãã(set -vã¯ãå®è¡ãããã³ãã³ãã倿°åãã³ã¡ã³ããªã©ããã®ãŸãŸåºåãã)ãç¹å¥ãªçç±ããªãéã峿 Œã¢ãŒã(strict mode)ã䜿ããset -eã§ãšã©ãŒæ(0以å€ã®çµäºã³ãŒãæ)ã«åŒ·å¶çµäºããããã«ãset -uã«ãã£ãŠæªå®çŸ©ã®å€æ°ã®å©çšãæ€ç¥ããã€ãã®ãšã©ãŒã峿 Œã«æ±ãããã«set -o pipefailã䜿ãã(ããã¯ã¡ãã£ãšåŸ®åŠãã)ãããè€éãªã¹ã¯ãªãããªããEXITãŸãã¯ERRã·ã°ãã«ã«å¯ŸããŠtrapã䜿ããã䜿ãå Žé¢ãšããŠã¯ä»¥äžã®å Žåã®ããã«ãšã©ãŒãæ€ç¥ããŠã¡ãã»ãŒãžãåºåãããšã: 
      set -euo pipefail
      trap "echo 'error: Script failed: see failed command above'" ERR
- Bashã¹ã¯ãªããã§ã¯ãã³ãã³ãã®ã°ã«ãŒããäœãã®ã«ãµãã·ã§ã«(äžžæ¬åŒ§ã§å²ãŸããéšå)ã䟿å©ãäžæçã«ã¯ãŒãã³ã°ãã£ã¬ã¯ããªãç§»åãããšããããããäŸã
 
      # ã«ã¬ã³ããã£ã¬ã¯ããªã§äœãå®è¡
      (cd /some/other/dir && other-command)
      # å
ã®ãã£ã¬ã¯ããªã§äœæ¥ç¶è¡
- 
Bashã§ã¯ãããããã®å€æ°å±éã®çš®é¡ãããããšãèŠããŠãããã倿°ãååšããããã§ãã¯ãããªãã
${name:?error message}ãäŸãã°ãBashã¹ã¯ãªããã1ã€ã®åŒæ°ãåãå¿ èŠããããªããinput_file=${1:?usage: $0 input_file}ãšã ãæžãã°ãããç®è¡åŒã®å±éã¯ãi=$(( (i + 1) % 5 ))ãã·ãŒã±ã³ã¹ã¯{1..10}ãæååã®ããªãã³ã°ã¯${var%suffix}ãš${var#prefix}ãäŸãã°var=foo.pdfã®æãecho ${var%.pdf}.txtãšãããšfoo.txtãåºåã«ã - 
{...}ã䜿ã£ãäžæ¬åŒ§å±éã«ãã£ãŠã䌌ããããªã³ãã³ããè€æ°åå ¥åããªããŠæžããäŸãã°ãmv foo.{txt,pdf} some-dir(äž¡æ¹ã®ãã¡ã€ã«ãç§»åããã),cp somefile{,.bak}(cp somefile somefile.bakãšå±éããã)ãmkdir -p test-{a,b,c}/subtest-{1,2,3}(ãã¹ãŠã®å¯èœãªçµã¿åããã§ãã£ã¬ã¯ããªãäœããã). - 
å±éã®é åºã¯æ¬åŒ§âãã«ãããã©ã¡ãŒã¿ã倿°ãèšç®æ©å·ãã³ãã³ã眮æ(å·Šããå³)âæåã®åå²âãã¡ã€ã«åã®é ã ã(äŸãã°ã{1..20}ã®ãããªç¯å²ã¯{$a..$b}ãšããããã«ã¯è¡šçŸã§ããªãã
seqãforã«ãŒãã䜿ã£ãŠãããªé¢šã«è¡šãããšãã§ãããseq $a $b or for((i=a; i<=b; i++)); do ... ; done) - 
ã³ãã³ãã®åºåã
<(some command)ã®ããã«ããŠãã¡ã€ã«ã®ããã«æ±ãããäŸãã°ãããŒã«ã«ãšãªã¢ãŒãã®ã®/etc/hostsãæ¯èŒãããªã以äžã®ããã«ãªãã 
      diff /etc/hosts <(ssh somehost cat /etc/hosts)
- ã¹ã¯ãªãããæžãæã¯å šãŠã®ã³ãŒããäžæ¬åŒ§ã§å²ãŸãªããŠã¯ãããªããããéãæ¬åŒ§ãæ¬ ããŠãããã·ã³ã¿ãã¯ã¹ãšã©ãŒã§å®è¡ã劚ãããããããã¯ããªããã¹ã¯ãªãããããŠã³ããŒããããšãã«å€æãããïŒäžå®å šãªã¹ã¯ãªããã®ïŒå®è¡ã«ãã£ãŠéšåçã«webããããŠã³ããŒãããŠããŸãã®ãé²ãããã ã
 
{
      # Your code here
}
- ããã¢ããã¥ã¡ã³ããã«ãã£ãŠããã¡ã€ã«ããã®è€æ°è¡ã®ãªãã€ã¬ã¯ãã®ããã«æ¯ãèãããšãã§ããã
 
cat <<EOF
input
on multiple lines
EOF
- 
Bashã§ã¯ã
some-command >logfile 2>&1ãŸãã¯some-command &>logfileã§æšæºåºåãšæšæºãšã©ãŒåºåã®äž¡æ¹ããªãã€ã¬ã¯ãã§ãããã³ãã³ããæšæºå ¥åã«å¯ŸããŠãã¡ã€ã«ãã³ãã«ãéãã£ã±ãªãã«ããããã°ã€ã³ããŠããã¿ãŒããã«ã«ã²ãã¥ããŠããããã</dev/nullããã®ãããç¿æ £ã - 
16é²ãš10é²ã®ASCIIããŒãã«ãèŠãã®ã«
man asciiã䜿ãããäžè¬çãªãšã³ã³ãŒãã«é¢ããæ å ±ã¯ãman unicodeãman utf-8ãman latin1ã䟿å©ã - 
ã¹ã¯ãªãŒã³ã®åå²ã«
screenãtmuxã䜿ãããç¹ã«ããªã¢ãŒãã®SSHã»ãã·ã§ã³ããã¿ãããããã¢ã¿ãããçŽãããããã®ã«æå¹ãbyobuã¯screenãtmuxã®æ å ±ãããå€ãæäŸããŠããã管çã容æã«ãªããã»ãã·ã§ã³æ°žç¶åã ãã®ç°¡åãªãã®ãªãdtachã - 
SSHã§
-Lãããã¯-D(ãŸãã«-R)ã䜿ã£ãããŒããã³ãã«ã®ããæ¹ãèŠããŠãããšäŸ¿å©ãäŸãã°ãªã¢ãŒãã®ãµãŒããããŠã§ããµã€ãã«ã¢ã¯ã»ã¹ããæãªã©ã - 
SSHã®èšå®ãå°ãã§ãæé©åããŠãããšäŸ¿å©ãäŸãã°ä»¥äžã®
~/.ssh/configã®èšå®ã ãšããããã¯ãŒã¯ç°å¢ã«ããæ¥ç¶æãåé¿ããå§çž®ã䜿çšã(垯åã®çްãåç·ã䜿ã£ãscpãªã©ã§äŸ¿å©)ãããŒã«ã«ã®å¶åŸ¡ãã¡ã€ã«ãæå®ããŠåäžãµãŒããšã®ãã£ãã«ãå€éåããã 
       TCPKeepAlive=yes
       ServerAliveInterval=15
       ServerAliveCountMax=6
       Compression=yes
       ControlMaster auto
       ControlPath /tmp/%r@%h:%p
       ControlPersist yes
- 
ãã以å€ã®SSHãªãã·ã§ã³ã¯ã»ãã¥ãªãã£äžã®åé¡ãããå¯èœæ§ããããããæå¹ã«ããã«ã¯ããµããããããšããã¹ãããšã«æå®ããããä¿¡é Œã§ãããããã¯ãŒã¯å ã§ã®ã¿äœ¿çšãããªã©æ³šæãå¿ èŠã
StrictHostKeyChecking=noãForwardAgent=yesãªã©ã - 
moshã¯UDPã䜿ã£ãsshã®ä»£æ¿ã§ã(ãµãŒããŒåŽã§ã®èšå®ã¯å¿ èŠã§ããã) æç¶çãªæ¥ç¶æã«äŸ¿å©ã - 
8鲿°è¡šçŸã®ãã¡ã€ã«ããŒããã·ã§ã³ã¯ãã·ã¹ãã èšå®ã®éã«äŸ¿å©ã ã
lsã®çµæã«ãåºãŠãããééããããã以äžã®ããã«ããŠååŸã§ããã 
      stat -c '%A %a %n' /etc/timezone
- 
äœããã®ã³ãã³ãã®åºåãããã€ã³ã¿ã©ã¯ãã£ãã«å€ãéžæãããå Žåã¯ã
percolãŸãã¯fzfã䜿ããã - 
(gitã䜿ããªã©)äœããã®ã³ãã³ãã®åºåãããã¡ã€ã«ã«é¢ããããåããããå Žåã¯ã
fpp(PathPicker)ã䜿ããã - 
ã«ã¬ã³ããã£ã¬ã¯ããª(ãšãµããã£ã¬ã¯ããª)å šäœãããããã¯ãŒã¯å ã«å ¬éãããWebãµãŒãã«ãããªãã
python -m SimpleHTTPServer 7777(ããŒã7777ã§å ¬éãPython 2ã®å Žå)ãããã¯python -m http.server 7777(Python 3ã®å Žå)ã - 
ç¹æš©ã¬ãã«ã§ã³ãã³ããå®è¡ãããšããrootã§ã®å®è¡ã«ã¯
sudoãä»ã®ãŠãŒã¶ã®å Žåã¯sudo -uãå©çšãsuãŸãã¯sudo bashã§ãã·ã§ã«ããã®ãŠãŒã¶ã§èµ·åãããsu -ã§rootãŸãã¯ä»ã®ãŠãŒã¶ã§æ°ãã«ãã°ã€ã³ããç¶æ ãã·ãã¥ã¬ãŒããããã - 
ç°ãªããŠãŒã¶ãŒã®ã·ã§ã«ã«ç§»ããããšæã¯
su usernameãsu - usernameã䜿ããã"-"ãçšããããšã§ãŸãã§ä»ã®ãŠãŒã¶ãŒããã°ã€ã³ãããã®ããã«ç°å¢ãåŸãããšãã§ãããã¹ã€ããå ã®ãŠãŒã¶ãŒã®ãã¹ã¯ãŒããæ±ããããã - 
ã³ãã³ãã©ã€ã³ã®128K å¶éã«ã€ããŠç¥ããããã®"Argument list too long"ãšã©ãŒã¯ã¯ã€ã«ãã«ãŒãã«å€§éã®ãã¡ã€ã«ããããããŠããŸã£ããšãã«åºãäžè¬çãªãã®ã ã(ãããããèµ·ããã
findãxargsã代æ¿ãšããŠå©ãã«ãªãã ããã) - 
åºæ¬çãªèšç®(ãã¡ããPythonã®å©çšãäžè¬çã )ã«ã¯
pythoninterpreterã䜿ãããäŸãã°ãããªé¢šã«ã 
>>> 2+3
5
ãã¡ã€ã«ãšããŒã¿ã®åŠç
- 
ã«ã¬ã³ããã£ã¬ã¯ããªä»¥äžã®ãã¡ã€ã«ããã¡ã€ã«åã§æ¢ããããªãã
find . -iname '*something*'ãå Žæãæå®ããã«ãã¡ã€ã«åã§æ€çŽ¢ããããªããlocate somethingãã€ããã(ãã ãupdatedbã¯æè¿äœããããã¡ã€ã«ã¯ã€ã³ããã¯ã¹ããŠããªãã§ãããããšã«æ³šæ)ã - 
ãœãŒã¹ãããŒã¿ãã¡ã€ã«ã®(
grep -rãããé«åºŠãª)äžè¬çãªæ€çŽ¢ã«ã¯ãackãag("the silver searcher")ããããŠrg(ripgrep)ã䜿ããã - 
HTMLãããã¹ãã«å€æãããªãã
lynx -dump -stdinã - 
MarkdownãHTMLãªã©æ§ã ãªçš®é¡ã®ããã¥ã¡ã³ãã®å€æã«ã¯ã
pandocã詊ããŠã¿ããšããã - 
XMLãæ±ããªããŠã¯ãªããªããªãã
xmlstartletã¯å€ããããããŒã«ã ã - 
JSONã«ã¯
jqã䜿ããã - 
YAMLã«ã¯
shyamlãã - 
ExcelãCSVãã¡ã€ã«ã«ã¯ãcsvkitã§
in2csvãcsvcutãcsvjoinãcsvgrepãªã©ã䜿ããããã«ãªãã - 
Amazon S3ã«ã¯ã
s3cmdã䟿å©ã§ãs4cmdã¯ããã«é«éãAWSé¢é£ã®åŠçã«ã¯Amazonå ¬åŒã®awsãšæ¹åçã®sawsãæ¬ ãããªãã - 
sortãuniqãããã«uniqã®-uã-dãªãã·ã§ã³ãç¥ã£ãŠããããåŸã«åºãŠããã¯ã³ã©ã€ããŒãåç §ãcommã確èªããŠãããã - 
è€æ°ã®ããã¹ããã¡ã€ã«ãæäœããã®ã«ã¯ã
cutãšpasteãjoinã¯ç¥ã£ãŠããããcutã¯ã¿ããªäœ¿ã£ãŠããããjoinã¯å¿ããããŠããã - 
wcãçè§£ããæ¹è¡(-l)ãæå(-m)ãåèª(-w)ããã€ã(-c)ããããã®æ°ãæ¹ãç¥ã£ãŠãããã - 
æšæºå ¥åããã¡ã€ã«ãšæšæºåºåã®äž¡æ¹ã«åºã
teeãçè§£ããããls -al | tee file.txtã®ããã«äœ¿ãã - 
ã°ã«ãŒãã³ã°ããã£ãŒã«ããå ¥ãæ¿ãããçµ±èšçãªèšç®ãšãã£ããã£ãšè€éãªäœæ¥ã¯
datamashã®å©çšãæ€èšãããã - 
ãã±ãŒã«ã¯ããœãŒãã®é åº(ç §åé åº)ãããã©ãŒãã³ã¹ãªã©ãããããã®ã³ãã³ãã©ã€ã³ããŒã«ã«åŸ®åŠãªãšããã§åœ±é¿ããããšãèŠããŠããããå€ãã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ã
LANGãä»ã®ãã±ãŒã«å€æ°ã¯US Englishã®ãããªããŒã«ã«ãªèšå®ã«ãªã£ãŠããããã±ãŒã«ã倿ŽãããšãœãŒãé åºãå€ããããšã«æ³šæãããããŸããåœéå(i18n)察å¿ã®ã«ãŒãã³ã¯ãœãŒãããã®ä»ã®åŠçãäœåãé ãå®è¡ããããã«ãªãç¹ãç¥ã£ãŠããããå Žå(èšå®ã®åŠçãäžææ§ãèŠã€ããåŠçãªã©)ã«ãã£ãŠã¯ãexport LC_ALL=CãšããŠããŸãé ãi18n察å¿ã®åŠçãå®å šã«ç¡èŠããŠããŸãããšãå¯èœã ã - 
TZ=Pacific/Fiji dateã®ããã«èµ·åæã«å€æ°ãåã«ã€ããããšã§ãç¹å®ã®ã³ãã³ãã®ç°å¢å€æ°ãã»ããããããšãã§ããã - 
åçŽãªããŒã¿å å·¥ã®ããã«
awkãšsedã®åºç€ã身ã«ã€ããããã¯ã³ã©ã€ããŒãåç §ã - 
1ã€ãããã¯è€æ°ã®ãã¡ã€ã«å ã®æååãçŽæ¥çœ®ãæããŠããŸãã«ã¯ã
 
      perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
- è€æ°ã®ãã¡ã€ã«åã®å€æŽããã¡ã€ã«å
ã®æ€çŽ¢ã眮æã«ã¯ã
reprenã䜿ã£ãŠã¿ããã(å Žåã«ãã£ãŠã¯renameã³ãã³ãã§ãè€æ°ã®ãã¡ã€ã«å倿Žãã§ãããããã¹ãŠã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã§æåãåãã§ããããã§ã¯ãªãã®ã§æ³šæãå¿ èŠã) 
      # foo -> barãžãšãã¡ã€ã«åããã£ã¬ã¯ããªåããã¡ã€ã«ã®äžèº«ã倿Žãã:
      repren --full --preserve-case --from foo --to bar .
      # ããã¯ã¢ãããã¡ã€ã«ãå
ã«æ»ã whatever.bak -> whatever:
      repren --renames --from '(.*)\.bak' --to '\1' *.bak
      # äžèšãšåããã®ãrenameã䜿ã£ãŠ:
      rename 's/\.bak$//' *.bak
- ããã¥ã¢ã«ããŒãžã«ããããã« 
rsyncã¯éåžžã«é«éã§äžèœãªãã¡ã€ã«ã³ããŒã®éå ·ã§ããããã·ãŒã³éã®ãã¡ã€ã«ãåæãããããšã§ããç¥ãããŠããããããŒã«ã«ã®å Žåã§ãåæ§ã«æçšã§ããããŸãã倧éã®ãã¡ã€ã«ãåé€ããé«éãªæ¹æ³ãšããŠãå©çšã§ãã: 
mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
- 
å®è¡ãã¡ã€ã«ã®é²æãç£èŠãããå Žåã
pvãpycpãpmonitorãprogressãrsync --progressã䜿ããããããã¯ã¬ãã«ããã¯ã¢ããã¯dd status=progressã ã - 
ãã¡ã€ã«ããã©ã³ãã ãªè¡ãæãåºãã«ã¯
shuf - 
sortã®ãªãã·ã§ã³ãçè§£ããããæ°å€ã«å¯ŸããŠã¯-nã䜿ãã人éã«ãšã£ãŠèªã¿ããã圢åŒã®æ°å€ã®å Žå(äŸãã°ãdu -hã®åºå)ã¯-hã䜿ãããããŒãã©ã®ããã«åŠçãããã®ã(-tã-k)ãç¥ãããç¹ã«ãæåã®åã ãã§ãœãŒãããã«ã¯-k1,1ãšæžãå¿ èŠãããã-k1ã ãšå šè¡ãèŠãŠãœãŒãããããšããç¹ã«æ³šæã - 
stableãª(å®å®ãã)ãœãŒã(
sort -s)ã¯äŸ¿å©ãäŸãã°ãå§ãã«1åç®ã§ãœãŒããããããã2åç®ã§ãœãŒããããªããsort -k1,1 | sort -s -k2,2ãšããã°ããã - 
Bashã®ã³ãã³ãã©ã€ã³äžã§ã¿ãã衚çŸããå¿ èŠãããå Žåãctrl-v **[Tab]**ãå ¥åããã
$'\t'(ã³ãããããªãåŸè ã®æ¹ããããã)ã - 
ãœãŒã¹ã³ãŒãã«ããããåœãŠãåºæ¬ã®ããŒã«ã¯
diffãšpatchãdiffãæšªäžŠã³ã®sdiffã®çµ±èšæ å ±ãèŠããªãdiffstatãåç §ããããdiff -rã ãšããã£ã¬ã¯ããªå šäœã«å¯ŸããŠå®è¡ãããã倿Žç¹ã®æŠèŠãèŠããªãdiff -r tree1 tree2 | diffstatãvimdiffã§ã¯ãã¡ã€ã«ã®æ¯èŒãšç·šéãå¯èœã - 
ãã€ããªãã¡ã€ã«ãªããåçŽãª16é²ãã³ããèŠãã®ã«
hdããã€ããªãšãã£ã¿ã«ã¯bviã - 
åãããã€ããªãã¡ã€ã«ã«é¢ããŠãããã¹ããæœåºããããªã
strings(ãšgrepãªã©ã®çµã¿åãã)ã - 
ãã€ããªã®diff(ãã«ã¿å§çž®)ãªãã
xdelta3ã - 
ããã¹ããšã³ã³ãŒãã£ã³ã°ã®å€æã¯
iconvã䜿ããããããã¯ããé«åºŠãªããŒã«ãšããŠuconvãããããã¡ãã¯Unicodeã®é«åºŠãªåŠçãå¯èœãäŸãã°ä»¥äžã®ã³ãã³ãã§ã¯å°æåã«å€æãã¢ã¯ã»ã³ãèšå·ãåãé€ã(å±éããŠããåé€)ã 
      uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
- 
ãã¡ã€ã«ãåå²ãããªã
split(ãµã€ãºã§åå²)ãšcsplit(ãã¿ãŒã³ã§åå²)ã - 
æ¥æã«ã€ããŠãçŸå𿥿ãååŸããã«ã¯ISO 8601ãå©ãã«ãªãã
date -u +"%Y-%m-%dT%H:%M:%SZ"ã䜿ããã(ä»ã®ãªãã·ã§ã³ã¯ãã¡ã problematic)ãæ¥ä»ãæéã®è¡šçŸãæ±ãã«ã¯ãdateutilsã«ããããã«ãdateaddãdatediffãstrptimeãªã©ã䜿ããŸãããã - 
å§çž®ãã¡ã€ã«ã®æäœã¯
zlessãzmoreãzcatãzgrepã - 
chattrã§ãã¡ã€ã«æš©éã«ä»£ããäœéå±€ã®ãã¡ã€ã«å±æ§æ å ±ãã»ããã§ãããäŸãã°ãæå³ããªããã¡ã€ã«åé€ãé²ããã©ã°ã¯ãããã£ãŠç«ãŠããsudo chattr +i /critical/directory/or/file - 
ãã¡ã€ã«ã®æš©éãä¿åããªã¹ãã¢ããã«ã¯
getfaclãšsetfaclã䜿ãããäŸã¯ 
   getfacl -R /some/path > permissions.txt
   setfacl --restore=permissions.txt
- 空ãã¡ã€ã«ã玠æ©ãäœãã«ã¯
truncate(sparse fileãäœæ)ãfallocate(ext4, xfs, btrfs ãšocfs2ãã¡ã€ã«ã·ã¹ãã )ãxfs_mkfile(xfsprogs packageã«ããã»ãŒå šãŠã®ãã¡ã€ã«ã·ã¹ãã )ãmkfile(SolarisãMac OSãšãã£ãUnixé¢é£ã·ã¹ãã ) 
ã·ã¹ãã ã®ãããã°
- 
Webã®ãããã°ãªã
curlãcurl -lã䟿å©ã§ãwgetãåæ§ãããã¢ãã³ãªã®ã¯httpieã - 
CPUããã£ã¹ã¯ã®ã¹ããŒã¿ã¹ãç¥ãã«ã¯ãæšæºçãªããŒã«ã¯
top(ãŸãã¯ãããè¯ãhtop)ãiostatãiotopãiostat -mxz 15ã䜿ã£ãŠãåºæ¬çãªCPUã®æ å ±ãããŒãã£ãã·ã§ã³åäœã§ã®ãã£ã¹ã¯ã®è©³çްæ å ±ãããã©ãŒãã³ã¹ã«ã€ããŠèª¿ã¹ãŸãããã - 
ãããã¯ãŒã¯ã®ç¶æ ã®ç£èŠã«ã¯ã
netstatãssã - 
ææ©ãã·ã¹ãã ã§äœãèµ·ããŠããã®ãã調ã¹ãã«ã¯ã
dstatã䟿å©ããã詳ããèŠãã«ã¯ãglancesã - 
ã¡ã¢ãªã®ã¹ããŒã¿ã¹ãç¥ãã«ã¯ã
freeãããã¯vmstatãå®è¡ãããã®åºåã®æå³ãçè§£ããããç¹ã«ã"cached"ã®å€ã¯Linuxã«ãŒãã«ã«ãã¡ã€ã«ãã£ãã·ã¥ãšããŠä¿æãããŠããã¡ã¢ãªéã§ããã"free"ã®å€ãèŠãéã«èæ ®ãã¹ãã§ããããšã«æ³šæãããã - 
Javaã®ã·ã¹ãã ã®ãããã°ã¯ãŸãéãå°ã£ããšãããããããOracleãããã¯ä»ã®JVMã«ãå ±éããŠããã·ã³ãã«ãªããªãã¯ã¯ã
kill -3 <pid>ã§ãã«ã¹ã¿ãã¯ãã¬ãŒã¹ãšããŒãã®æŠèŠãæšæºåºåãããã¯ãã°ã«ãã³ãããã(äžä»£å¥GCã®è©³çްãåèçšåºŠã ãå«ãŸããŠãã)ãJDKã®jpsãjstatãjstackãjmapã䟿å©ã§ãSJK toolsã¯ããé«åºŠãªããŒã«ã§ããã - 
æ¹è¯çtracerouteãšããŠ
mtrã䜿ã£ãŠãããã¯ãŒã¯ã®åé¡ã調æ»ãããã - 
ãã£ã¹ã¯ããã£ã±ãã«ãªã£ãŠããçç±ã調ã¹ãã«ã¯ã
ncduã䜿ããšdu -sh *ããæéãç¯çŽã§ããã - 
垯åã䜿ã£ãŠããã®ãã©ã®ãœã±ãããããã»ã¹ãªã®ããèŠã€ããã«ã¯ã
iftopãããã¯nethogsã詊ããã - 
ab(Apacheã«ä»å±)ã¯ãWebãµãŒãã®ããã©ãŒãã³ã¹ããã£ãããã§ãã¯ããã®ã«äŸ¿å©ãããè€éãªãã¹ãã«ã¯siegeã詊ããã - 
ãã確å®ãªãããã¯ãŒã¯ã®ãããã°ã¯
wiresharkãtsharkãngrepã - 
straceãšltraceã«ã€ããŠç¥ã£ãŠããããããã°ã©ã ã®å®è¡ã«å€±æããããã³ã°ãããã¯ã©ãã·ã¥ãããããŠããã®çç±ãåãããªãããããã¯ããã©ãŒãã³ã¹ã«é¢ããäžè¬çæ å ±ãç¥ããããªãããã®ããŒã«ã圹ç«ã€ã¯ãã ããããã¡ã€ãªã³ã°ã®ãªãã·ã§ã³(-c)ãèµ·åäžã®ããã»ã¹ã«ã¢ã¿ããããæ©èœ(-p)ãèŠããŠãããã - 
å ±æã©ã€ãã©ãªããã§ãã¯ãããªã
lddãèŠããŠããããã§ãæªãããã¡ã€ã«ãæå®ããŠå®è¡ããªãããã« - 
èµ·åäžã®ããã»ã¹ã«
gdbã§æ¥ç¶ãããã®ã¹ã¿ãã¯ãã¬ãŒã¹ãåãæ¹æ³ãç¥ããã - 
/proc以äžã®ãã¡ã€ã«ã䜿ãããä»èµ·ãã£ãŠããåé¡ããããã°ããã®ã«ã¯çŽ æŽããã䟿å©ã ãäŸãã°ã/proc/cpuinfoã/proc/meminfoã/proc/cmdlineã/proc/xxx/cwdã/proc/xxx/eceã/proc/xxx/fd/ã/proc/xxx/smaps(ããã§ãxxxã¯ããã»ã¹IDãŸãã¯PIDãæå³ãã)ã - 
éå»ã«äœãåé¡ãèµ·ããããšã®åå ãæ¢ããªãã
sarããšãŠã䟿å©ãCPUãã¡ã¢ãªããããã¯ãŒã¯ãªã©ã®éå»ã®çµ±èšæ å ±ãèŠãããã - 
ããã«æ·±ãã·ã¹ãã ãšããã©ãŒãã³ã¹ã®åæã«ã¯ã
stap(SystemTap)ãperfãsysdigã - 
ã©ã®OSãå©çšããŠãããã
unameãuname -a(Unixã«ãŒãã«æ å ±)ã§ç¢ºèªããããã©ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã䜿ã£ãŠãããã¯lsb_release -a(ãã£ã¹ããªãã¥ãŒã·ã§ã³æ å ±)ã - 
äœããã€ããšéãããããªããš(倧æµããŒããŠã§ã¢ããã©ã€ãé¢é£ã®åé¡ã )ãèµ·ããŠãããã
dmesgãå®è¡ãããã - 
duã§è¡šç€ºããããã£ã¹ã¯ãŒã¹ããŒã¹ããã¡ã€ã«ãæ¶ããŠã空ããªãã£ãå Žåããã®ãã¡ã€ã«ãããã»ã¹ã«äœ¿ãããŠãããã©ãããããã£ãŠç¢ºèªããããlsof | grep deleted | grep "filename-of-my-big-file" 
ã¯ã³ã©ã€ããŒ
ã³ãã³ãããŸãšããŠäœ¿ãäŸãããã€ãã
sortãuniqã䜿ã£ãŠããã¹ããã¡ã€ã«ã®å ±ééšåãçµåãå·®ç°ãæ±ããæã«ç¹ã«äŸ¿å©ãªã®ã以äžã®ããæ¹ãaãšbã¯ããããå 容ã«éè€ã®ãªãããã¹ããã¡ã€ã«ãšããããã®æ¹æ³ã¯é«éã§ãæ°GBçšåºŠãŸã§ã®ä»»æã®ãã¡ã€ã«ãµã€ãºã§åäœãã(/tmpãå°ããªã«ãŒãããŒãã£ã·ã§ã³ã«ããå Žåã¯-Tãªãã·ã§ã³ãã€ããå¿ èŠããããããœãŒãã¯ã¡ã¢ãªå ã§è¡ããããšã¯éããªã)ãäžè¿°ã®LC_ALLãšsortã®-uãªãã·ã§ã³ãåç §ã®ããšã
      cat a b | sort | uniq > c   # cã¯aãšbã®åéå
      cat a b | sort | uniq -d > c   # cã¯aãšbã®å
±ééšå
      cat a b b | sort | uniq -u > c   # cã¯aãšbã®å·®ç°
- 
grep . *(åè¡ã«ãã¡ã€ã«åãä»ã)ããhead -100 *(ãã¡ã€ã«æ¯ã«ããããŒãä»ã)ã䜿ã£ãŠæè»œã«ãã£ã¬ã¯ããªå ã®å šãŠã®ãã¡ã€ã«ã®äžèº«ã確èªã§ãããèšå®ãã¡ã€ã«ãå«ãŸãããããª/sysã/procã/etc/ã«å¯ŸããŠéåžžã«äŸ¿å©ã§ããã - 
ããã¹ããã¡ã€ã«ã®3åç®ãå šãŠè¶³ãåãããã«ã¯ä»¥äžã§(Pythonã§åãããšãããã«æ¯ã¹ãŠ3åéã3åã®1ã®é·ãã§æžãã)ã
 
      awk '{ x += $3 } END { print x }' myfile
- ãã¡ã€ã«ããªãŒã®ãµã€ãºãããŒã¿ã確èªããããªãã以äžã¯ååž°çãª
ls -lãšåãã ãls -lRããèŠãããã 
      find . -type f -ls
- WebãµãŒãã®ãã°ã®ãããªããã¹ããã¡ã€ã«ããããåè¡ã«ã¯äŸãã°URLã®äžã«åºãŠãã
acct_idã®ãããªç¹å®ã®å€ãçŸãããšããããacct_idãäœåãªã¯ãšã¹ããããŠããããéèšããã«ã¯ã 
      egrep -o 'acct_id=[0-9]+' access.log | cut -d= -f2 | sort | uniq -c | sort -rn
- 
ç¶ç¶çã«å€æŽãç£èŠããå Žå
watchã䜿ããäŸãã°ããã£ã¬ã¯ããªã®ãã¡ã€ã«ã®å€æŽã確èªããã«ã¯watch -d -n 2 'ls -rtlh | tail'ãšãªããwifièšå®ãªã©ã®ãããã¯ãŒã¯èšå®é¢ä¿ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã§ã¯watch -d -n 2 ifconfigã - 
ãã®ããã¥ã¡ã³ãããã©ã³ãã ã«é ç®ãæãåºãã«ã¯ä»¥äžã®é¢æ°ãå®è¡ããã(MarkdownãããŒã¹ããã¢ã€ãã ãæœåºãã)ã
 
      function taocl() {
        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
          pandoc -f markdown -t html |
          xmlstarlet fo --html --dropdtd |
          xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
          xmlstarlet unesc | fmt -80
      }
ç®ç«ããªãã䟿å©ãªãã®
- 
expr: ç®è¡æŒç®ãè«çæŒç®ããŸãã¯æ£èŠè¡šçŸã®è©äŸ¡ãå®è¡ - 
m4: ã·ã³ãã«ãªãã¯ãããã»ããµ - 
yes: æååããããã衚瀺 - 
cal: ããæãã®ã«ã¬ã³ã㌠- 
env: ã³ãã³ããå®è¡(ã¹ã¯ãªããå ã§éå®ãã) - 
printenv: ç°å¢å€æ°ã衚瀺ãã(ãããã°ãã¹ã¯ãªããå ã§ã®äœ¿çšã«äŸ¿å©) - 
look: æååã§å§ãŸãè±åèª(ãŸãã¯ãã¡ã€ã«å ã®è¡)ãèŠã€ãã - 
cutãpasteãjoin: ããŒã¿ã®æäœ - 
fmt: ããã¹ãã®æ®µèœããã©ãŒããããã - 
pr: ããã¹ããããŒãžãšã«ã©ã ã«ãã©ãŒããããã - 
fold: ããã¹ãã®è¡ãåå² - 
column: ããã¹ããã«ã©ã ãããã¯ããŒãã«ã«ãã©ãŒããã - 
expandãšunexpand: ã¿ããšã¹ããŒã¹ã®çžäºå€æ - 
nl: è¡æ°ã衚瀺 - 
seq: æ°åã衚瀺 - 
bc: èšç®æ© - 
factor: æŽæ°ãå æ°åè§£ - 
gpg: ãã¡ã€ã«ã®æå·åãšçœ²å - 
toe: terminfoã®ãšã³ããªã®ããŒãã«ã衚瀺 - 
nc: ãããã¯ãŒã¯ã®ãããã°ãšããŒã¿è»¢é - 
socat: ãœã±ãããªã¬ãŒãšTCPããŒãã®ãã©ã¯ãŒã(netcatãšåç) - 
slurm: ãããã¯ãŒã¯ãã©ãã£ãã¯ã®å¯èŠå - 
dd: ããŒã¿ããã¡ã€ã«ãããã¯ããã€ã¹éã§ç§»å - 
file: ãã¡ã€ã«ã®çš®é¡ãç¹å® - 
tree: ãã£ã¬ã¯ããªãšãµããã£ã¬ã¯ããªãããªãŒã§è¡šç€ºãlsã«äŒŒãŠãããååž°çã«åã - 
stat: ãã¡ã€ã«ã®æ å ± - 
time: ã³ãã³ããå®è¡ããŠåŠçæéãèšæž¬ - 
timeout: ã³ãã³ããå®è¡ããæå®æéçµéåŸã«ããã»ã¹ã忢ãã - 
lockfile: ã»ããã©ãã¡ã€ã«ãçæãããããã¯rm -fã®ã¿ã§åé€å¯èœã - 
logrotate: ãã°ãããŒããŒããå§çž®ãã¡ãŒã«éä¿¡ - 
watch: ã³ãã³ããç¹°ãè¿ãå®è¡ããã倿Žéšåã®åŒ·èª¿è¡šç€ºãã§ããã - 
tac: ãã¡ã€ã«ãéãã衚瀺 - 
shuf: ãã¡ã€ã«ããã©ã³ãã ã«éžãã è¡ã衚瀺 - 
comm: ãœãŒãæžã¿ãã¡ã€ã«ã®è¡ãæ¯èŒ - 
pv: ãã€ãçµç±ã§ããŒã¿ã®é²è¡ç¶æ³ãã¢ãã¿ãªã³ã° - 
sponge: æžã蟌ã¿åã«å šãŠã®å ¥åãèªã¿èŸŒããäŸãã°ãgrep -v something some-file | sponge some-fileã®ããã«ãå ¥åãšåããã¡ã€ã«ã«æžã蟌ãéã«äŸ¿å©ã - 
hdãhexdumpãxxdãbiewãbvi: ãã€ããªãã¡ã€ã«ã®ãã³ããšç·šé - 
strings: ãã€ããªãã¡ã€ã«ããããã¹ããæœåº - 
tr: æåã®çœ®ãæããšæäœ - 
iconvãããã¯uconv: æåãšã³ã³ãŒãã£ã³ã°ã®å€æ - 
splitãšcsplit: ãã¡ã€ã«ãåå² - 
units: åäœã®å€æãšèšç®ã2é±éãããã®ããã³(蚳泚 : é·ãã®åäœ)ãããŸã°ããããšã®ãã¥ãŠã£ãããŸã§(/usr/share/units/definitions.unitsãåç §ã®ããš) - 
apg: ã©ã³ãã ãªãã¹ã¯ãŒããçæ - 
7z: å§çž®çã®é«ããã¡ã€ã«å§çž® - 
ldd: åçã©ã€ãã©ãªã®æ å ± - 
nm: ãªããžã§ã¯ããã¡ã€ã«ããã·ã³ãã«ã衚瀺 - 
ab: WebãµãŒãã®ãã³ããŒããŒã¯ - 
strace: ã·ã¹ãã ã³ãŒã«ã®ãããã° - 
mtr: ãããã¯ãŒã¯ãããã°ã®ããã®ãã髿©èœãªtraceroute - 
cssh: ããžã¥ã¢ã«ãªäžŠåã·ã§ã« - 
rsync: ãã¡ã€ã«ããã©ã«ããSSHçµç±ãŸãã¯ããŒã«ã«ãã¡ã€ã«ã·ã¹ãã å ã§åæ - 
wiresharkãštshark: ãã±ãããã£ããã£ãšãããã¯ãŒã¯ãããã®ã³ã° - 
ngrep: ãããã¯ãŒã¯å±€ã®grep - 
hostãšdig: DNSåå解決 - 
lsof:ããã»ã¹ã®ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ãšãœã±ããæ å ± - 
dstat: 䟿å©ãªã·ã¹ãã æ å ± - 
glances: é«ã¬ãã«ã«è€æ°ã®ãµãã·ã¹ãã ã®æŠèŠãææ¡ - 
iostat: ãã£ã¹ã¯ã®äœ¿çšç¶æ³ - 
mpstat: CPUã®äœ¿çšç¶æ³ - 
vmstat: ã¡ã¢ãªã®äœ¿çšç¶æ³ - 
htop: topã®æ¹è¯ç - 
last: ãã°ã€ã³å±¥æŽ - 
w: 誰ããã°ã€ã³ããŠããã - 
id: ãŠãŒã¶ãã°ã«ãŒãã®æ å ± - 
sar: ã·ã¹ãã çµ±èšæ å ±ã®å±¥æŽ - 
iftopãŸãã¯nethogs: ãœã±ãããããã¯ããã»ã¹ããšã®ãããã¯ãŒã¯äœ¿çšé - 
ss: ãœã±ããã®çµ±èšæ å ± - 
dmesg: èµ·åæãšã·ã¹ãã ã®ãšã©ãŒã¡ãã»ãŒãž - 
sysctl: Linuxã«ãŒãã«ãã©ã¡ãŒã¿ã®ç¢ºèªããã³èšå® - 
hdparm: SATA/ATAãã£ã¹ã¯ã®æäœãããã©ãŒãã³ã¹ç¢ºèª - 
lsblk: ãããã¯ããã€ã¹ã®äžèЧããã£ã¹ã¯ãšãã£ã¹ã¯ããŒãã£ã·ã§ã³ã®ããªãŒãã¥ãŒ - 
lshwãlscpuãlspciãlsusbãdmidecode: CPUãBIOSãRAIDãã°ã©ãã£ãã¯ããã®ä»ããã€ã¹ãªã©ã®ããŒããŠã§ã¢æ å ± - 
lsmodãmodinfo: ã«ãŒãã«ã®ã¢ãžã¥ãŒã«ãªã¹ããšã¢ãžã¥ãŒã«æ å ± - 
fortuneãddateãsl: ããŒãããŒãããã¯èžæ°æ©é¢è»ãZippyã®åŒçšå¥ãã䟿å©ãã ãšæããã©ããã«ãã 
OS Xçšã®ãã®
ãããã¯MacOSçšã®é ç®ã§ãã
- 
ããã±ãŒãžç®¡çã¯
brew(Homebrew)ãport(MacPorts)ã䜿ããäžèšã®å€ãã®ã³ãã³ããMacOSã«ã€ã³ã¹ããŒã«ã§ããã - 
ã³ãã³ãã®åºåãã¯ãªããããŒãã«ã³ããŒãã
pbcopyãšã¯ãªããããŒãããåºåããpbpasteã - 
OptionããŒãaltããŒãšããŠMac OSã®ã¿ãŒããã«ã§äœ¿ã(äžè¿°ã®alt-bãalt-fãªã©ã䜿ãå Žå)ã«ã¯ãç°å¢èšå® -> èšå® -> ããŒããŒã ã§ã"ã¡ã¿ããŒãšããŠoptionããŒã䜿çš"ãéžæã
 - 
ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã§ãã¡ã€ã«ãéãã«ã¯ã
openãopen -a /Applications/Whatever.appã - 
Spotlight:
mdfindã§ãã¡ã€ã«ãæ€çŽ¢ããã¡ã¿ããŒã¿(ç»åãã¡ã€ã«ã®EXIFã®æ å ±ãªã©)ãmdlsã§è¡šç€ºã - 
Mac OSã¯BSD UnixããŒã¹ã§ãããããå€ãã®ã³ãã³ã(äŸãã°ã
psãlsãtailãawkãsed)ã§ã¯ãUnix System VãšGNUããŒã«ã®éãã«åœ±é¿ãããŠãLinuxã®ãã®ãšæ¯ã¹ãŠåŸ®åŠãªéããå€ãå«ãŸããŠãããéãããããã«ã€ããŠã¯ãããã¥ã¢ã«ããŒãžã®ã¿ã€ãã«ã«"BSD General Commands Manual"ãšæžãããŠãããã©ããã§å€æã§ãããå Žåã«ãã£ãŠã¯ãGNUããŒãžã§ã³ãã€ã³ã¹ããŒã«å¯èœã§ãã(äŸãã°ãgawkãgsedã§ãGNUã®awkãšsedã«å¯Ÿå¿)ãã¯ãã¹ãã©ãããã©ãŒã ã®bashã¹ã¯ãªãããæžãå Žåã«ã¯ããã®ãããªã³ãã³ãã¯é¿ãã(Pythonãperlã®å©çšãæ€èš)ãååãªãã¹ããå¿ èŠã§ããã - 
Mac OSã®ãªãªãŒã¹æ å ±ãååŸããã«ã¯ã
sw_versã 
Windowså°çš
ãããã¯Windowsçšã®é ç®ã§ãã
Windowsäžã§UnixããŒã«ãæã«å ¥ããæ¹æ³
- 
CygwinãMicrosoft Windowsã§ã€ã³ã¹ããŒã«ããŠUnixã·ã§ã«ã®åãæã«ãããããã®ããã¥ã¡ã³ãã§èª¬æãããŠãã倧éšåã¯ã³ã£ããç®±ã¿ããã«ç¬åµçã ã
 - 
Windows10ã§ããã°Windows Subsystem for Linux (WSL)ã䜿ãããUnixã³ãã³ãã©ã€ã³ã芪ãã¿ã®ããBashãæäŸããŠãããã
 - 
windowsäžã§ãäž»ã«GNUããããããŒããŒã«(GCCãªã©)ã䜿ãããå ŽåãMinGWãMSYSãæ€èšããããbashãgawkãmakeãgrepãæäŸããŠããããMSYSã¯Cygwinãšæ¯ã¹ããšå šãŠã®æ©èœãæã£ãŠããããã§ã¯ãªããMinGWã¯UnixããŒã«ã®ãã€ãã£ãWindowsããŒããäœæããã®ã«ç¹ã«æå¹ã ã
 - 
Windowsé äžã§Unixã®èŠãç®ãšæäœæãåŸãããäžã€ã®æ¹æ³ã¯Cashã ãæ¬åœã«éãããUnixã³ãã³ããã³ãã³ãã©ã€ã³ãªãã·ã§ã³ãããã®ç°å¢ã§ã¯å©çšã§ããªãã®ã§æ³šæãå¿ èŠã ã
 
䜿ããWindowsã³ãã³ãã©ã€ã³ããŒã«
- 
wmicã䜿ã£ãŠåŠã¶ããšã§ãWindowsã·ã¹ãã 管çè ã¿ã¹ã¯ã®å€§éšåãã³ãã³ãã©ã€ã³ã§èšè¿°ãå®è¡ããããšãã§ããã - 
pingãipconfigãtracertãnetstatãªã©ã®Windowsåºæã®ã³ãã³ãã©ã€ã³ã䟿å©ã ãšæããã¯ãã ã - 
Rundll32ãå®è¡ããããšã«ãã£ãŠäŸ¿å©ãªWindowsã¿ã¹ã¯ãå©çšããããšãã§ããã 
Cygwinã®ç§èš£ãšã³ã
- 
Cygwinã®ããã±ãŒãžãããŒãžã£ãŒã§è¿œå ã®Unixããã°ã©ã ãã€ã³ã¹ããŒã«ãããã
 - 
minttyãã³ãã³ãã©ã€ã³ãŠã£ã³ããŠãšããŠäœ¿ãã - 
/dev/clipboardã§Windowsã®ã¯ãªããããŒãã«ã¢ã¯ã»ã¹ããŠã¿ããã - 
ç»é²ãããã¢ããªã±ãŒã·ã§ã³ã§ä»»æã®ãã¡ã€ã«ãéãããã«ã¯
cygstartãèµ·åãããã - 
regtoolã§Windowsã¬ãžã¹ããªã«ã¢ã¯ã»ã¹ãããã - 
C:\Windowsãã©ã€ãã®ãã¹ã¯Cygwinäžã§ã¯/cygdrive/cãªã®ã§æ³šæãå¿ èŠã ããŸããCygwinã®/ã¯Windowsã®C:\cygwinã ãcygpathã䜿ã£ãŠCygwinã¹ã¿ã€ã«ãšWindowsã¹ã¿ã€ã«ã®ãã¹ãåãæ¿ãããããããã¯Windowsããã°ã©ã ãå®è¡ããã¹ã¯ãªããã§ãšãŠãæå¹ã ã 
ãããªããªãœãŒã¹
- awesome-shell: ã·ã§ã«ã®ããŒã«ããªãœãŒã¹ã®ãŸãšã
 - awesome-osx-command-line: ãã詳ããMac OSã®ã³ãã³ãã©ã€ã³ã¬ã€ã
 - Strict mode: ããããã·ã§ã«ã¹ã¯ãªãããæžãããã«
 - shellcheck: ã·ã§ã«ã¹ã¯ãªãã(æ¬æ¥ãbash/sh/zshçš)ã®éçè§£æããŒã«
 - Filenames and Pathnames in Shell: ã·ã§ã«ã¹ã¯ãªããã§ãã¡ã€ã«åãæ£ããæ±ãããã«
 - Data Science at the Command Line: åã¿ã€ãã«ã®æžç±ããåŒçšãããŠããããŒã¿ãµã€ãšã³ã¹ã§åœ¹ã«ç«ã€ã³ãã³ããããŒã«
 
å 責äºé
ããäžéšã®äŸå€ã¯ãããŸãããã³ãŒãã¯èª°ã§ãèªããããã«æžãããŠãããåã«ã¯è²¬ä»»ã䌎ããBashã§ã§ãããããšãã£ãŠããããã¹ãå¿ èŠããããšããæå³ã§ã¯ãªãïŒ ;)
ã©ã€ã»ã³ã¹
ãã®ããã¥ã¡ã³ãã¯Creative Commons Attribution-ShareAlike 4.0 International Liceneã§ã©ã€ã»ã³ã¹ãããã

