ãªãã誰ã®ããã«èšäºããããŸããïŒ
åœåã¯ãUnixã®ãããªã·ã¹ãã ã§äœæ¥ãéå§ããåŠçåãã®ã¡ã¢ã§ããã èšãæããã°ããã®èšäºã¯ãunixã³ãã³ãã©ã€ã³ã§ã®ä»¥åã®çµéšã¯ãªãããäœããã®çç±ã§ãããšå¹æçã«å¯Ÿè©±ããæ¹æ³ãæãã§ããããåŠã¶ã¹ãã§ãã人ã察象ãšããŠããŸãã
ããïŒææžïŒã®æ¹å®ã¯è¡ããããèšäºã¯èªã¿ããã£ã³ã»ã«ããã眮ãæãããããŸããã 代ããã«ãäœæ¥ã广çã§å¿«é©ã«ãªãããã«ãUNIXã·ã§ã«ã§äœæ¥ã®æåããçè§£ããå¿
èŠãããäž»ãªäºé
ïŒã³ãã³ããããªãã¯ãããã³ååïŒã«ã€ããŠèª¬æããŸãã
ãã®èšäºã¯ããã«æ©èœã®ã·ã§ã«ïŒzshãŸãã¯bashãæãŸããïŒãšããªãå¹
åºãæšæºããã°ã©ã ãåãããæ¬æ Œçãªunixã©ã€ã¯ãªç°å¢ã«é¢ãããã®ã§ãã
ã·ã§ã«ãšã¯äœã§ããïŒ
ã·ã§ã«ïŒã·ã§ã«ãå¥åãã³ãã³ãã©ã€ã³ããå¥åCLIãå¥åãã³ã³ãœãŒã«ããå¥åã端æ«ããå¥åãé»ãæåã§é»ããŠã£ã³ããŠãïŒã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšéä¿¡ããããã®ããã¹ãããŒã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ãïŒãŸããå³å¯ã«Govraãããã¯ãã®ãããªã€ã³ã¿ãŒãã§ãŒã¹ãæäŸãã
ããã°ã©ã ã§ãããçŸåšãã®éãã¯éèŠã§ã¯ãããŸããïŒã
äžè¬çã«ãã·ã§ã«ãä»ããäœæ¥ã¯æ¬¡ã®ããã«ãªããŸãïŒãŠãŒã¶ãŒïŒã€ãŸããããªãïŒã¯ããŒããŒãããã³ãã³ããå
¥åããEnterãæŒããšãã·ã¹ãã ã¯ã³ãã³ããå®è¡ããå®è¡çµæãç»é¢ã«æžã蟌ã¿ã次ã®ã³ãã³ããå
¥åãããã®ãåã³åŸ
ã¡ãŸãã
å
žåçãªã·ã§ã«ïŒ

ã·ã§ã«ã¯ããã¹ãŠã®Unixã©ã€ã¯ãªãµãŒããŒã·ã¹ãã ãšå¯Ÿè©±ããããã®äž»èŠãªæ¹æ³ã§ãã
ã³ãã³ãã©ã€ã³ã·ã¹ãã ã¯ã©ãã«ãããŸããïŒ
UNIXã·ã§ã«ãäžè¬çãªãªãã·ã§ã³ã¯ã©ãã§æåŸ
ã§ããŸããïŒ
- MacOSïŒbashïŒ;
- è·å ŽãŸãã¯å人ã®Webãããžã§ã¯ãã®ãµãŒããŒãžã®ãªã¢ãŒãã¢ã¯ã»ã¹ã
- ãªã¢ãŒãã¢ã¯ã»ã¹ãåããããŒã ãã¡ã€ã«ãµãŒããŒã
- Ubuntuãã©ããããã/ãã¹ã¯ãããäžã®PC-BSD-UNIXã«äŒŒãã·ã¹ãã ã¯ãç°¡åã«ã€ã³ã¹ããŒã«ããŠäœ¿çšã§ããŸãã
ã·ã§ã«ã§è§£æ±ºããã®ã«åŠ¥åœãªã¿ã¹ã¯ã¯äœã§ããïŒ
ã·ã§ã«ãé©åã§æçšã§äžå¯æ¬ ãªèªç¶ãªã¿ã¹ã¯ïŒ
- ã¿ãŒããã«ã§ã®ã€ã³ã¿ã©ã¯ãã£ããªäœæ¥ïŒ
- ã³ã³ãã€ã«ãmakeã«ããã¿ã¹ã¯ã®å®è¡ã
- ããã¹ããã¡ã€ã«ã®æ¯èŒã
- é«éã¢ãããã¯ããŒã¿åæïŒãã°å
ã®äžæã®IPã®æ°ãæé/åã«ããã¬ã³ãŒãã®ååžãªã©ïŒã
- 1åéãã®äžæ¬ã¢ã¯ã·ã§ã³ïŒå€ãã®ããã»ã¹ã«åã€ãããããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠããå Žå-ãã¡ã€ã«ã®å転ãŸãã¯è¿œå ïŒ;
- ã·ã¹ãã ã§èµ·ãã£ãŠããããšã®èšºæïŒã»ããã©ãããã¯ãããã»ã¹ãèšè¿°åããã£ã¹ã¯å®¹éãªã©ïŒ;
- ã¹ã¯ãªããã£ã³ã°ïŒ
- ä»ã®ã€ã³ã¿ãŒããªã¿ãŒã®ååšã«é Œãããšãã§ããªãå®è¡çšã®ã€ã³ã¹ããŒã«ã¹ã¯ãªãã-ããã¯åå¿è
åãã§ã¯ãããŸããã
- ã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ãã«ã¹ã¿ãã€ãºããæ©èœïŒæåŸ
ã«åœ±é¿ãäžããããã£ã¬ã¯ããªã倿Žãããç°å¢å€æ°ãèšå®ããïŒãåå¿è
åãã§ã¯ãããŸããã
- ãã«ã¯ãã¡ã€ã«ãã©ã³ã¹ã³ãŒãã£ã³ã°ãªã©ã®1åéãã®ã¹ã¯ãªããã
- ã¡ã€ã¯ãã¡ã€ã«ã
çµ¶å¯Ÿã«æåã®ã¹ããã
ã¯ããã«ïŒå
¥å Žãšéå Ž
ã·ã§ã«ãèµ·åããæ¹æ³ãšã·ã§ã«ããæãåºãæ¹æ³ãæ£ç¢ºã«ç¥ã£ãŠãã ããã
Ubuntuãã€ã³ã¹ããŒã«ãããŠãããã·ã³ã§äœæ¥ããŠããå Žåã¯ãã¿ãŒããã«ããã°ã©ã ãå®è¡ããå¿
èŠããããŸãã äœæ¥ãçµäºããããåã«ãŠã£ã³ããŠãéããããšãã§ããŸãã
MacOSã§ã¯ãã¿ãŒããã«ãå®è¡ããŸãã
ãªã¢ãŒããµãŒããŒã«ã¢ã¯ã»ã¹ããã«ã¯ã
ssh
ïŒMacOSãUbuntuããŸãã¯ä»ã®Unixç³»ã·ã¹ãã ã
putty
å ŽåïŒãŸãã¯
putty
ïŒWindowsãããå ŽåïŒã䜿çšããŸãã
ç§ã¯èª°ãç§ã¯ã©ãã§ããïŒ
次ã®ã³ãã³ããå®è¡ããŸãã
hostname
-çŸåšãããã·ã³ïŒãµãŒããŒïŒã®ååã衚瀺ããŸããwhoami
ãã°ã€ã³ïŒã·ã¹ãã å
ã®ååïŒã衚瀺ããŸããtree -d / |less
less-ãã·ã³äžã®ãã£ã¬ã¯ããªããªãŒã®æ¬äŒŒç»åã ã¹ã¯ããŒã«ãçµäºq
;pwd
çŸåšãããã£ã¬ã¯ããªã衚瀺ããŸãã ã³ãã³ãã©ã€ã³ã§ã¯ããã¡ããã©ãã®ããã«ããªãããšã¯ã§ããŸããããããã£ã¬ã¯ããªïŒ=çŸåšã®ãã£ã¬ã¯ããªãäœæ¥ãã£ã¬ã¯ããªïŒã«ããã¯ãã§ãã ã»ãšãã©ã®å ŽåãçŸåšã®äœæ¥ãã£ã¬ã¯ããªãããã³ããã«è¡šç€ºãããŸããls
çŸåšã®ãã£ã¬ã¯ããªå
ã®ãã¡ã€ã«ã®ãªã¹ãã ls /home
æå®ããããã£ã¬ã¯ããªå
ã®ãã¡ã€ã«ã®ãªã¹ãã
ããŒã ã®æŽå²ïŒæŽå²ïŒ
å®å
šãªã³ãã³ãã©ã€ã³ã®éèŠãªæ©èœã¯ãã³ãã³ãã®å±¥æŽã§ãã
ããã€ãã®ã³ãã³ããå®è¡ããŸãïŒ
hostname
ã
ls
ã
pwd
ã
whoami
ã æ¬¡ã«ãäžããŒãæŒããŸãã åã®ã³ãã³ããå
¥åè¡ã«è¡šç€ºãããŸããã äžäžããŒã䜿çšããŠãã¹ããŒãªãŒãååŸã«ç§»åããŸãã
hostname
ã«ã¹ã¯ããŒã«ããããEnterãæŒããŸã-ã³ãã³ããå床å®è¡ãããŸãã
å±¥æŽããã®ã³ãã³ãã¯ç¹°ãè¿ãã ãã§ãªããç·šéããããšãã§ããŸãã å±¥æŽã
ls
ãŸã§ã¹ã¯ããŒã«ããããã«
-l
ã¹ã€ããã远å ããŸãïŒ
ls -l
ã§ããããšã倿ããŸããããã€ãã¹èšå·ã®åã«ã¹ããŒã¹ããããŸãããåŸã«ã¯ãããŸããïŒã EnterãæŒããŸã-倿Žãããã³ãã³ããå®è¡ãããŸãã
å±¥æŽã®ã¹ã¯ããŒã«ãã³ãã³ãã®ç·šéããã³åå®è¡ã¯ãã³ãã³ãã©ã€ã³ã§äœæ¥ããéã®æãäžè¬çãªã¢ã¯ã·ã§ã³ã§ãããããã«æ
£ããã
ã³ããŒããŒã¹ã
ã³ãã³ãã©ã€ã³ã¯éåžžã«ããã¹ãäžå¿ã§ããã³ãã³ãã¯ããã¹ãã§ãããã»ãšãã©ã®æšæºããã°ã©ã ãžã®å
¥åã¯ããã¹ãã§ãããäœæ¥ã®çµæã¯ã»ãšãã©ã®å Žåããã¹ãã§ããããŸãã
ãã®ããã¹ãã®åªããæ©èœã¯ãã³ããŒããŠè²Œãä»ããããšãã§ããããšã§ããããã¯ãã³ãã³ãã©ã€ã³ã«ãåœãŠã¯ãŸããŸãã
ã³ãã³ã
date +"%y-%m-%d, %A"
詊ããŠãã ãã
å®å
šã«æã§å
¥åããã®ã§ããããããšãèšäºããã³ããŒããã®ã§ããïŒ ã³ããŒããŠã¿ãŒããã«ã«è²Œãä»ããå®è¡ã§ããããšã確èªããŠãã ããã
man
äœ¿çšæ¹æ³ãåŠç¿ããåŸããã«ããããµã³ãã«ã³ãã³ããã³ããŒããŠå®è¡ã§ããããšã確èªããŠãã ããã 確èªããã«ã¯ã
date
ããã°ã©ã ã®ãã«ãã§ã䜿çš
EXAMPLES
ã»ã¯ã·ã§ã³ãæ¢ããæåã®äŸãã³ããŒããŠå®è¡ããŸãïŒå¿µã®ããïŒãã«èšå·ãã³ãã³ãã®äžéšã§ã¯ãªãå Žåãããã¯å
¥åããæåŸ
ç¶ã®æ¡ä»¶ä»ãç»åã§ãïŒã
端æ«ããããã¹ããæ£ç¢ºã«ã³ããŒããŠç«¯æ«ã«è²Œãä»ããæ¹æ³ã¯ãã·ã¹ãã ãšãã®èšå®ã«ãã£ãŠç°ãªããŸãããããã£ãŠãæ®å¿µãªãããæ®éçãªæç€ºãåºãããšã¯ã§ããŸããã Ubuntuã§ã¯ãããã詊ããŠãã ãããã³ããŒã¯åãªãããŠã¹éžæã§ããã貌ãä»ãã¯äžå€®ã®ããŠã¹ãã¿ã³ã§ãã æ©èœããªãå ŽåããŸãã¯å¥ã®ã·ã¹ãã ã䜿çšããŠããå Žåã¯ãã€ã³ã¿ãŒããããæ€çŽ¢ããããçµéšè±å¯ãªå人ã«å°ããŠãã ããã
ããŒãšãªãã·ã§ã³
ã³ãã³ãã®å±¥æŽã調æ»ãããšããlsã³ãã³ãã«ã¯å°ãªããšã2ã€ã®ãªãã·ã§ã³ããããšããäºå®ã«æ¢ã«ééããŠããŸãã ãã®ããã«åŒã³åºããšãç°¡åãªãªã¹ãã衚瀺ãããŸãã
[22:26]akira@latitude-e7240: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
-l
ã¹ã€ããã远å ãããšãåãã¡ã€ã«ã®è©³çްæ
å ±ã衚瀺ãããŸãã
[22:28]akira@latitude-e7240: ~/shell-survival-quide> ls -l total 332 -rw-rw-r-- 1 akira akira 198 Feb 13 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 Feb 14 22:26 shell-first-steps.md -rw-rw-r-- 1 akira akira 146226 Feb 13 11:49 shell-first-steps.pdf -rw-rw-r-- 1 akira akira 16626 Feb 13 11:45 shell-survival-quide.md -rw-rw-r-- 1 akira akira 146203 Feb 13 11:35 shell-survival-quide.pdf
ããã¯éåžžã«äžè¬çãªç¶æ³ã§ããã³ãã³ãåŒã³åºãã«ç¹å¥ãªä¿®é£ŸåïŒããŒããªãã·ã§ã³ããã©ã¡ãŒã¿ãŒïŒã远å ãããšãã³ãã³ãã®åäœãå€ãããŸãã æ¯èŒïŒ
tree /
ãš
tree -d /
ã
hostname
ãš
hostname -f
ããã«ãã³ãã³ãã¯ãã©ã¡ãŒã¿ãŒãšããŠãã¡ã€ã«åããã£ã¬ã¯ããªããŸãã¯åãªãããã¹ãæååã䜿çšã§ããŸãã 詊ããŠãã ããïŒ
ls -ld /home ls -l /home grep root /etc/passwd
ç·
man
ãã·ã³ã§äœ¿çšå¯èœãªã³ãã³ããšããã°ã©ã ãããã³ã·ã¹ãã ã³ãŒã«ãšCæšæºã©ã€ãã©ãªã®ãã«ãã
詊ããŠãã ããïŒ
man grep
ã
man atoi
ã
man chdir
ã
man man
ã
ãäžãããäžãããPageUpãããPageDownãã®ãã¿ã³ã䜿çšããŠååŸã«ã¹ã¯ããŒã«ãã
q
ãã¿ã³ã䜿çšããŠãã«ãã®è¡šç€ºãçµäºããŸãã ãã«ãèšäºã§ç¹å®ã®ããã¹ããæ€çŽ¢ããŸãã/ïŒã¹ã©ãã·ã¥ïŒãæŒããæ€çŽ¢ããããã¹ããå
¥åããŠãEnterãæŒããŸãã æ¬¡ã®åºçŸç®æã«ç§»å
n
ããŒã
ãã¹ãŠã®åç
§èšäºã¯ã«ããŽãªã«åé¡ãããŸãã æãéèŠãªããšïŒ
- 1-å®è¡å¯èœããã°ã©ã ããã³ã·ã§ã«ã³ãã³ãïŒ
wc
ã ls
ã pwd
ãªã©ïŒ; - 2-ã·ã¹ãã ã³ãŒã«ïŒ
fork
ã dup2
ãªã©ïŒ - 3-ã©ã€ãã©ãªé¢æ°ïŒ
printf
ã scanf
ã cos
ã exec
ïŒã
ååãäžèŽããå Žåã«ãã©ã®ã«ããŽãªãããã«ãã衚瀺ããå¿
èŠããããã瀺ããŸãã ããšãã°ã
man 3 printf
ã¯Cæšæºã©ã€ãã©ãªã®é¢æ°ãèšè¿°ãã
man 1 printf
man 3 printf
ã¯åãååã®ã³ã³ãœãŒã«ããã°ã©ã ãèšè¿°ããŸãã
man -k .
ã³ãã³ãã䜿çšããŠããã·ã³ã§å©çšå¯èœãªãã¹ãŠã®ãã«ãèšäºã®ãªã¹ãã衚瀺ã§ããŸã
man -k .
ïŒããããããŒã ã®äžéšã§ãïŒã
å°ãªã
éåžžã«é·ãããã¹ãïŒãã¡ã€ã«ã®å
容ãé·ã人ãªã©ïŒãå°ããªã¿ãŒããã«ãŠã£ã³ããŠã§è¡šç€ºããå¿
èŠãããå Žåãç¹å¥ãªããŒãžã£ãŒããã°ã©ã ïŒåèªããŒãž/ããŒãžãã€ãŸãããŒãžãªãŒãã¬ããããïŒã䜿çšãããŸãã æã人æ°ã®ãããªãŒãã¬ããã¯
less
ã§ãããmansãèªããšãã«ã¹ã¯ããŒã«ãæäŸããã®ã¯ããã§ãã
åäœã詊ããŠæ¯èŒããŠãã ããïŒ
cat /etc/bash.bashrc cat /etc/bash.bashrc |less
ãã©ã¡ãŒã¿ã§ããã«ãã¡ã€ã«ãã¹ã¯ããŒã©ãŒã«è»¢éã§ããŸãã
less /etc/bash.bashrc
äžäžã«ã¹ã¯ããŒã«-ãäžãããäžãããPageUpãããPageDownããçµäº-ãã¿ã³
q
ç¹å®ã®ããã¹ãã®æ€çŽ¢ïŒ
/
ïŒã¹ã©ãã·ã¥ïŒãæŒããæ€çŽ¢ããããã¹ããå
¥åããŠãEnterãæŒããŸãã æ¬¡ã®åºçŸç®æã«ç§»å
n
ããŒã ïŒ
man
ã«é¢ããããã¥ã¢ã«ãç¥ã£ãŠããŸããïŒãã«ãã衚瀺ããããã«
less
ã䜿çšãããã®ãäžæè°ã§ã¯ãããŸãããïŒ
æš©å©
ãæš©å©ãã®ã»ããã¯ãä»»æã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªã«é¢é£ä»ããããŸãããã¡ã€ã«ãèªã¿åãæš©å©ããã¡ã€ã«ã«æžãèŸŒãæš©å©ããã¡ã€ã«ãå®è¡ããæš©å©ã ãã¹ãŠã®ãŠãŒã¶ãŒã¯ããã¡ã€ã«ææè
ããã¡ã€ã«ææè
ã°ã«ãŒãããã®ä»ãã¹ãŠã®ãŠãŒã¶ãŒã®3ã€ã®ã«ããŽãªã«åé¡ãããŸãã
ls -l
ã䜿çšããŠãã¡ã€ã«èš±å¯ã衚瀺ã§ããŸãã äŸïŒ
> ls -l Makefile -rw-r
ãã®çµè«ã¯ãææè
ïŒakiraïŒããã¡ã€ã«ã®èªã¿åããšæžã蟌ã¿ãè¡ããã°ã«ãŒãïŒçåŸïŒãèªã¿åãã®ã¿ãè¡ããæ®ãã®ãŠãŒã¶ãŒãèªã¿åããè¡ããããšãæå³ããŸãã
è·å Žã§
permission denied
ãšããã¡ãã»ãŒãžãåãåã£ãå Žåãããã¯ããªããåããããšæãæ£ãããªããžã§ã¯ããæã£ãŠããªãããšãæå³ããŸãã
詳ããã¯
man chmod
ãã芧ãã ããã
STDINãSTDOUTãã³ã³ãã¢ïŒãã€ãïŒ
åæšæºããã°ã©ã ã¯ã
STDIN
å
¥åããŒã¿ã¹ããªãŒã ã
STDOUT
åºåããŒã¿ã¹ããªãŒã ã
STDERR
ãšã©ãŒåºåã¹ããªãŒã ã®3ã€ã®æšæºããŒã¿ã¹ããªãŒã ã«é¢é£ä»ããããŠããŸãã
wc
ããã°ã©ã ãå®è¡ããããã¹ã
Good day today
ãå
¥åããŠEnterãæŒããããã¹ã
good day
ãå
¥åããŠEnterãæŒããCtrl + dãæŒããŸãã
wc
ããã°ã©ã ã¯ãããã¹ãããã³æ«å°Ÿã®æåãåèªãè¡ã®æ°ã«é¢ããçµ±èšã衚瀺ããŸãã
> wc good day today good day 2 5 24
ãã®å Žåã2è¡ã®ããã¹ãã
STDIN
ããã°ã©ã ã«éä¿¡ãã
STDOUT
3ã€ã®æ°å€ãåãåããŸããã
ã³ãã³ã
head -n3 /etc/passwd
å®è¡ãããšã次ã®ããã«ãªããŸãã
> head -n3 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin
ãã®å Žåã
head
ããã°ã©ã ã¯
STDIN
ããäœãèªã¿åããã
STDOUT
3è¡æžã蟌ã¿ãŸããã
ãã®ããã«æ³å
STDOUT
ãŸããããã°ã©ã ã¯ã
STDIN
æµå
¥ãããã€ãã§ããã
STDOUT
ç¶ããŸãã
Unixã³ãã³ãã©ã€ã³ã®æãéèŠãªç¹æ§ã¯ããã€ãããã°ã©ã ãçžäºæ¥ç¶ã§ããããšã§ããããããã°ã©ã ã®åºåïŒ
STDOUT
ïŒãå
¥åïŒ
STDIN
ïŒãšããŠå¥ã®ããã°ã©ã ã«è»¢éã§ããŸãã
æ¥ç¶ãããããã°ã©ã ã®ãã®èšèšã¯ãè±èªã®ãã€ãïŒãã€ãïŒããã·ã¢èª-ã³ã³ãã¢ãŸãã¯ãã€ãã§åŒã³åºãããŸãã
ããã°ã©ã ããã€ãã©ã€ã³ã«çµåããæ¹æ³ã¯æ¬¡ã®ãšããã§ã
|
ïŒçžŠæ£ïŒ
ã³ãã³ã
head -n3 /etc/passwd |wc
ãå®è¡ãããšã次ã®ãããª
head -n3 /etc/passwd |wc
ãŸãã
> head -n3 /etc/passwd |wc 3 3 117
head
ããã°ã©ã
STDOUT
3è¡ã®ããã¹ãã
STDOUT
ã«
STDOUT
ãããã«
wc
ããã°ã©ã ã®å
¥åã«ç§»åããçµæã®ããã¹ãã®æåãåèªãè¡ã®æ°ãæ°ããŸããã
å¿
èŠãªæ°ã®ããã°ã©ã ããã€ãã©ã€ã³ã«çµåã§ããŸãã ããšãã°ãåã®ãã€ãã©ã€ã³ã«å¥ã®
wc
ããã°ã©ã ã远å ãããšãæåã®
wc
åºåã«å«ãŸããŠããåèªãšæåã®æ°ãã«ãŠã³ãã§ããŸãã
> head -n3 /etc/passwd |wc |wc 1 3 24
ã³ãã³ãã©ã€ã³ã§äœæ¥ããå Žåããã€ãã©ã€ã³ã®ã³ã³ãã€ã«ã¯éåžžã«äžè¬çãªããšã§ãã ãããå®éã«ã©ã®ããã«è¡ããããã®äŸã«ã€ããŠã¯ããåäžã©ã€ã³ã³ã³ãã€ã®ã³ã³ãã€ã«ãã»ã¯ã·ã§ã³ããèªã¿ãã ããã
I / Oãªãã€ã¬ã¯ã
ããã°ã©ã ã®åºåïŒ
STDOUT
ïŒã¯ããã€ãã©ã€ã³ãä»ããŠå¥ã®ããã°ã©ã ã«è»¢éã§ããã ãã§ãªããåã«ãã¡ã€ã«ã«æžã蟌ãããšãã§ããŸãã ãã®ãªãã€ã¬ã¯ãã¯ã
>
ïŒã詳现ãèšå·ïŒã䜿çšããŠè¡ãããŸãã
date > /tmp/today.txt
ãã®ã³ãã³ãã®çµæããã¡ã€ã«
/tmp/today.txt
ããã£ã¹ã¯ã«è¡šç€ºãããŸãã
cat /tmp/today.txt
ãã®å
容ã衚瀺ããŸã
åãååã®ãã¡ã€ã«ãæ¢ã«ååšããå Žåããã®å€ãå
容ã¯ç Žæ£ãããŸãã ãã¡ã€ã«ãååšããªãã£ãå ŽåãäœæãããŸãã ã³ãã³ããå®è¡ãããåã«ããã¡ã€ã«ãäœæããããã£ã¬ã¯ããªãååšããå¿
èŠããããŸãã
ãã¡ã€ã«ãäžæžãããããªãããæåŸã«åºåã远å ããå Žåã¯ã
>>
䜿çšã
>>
ã
date >> /tmp/today.txt
ãã¡ã€ã«ã«çŸåšæžã蟌ãŸããŠããå
容ã確èªããŠãã ããã
ããã«ãããã°ã©ã ã¯
STDIN
代ããã«ä»»æã®ãã¡ã€ã«ã転éã§ã
STDIN
ã 詊ããŠãã ããïŒ
wc </etc/passwd
äžæãªå Žåã®å¯ŸåŠæ¹æ³
çè§£ã§ããªãã·ã¹ãã åäœããŸãã¯ç¹å®ã®çµæãéæããããæ¹æ³ãããããªãå Žåã¯ã次ã®é åºã§è¡åããããšããå§ãããŸãïŒã¡ãªã¿ã«ãããã¯ã·ã§ã«ã ãã§ãªãïŒïŒ
- å¯èœãªéãæç¢ºã«è³ªåãŸãã¯èª²é¡ãçå®ããŸã-ããããç§ã¯äœãç¥ããªããã解決ããããšãããè€éãªããšã¯ãããŸããã
- åããŸãã¯åæ§ã®åé¡ã«æ¢ã«çŽé¢ããŠããå Žåã¯èŠããŠãããŠãã ãã-ãã®å Žåãååæ©èœãããœãªã¥ãŒã·ã§ã³ã詊ã䟡å€ããããŸãã
- é©åãªãã³ãèªãã§ãã ããïŒããªãã®ã±ãŒã¹ã«é©ãããã³ãããã£ãŠããå ŽåïŒ-ã³ãã³ããå¿
èŠãªãªãã·ã§ã³ããŸãã¯ä»ã®ã³ãã³ããžã®ãªã³ã¯ã䜿çšããé©åãªäŸãèŠã€ããããšãã§ããŸãã
- æãïŒã¿ã¹ã¯ãå°ã倿Žããããšã¯å¯èœã§ããïŒ -ãããããæ¡ä»¶ãå°ã倿Žããããšã§ãè§£æ±ºæ¹æ³ããã§ã«ç¥ã£ãŠããã¿ã¹ã¯ãååŸã§ããŸãã
- æ€çŽ¢ãšã³ãžã³ã§æç¢ºã«å®åŒåããã質åãããŸããããããçãã¯Stack OverflowãŸãã¯ä»ã®ãµã€ãã§èŠã€ããããšãã§ããŸãã
äžèšã®ãããã圹ã«ç«ããªãå Žåã¯ãæåž«ãçµéšè±å¯ãªååããŸãã¯å人ã®ã¢ããã€ã¹ãæ±ããŠãã ããã ãããŠããæããªã質åãããããšãæããªãã§ãã ãã-ããã¯ç¥ããªãã®ã¯æ¥ã§ã¯ãããŸãããå°ããªãã®ã¯æ¥ã§ãã
é£ããåé¡ïŒã€ã³ã¿ãŒããããä»ã®äººã䜿ã£ãŠèªåã§ïŒãèŠã€ããå Žåã¯ãããªãã仲éãåã³åãåé¡ãæ±ããŠããå Žåã«åããŠè§£æ±ºçãæžãçããŠãã ããã Evernoteã§ç°¡åãªããã¹ããã¡ã€ã«ã«æžã蟌ã¿ããœãŒã·ã£ã«ãããã¯ãŒã¯ã§å
¬éã§ããŸãã
äœæ¥æ¹æ³
ã³ããŒã¢ã³ãããŒã¹ã -ãã³ãStackOverflowã®èšäºãªã©ãã³ãã³ãã©ã€ã³ã¯ããã¹ãã§æ§æãããããã䜿çšããŸããã³ãã³ãã®äŸãã³ããŒããŠäœ¿çšããæåããæ€çŽ¢çµæãã¡ã¢ãªã«æžã蟌ã¿ãTwitterããã³ããã°ã«å
¬éããŸãã
ç·ãèªãã§ãã ãã ã ããã¯èšã£ãã
å±¥æŽããåã®ã³ãã³ããåŒãåºããå¥ã®ã³ãã³ãããã€ãã©ã€ã³ã«è¿œå ããéå§ãç¹°ãè¿ããŸãã ãåäžã©ã€ã³ã³ã³ãã¢ã®ã³ã³ãã€ã«ãã»ã¯ã·ã§ã³ãåç
§ããŠãã ããã
åºæ¬ããŒã
- å¥ã®ãã£ã¬ã¯ããªã«ç§»åããŸãïŒ
cd
; - ãã¡ã€ã«ã®å
容ã®è¡šç€ºïŒ
t
ã less
ã head
ã tail
; - ãã¡ã€ã«æäœïŒ
cp
ã mv
ã rm
; - ãã£ã¬ã¯ããªã®å
容ã®è¡šç€ºïŒ
ls
ã ls -l
ã ls -lS
; - ãã£ã¬ã¯ããªæ§é ïŒ
tree
ã tree -d
ïŒãã©ã¡ãŒã¿ãšããŠãã£ã¬ã¯ããªãæž¡ãããšãã§ããŸãïŒ; - ãã¡ã€ã«æ€çŽ¢ïŒ
find . -name ...
find . -name ...
;
åæ
wc
ã wc -l
;sort -k
æå®ããããã£ãŒã«ãã§ãœãŒãããŸããsort -n
æ°å€åç
§ãdiff
ãã¡ã€ã«æ¯èŒ;grep
ã grep -v
ã grep -w
ã grep '\<word\>'
ã grep -E
ããã¹ããæ€çŽ¢ããŸããuniq
ã uniq -c
ã¹ããªã³ã°ã®äžæåãawk
ããªã¢ã³ãawk '{print $1}'
ã§ã¯ãåè¡ã®æåã®ãã£ãŒã«ãã®ã¿ãæ®ãããã«ã $1
ã$2
ã $3
ãªã©ã«å€æŽã§ããŸãã
ã·ã¹ãã 蚺æ
ps axuww
ãã·ã³ã§å®è¡ãããŠããããã»ã¹ïŒå®è¡äžã®ããã°ã©ã ïŒã«é¢ããæ
å ±ãtop
æããªãœãŒã¹ãæ¶è²»ããããã»ã¹ã®ã€ã³ã¿ã©ã¯ãã£ããªè¡šç€ºãdf
å æããã³ç©ºããã£ã¹ã¯å®¹éãdu
ãã£ã¬ã¯ããªå
ã®ãã¡ã€ã«ã®åèšãµã€ãºïŒååž°çã«ãµããã£ã¬ã¯ããªã䜿çšïŒ;strace
ã ktrace
ããã»ã¹ãå®è¡ããã·ã¹ãã ã®åŒã³åºããlsof
ããã»ã¹ã䜿çšãããã¡ã€ã«ãnetstat -na
ã netstat -nap
ã·ã¹ãã ã§éããŠããããŒããšãœã±ããã
äžéšã®ããã°ã©ã ããªãå Žåã远å ã§ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ããã«ããããã®ããã°ã©ã ã®äžéšã®ãªãã·ã§ã³ã¯ãç¹æš©ãŠãŒã¶ãŒïŒ
root
'yïŒã®ã¿ãå©çšã§ããŸãã
倧éããã³åèªåå®è¡
æåã«ãã®ã»ã¯ã·ã§ã³ãã¹ãããããŠãã ãããåçŽãªã·ã§ã«ã¹ã¯ãªãããäœæãããšãã«ããããã®ã³ãã³ããšæ§æãå¿
èŠã«ãªããŸãã
test
-æ¡ä»¶ã®ç¢ºèªãwhile read
- STDIN
è¡ãã«ãŒããSTDIN
ãxargs
- STDIN
ããæå®ãããããã°ã©ã ã®ãã©ã¡ãŒã¿ãŒãžã®è¡ã®çœ®æãseq
èªç¶æ°ã®ã·ãŒã±ã³ã¹ã®çæã()
-è€æ°ã®ã³ãã³ãã®åºåãçµã¿åãããŸãã;
-次ã
ã«å®è¡ããŸãã&&
-æåã®ããŒã ãæ£åžžã«å®äºããããšãæ¡ä»¶ã«å®è¡ããŸãã||
-æåã®ã³ãã³ããæ£åžžã«å®äºããªãã£ãå Žåã«å®è¡ããŸããtee
ããã°ã©ã åºåãSTDOUT
ããã³ãã£ã¹ã¯äžã®ãã¡ã€ã«ã«è€è£œãSTDOUT
ã
ãã®ä»
date
-çŸåšã®æ¥ä»ãcurl
æå®ãããURLã§ããã¥ã¡ã³ããããŠã³ããŒãããçµæãSTDOUT
æžã蟌ã¿STDOUT
ãtouch
ãã¡ã€ã«å€æŽæ¥ãæŽæ°ããŸããkill
ããã»ã¹ã«ã·ã°ãã«ãéä¿¡ããŸããtrue
äœããããtrueãè¿ããæ°žé ã®ãµã€ã¯ã«ãæŽçããã®ã«åœ¹ç«ã¡ãŸããsudo
- root
ãšããŠã³ãã³ããå®è¡ããŸãã
åäžã©ã€ã³ã³ã³ãã€ãŒã®äœæ
å®éã®ã¿ã¹ã¯ã®äŸãèŠãŠã¿ãŸããããçŸåšã®ãŠãŒã¶ãŒã®ä»£ããã«å®è¡ãããŠãããã¹ãŠã®
task-6-server
ããã»ã¹ã匷å¶çµäºããå¿
èŠããããŸãã
ã¹ããã1çŽç²ãªåœ¢åŒã§ãªããŠããã©ã®ããã°ã©ã ãã»ãŒå¿
èŠãªããŒã¿ãçæããããçè§£ããŸãã
ãã®ã¿ã¹ã¯ã§ã¯ãã·ã¹ãã å
ã®ãã¹ãŠã®ããã»ã¹ã®ãªã¹ã ps axuww
ååŸãã䟡å€ããããŸã ã å®è¡ããã
ã¹ããã2åä¿¡ããããŒã¿ãç®ã§èŠãŠãäžèŠãªããŒã¿ã®äžéšãé€å€ãããã£ã«ã¿ãŒãèãåºããŸãã å€ãã®å Žåãããã¯
grep
ãŸãã¯
grep -v
ã§ãã äžãã¿ã³ã䜿çšããŠãåã®ã³ãã³ããå±¥æŽããåŒãåºãããã£ã«ã¿ãŒãå²ãåœãŠãéå§ããŸãã
ps axuww |grep `whoami`
-çŸåšã®ãŠãŒã¶ãŒã®ããã»ã¹ã®ã¿ã
ã¹ããã3å¿
èŠãªã¯ãªãŒã³ããŒã¿ãåŸããããŸã§ãæé 2ãç¹°ãè¿ããŸãã
ps axuww |grep `whoami` | grep '\<task-6-server\>'
-ç®çã®ååãæã€ãã¹ãŠã®ããã»ã¹ïŒããã«ãvim task-6-server.cãªã©ã®ãããªäœåãªãã®ïŒã
ps axuww |grep `whoami` | grep '\<task-6-server\>' | grep -v vim ps axuww |grep `whoami` | grep '\<task-6-server\>' | grep -v vim |grep -v less
-ç®çã®ååã®ããã»ã¹ã®ã¿
ps axuww |grep `whoami` | grep '\<task-6-server\>' | grep -v vim |grep -v less |awk '{print $2}'
-å¿
èŠãªããã»ã¹ã®pid-sãé
ç®3ã¯å®äº
ã¹ããã4é©åãªæçµãã³ãã©ãŒãé©çšããŸãã UpããŒã䜿çšããŠãå±¥æŽããåã®ã³ãã³ããæœåºããåé¡ã®è§£æ±ºãå®äºããåŠçã远å ããŸãã
|wc -l
ããã»ã¹æ°ãã«ãŠã³ããã|wc -l
ã>pids
ã>pids
ããŠãã¡ã€ã«ã«>pids
ãæžã蟌ã¿ãŸãã|xargs kill -9
killããã»ã¹ã
ã¯ãŒã¯ã¢ãŠã
æ°ããã¹ãã«ãç·Žç¿ãããã§ããïŒ æ¬¡ã®ã¿ã¹ã¯ã詊ããŠãã ããã
- ããŒã ãã£ã¬ã¯ããªå
ã®ãã¹ãŠã®ãã¡ã€ã«ãšãã£ã¬ã¯ããªã®ãªã¹ããååŸããŸãã
- ã«ããŽãª2ïŒã·ã¹ãã ã³ãŒã«ïŒãããã¹ãŠã®
man
èšäºã®ãªã¹ããååŸããŸãã grep
ãçºçããåæ°ãã«ãŠã³ãããŸãã- çŸåš
root
ãšããŠå®è¡ãããŠããããã»ã¹ã®æ°ãã«ãŠã³ãããŸãã - ãã«ãã«ããŽãªã®æå€§æ°ïŒç·æ§ïŒã«è¡šç€ºãããããŒã ãèŠã€ããŸãã
- ya.ruããŒãžã«varãšããåèªãäœåçŸããããæ°ããŸãã
ãã³ãïŒ
find
ã
grep -o
ã
awk '{print $1}'
ã
grep
æ£èŠè¡šçŸã
curl -s
ã§ãã
ããã«å匷ãããã®ã¯ïŒ
ã³ãã³ãã©ã€ã³ãæ°ã«å
¥ã£ããããããªãã§ãã¹ãã«ã®åäžãç¶ããŠãã ããã
ã³ãã³ãã©ã€ã³ã«äœãã§ããå Žåã«ééããªã䟿å©ã«ãªãããã€ãã®ããã°ã©ã ã¯æ¬¡ã®ãšããã§ãã
awk
sed
- è€éãªãªãã·ã§ã³ã§
find
apropos
locate
telnet
netcat
tcpdump
rsync
screen
ssh
tar
zgrep
ã zless
visudo
crontab -e
sendmail
ããã«ãæéã®çµéãšãšãã«ã
perl
ã
python
ãªã©ãäœããã®ã¹ã¯ãªããèšèªããã¹ã¿ãŒãã䟡å€ããããŸãã
誰ããããå¿
èŠãšããŸããïŒ
仿¥ãã³ãã³ãã©ã€ã³ãšã·ã§ã«ã¹ã¯ãªãããå匷ãã䟡å€ã¯ãããŸããïŒ ééããªã䟡å€ããããŸãã FBã§ã®ä»äºã«å¿åãããåè£è
ã®ããã«ãFacebookã®èŠä»¶ããããã€ãã®äŸãæããŸãã
ããŒã¿ãµã€ãšã³ãã£ã¹ããçµæžèª¿æ» ïŒã³ãã³ãã©ã€ã³ãšUnixã³ã¢ããŒã«ã®äœ¿ããããã æãŸããïŒPythonãªã©ã®ã¹ã¯ãªããèšèªã®çé床ããŸãã¯ä»¥åã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®çµéšã
MySQLããŒã¿ããŒã¹ãšã³ãžã㢠ïŒã·ã§ã«ã¹ã¯ãªããïŒBashãAwkãªã©ïŒã®é«åºŠãªç¿ç床ã Linux管çã®é«åºŠãªèœåã
補é å質ãšã³ãžãã¢ããµãŒã㌠ïŒBashãPerlããŸãã¯Pythonã®ã¹ã¯ãªããäœæã¹ãã«ãæãŸããã
ããŒã¿ãã©ãããã©ãŒã ãšã³ãžã㢠ïŒUnix / Linuxã·ã¹ãã ã§ã®2幎ã®çµéšã
DevOpsãšã³ãžãã¢ãããŒã¿ ïŒUnix / Linuxã·ã¹ãã 管çããã³ããã°ã©ãã³ã°ã®2幎ã®çµéšã
ã質åã¯ïŒ
ãã®èšäºã«ã€ããŠããŸãã¯äžè¬çã«Unixã³ãã³ãã©ã€ã³ã§ã®äœæ¥ã«ã€ããŠè³ªåãããå Žåã¯ãã³ã¡ã³ããŸãã¯é»åã¡ãŒã«
liruoko (at) yandex (dot) ru
ã§è³ªåããŠãã ããã
䟿å©ã§è峿·±ããªã³ã¯
15ã®è峿·±ãLinuxã³ãã³ãUnixåå¿è
åãã®ãµãã€ãã«ã¬ã€ãè峿·±ãBashããã°ã©ãã³ã°ææ³ãªãªãžãã«ïŒ
15åã§ããè¯ãBashã¹ã¯ãªããbashã䜿çšããã·ã§ã«ããã°ã©ãã³ã°ïŒäŸãåäŸã³ã³ãœãŒã«ãŠãŒãã£ãªãã£ããã䟿å©ã«ããç°¡åãªæ¹æ³ã¯ããŒãºããœãŒã¹ã®ããã«ããã°ã©ã ããããã°ããŠãã ããïŒ