Linux Introduction (for Raspberry Pi Course)

Linux Introduction (for Raspberry Pi Course)

9dafad54b5b4f360b7aae5f482bc1c91?s=128

Tzu-ping Chung

August 19, 2015
Tweet

Transcript

  1. speakerdeck.com/ uranusjr

  2. Agenda • Introduction • The shell • Git • Linux

    topics • Writing code • Python basics • Python in shell • Extensions
  3. Introduction to Linux

  4. None
  5. Me • Call me TP • https://uranusjr.com • Python, C++,

    OS X, iOS, Web • Tutorials and courses • Speaker • Django Girls Taipei

  6. Quick Polls • Something “not Windows” • Command line interface

    • Plain text editors • Programming
  7. None
  8. None
  9. Prompt

  10. pi@raspberrypi:~$

  11. pi@raspberrypi:~$ ⢪欽罏

  12. pi@raspberrypi:~$ ⚺堣せ珕

  13. pi@raspberrypi:~$ 騟䖜

  14. Shell • Core — Shell — User • Command line

    interface • Bash (Bourne-Again Shell)
  15. $  pwd   /home/pi

  16. $  mkdir  bedroom  

  17. $  ls   bedroom    Desktop

  18. $  touch  table  

  19. $  ls   bedroom    Desktop    table

  20. $  cd  bedroom   $  pwd   剙곎爙➊랁

  21. $  mkdir  closet  

  22. 銲䙥랁鹌Ⰵ  closet

  23. $  cd  closet  

  24. $  cd  ../..   植㖈➂㖈ㆬ酬♶銲⡲䒦

  25. 穩㼨騟䖜   /home/pi/bedroom/closet   湱㼨騟䖜   bedroom/closet

  26. ..  =  㢩꬗

  27. 現在位置(.)   /home/pi/bedroom/closet   外面兩層(../..)   /home/pi

  28. $  cd  ~   $  cp  -­‐r  bedroom  guest-­‐room  

    $  ls   剙⳿植➊랁
  29. $  cd  guest-­‐room   酬꬗僽やㄤ  bedroom  ♧垺剣♧ ⦐  closet銲䙥랁墝叆

  30. 拷貝一樣東西   cp  something   拷貝一樣東西,以及裡面的所有東西   cp  -r  something

  31. 拷貝一樣東西   cp  something   拷貝一樣東西,以及裡面的所有東西   cp  -r  something

    չ⿭侶պ䧴չ䒷侶պ
  32. $  man  cp   ...   -­‐R,  -­‐r,  -­‐-­‐recursive  

           copy  directories  recursively
  33. $  cd  ..   鸍垺剙ⵋㆬ酬

  34. $  mv  guest-­‐room  living-­‐room   $  ls   剙⳿植➊랁

  35. $  mv  living-­‐room/closet  bedroom/closet2   鸍⦐䭷⟀⨞✪➊랁✲䞔

  36. $  rm  ~/table   $  rm  -­‐r  ~/bedroom   $

     rm  -­‐r  ~/living-­‐room   敮嫅։
  37. The File System • The root directory • Other partitions

    are “mounted” • Things have their places • Names are case-sensitive
  38. / ├── bin ├── dev ├── etc ├── home │

    └── pi ├── lib ├── media ├── opt ├── root ├── tmp ├── usr └── var
  39. Permissions • Essential for Un*x systems • Owner, group, others

    • Read, write, execute
  40. $  groups   pi  adm  dialout  cdrom  sudo  audio  

    video  plugdev  games  users  netdev   gpio  i2c  spi  input
  41. $  groups  pi   pi  :  pi  adm  dialout  cdrom

     sudo   audio  video  plugdev  games  users   netdev  input  spi  i2c  gpio
  42. $  cd  /var   $  ls  -­‐l   total  102436

      drwxr-­‐xr-­‐x  8  root  root    Aug  16  05:17  log   drwxrwsr-­‐x  2  root  mail    May    6  22:12  mail   -­‐rw-­‐-­‐-­‐-­‐-­‐-­‐-­‐  1  root  root    May    6  23:29  swap   drwxrwxrwt  2  root  root    Jan  11    2015  tmp
  43. 奚ꣳ垦硹 䠑纏 r 隡《 w 㻨Ⰵ x 㛂遤鹎Ⰵ湡ꏗ s ⟃暶㹁魨⟨㛂遤

    t ⫦乩剤罏〳ⵅꤑ荈䊹涸墂呪
  44. 奚ꣳ垦硹 䠑纏 r 隡《 w 㻨Ⰵ x 㛂遤鹎Ⰵ湡ꏗ s ⟃暶㹁魨⟨㛂遤

    t ⫦乩剤罏〳ⵅꤑ荈䊹涸墂呪
  45. $  cd  /var   $  ls  -­‐l   total  102436

      drwxr-­‐xr-­‐x  8  root  root    Aug  16  05:17  log   drwxrwsr-­‐x  2  root  mail    May    6  22:12  mail   -­‐rw-­‐-­‐-­‐-­‐-­‐-­‐-­‐  1  root  root    May    6  23:29  swap   drwxrwxrwt  2  root  root    Jan  11    2015  tmp
  46. The Superuser • “root” • Can do anything • Log-in

    disabled by default
  47. / ├── bin ├── dev ├── etc ├── home │

    └── pi ├── lib ├── media ├── opt ├── root ├── tmp ├── usr └── var Superuser’s home directory!
  48. sudo • “superuser do” • Run a command as superuser

    • Requires the sudo group
  49. $  groups  pi   pi  :  pi  adm  dialout  cdrom

     sudo   audio  video  plugdev  games  users   netdev  input  spi  i2c  gpio
  50. $  whoami   pi   $  sudo  whoami   root

  51. Package Manager • APT = Advance package Tool • apt-get

    • apt-cache
  52. $  sudo  apt-­‐get  update   $  sudo  apt-­‐get  install  git

  53. Git Basics

  54. None
  55. None
  56. $  cd  ~   $  git  clone  https://github.com/raspberrypi-­‐ tw/workshop.git  

    $  cd  workshop/gpio-­‐tutorial-­‐03/02_2-­‐ led_blink/led_blink.py   $  ls   led.py
  57. $  python  led.py

  58. HJUDMPOF 䭡頺♧⦐(JU墂呪䏨 HJUBEE墂呪 䪾墂呪⸈Ⰵ墂呪䏨 HJUBEE〳⟃♧妄⸈Ⰵ鿈墂呪 HJUDPNNJUN鏽鎹 ⸈Ⰵ♧⦐晝劥 HJUTUBUVT 叆溏湡⵹涸墂呪䏨朜䢀 HJUEJ

    叆溏湡⵹墂呪䏨ㄤ♳⦐晝劥⛓꟦涸䊴殯 HJUMPH 叆溏晝劥鎹ꏗ HJUQVTI 㼟劥㖒墂呪䏨♳⫄荛黇畮 HJUQVMM 刿倞劥㖒Ⰹ㺂
  59. How a Linux OS Boots

  60. Boot Sequence • Load the kernel (details omitted) • Prepare

    the system • Start services • Run custom startup hooks • User log in
  61. Boot Sequence • Load the kernel (details omitted) • Prepare

    the system • Start services • Run custom startup hooks • User log in
  62. Run Levels  ꡠ堥  ㋲➃笞隌垸䒭  搂/'4㢵➃垸䒭  㸤侮㢵➃垸䒭

     ⥃殆  㕮䕎➝꬗  ꅾꟚ堥
  63. $  ls  -­‐d  /etc/rc*   /etc/rc0.d    /etc/rc1.d    /etc/rc2.d

      /etc/rc3.d    /etc/rc4.d    /etc/rc5.d   /etc/rc6.d    /etc/rc.local    /etc/rcS.d
  64. $  ls  -­‐d  /etc/rc*   /etc/rc0.d    /etc/rc1.d    /etc/rc2.d

      /etc/rc3.d    /etc/rc4.d    /etc/rc5.d   /etc/rc6.d    /etc/rc.local    /etc/rcS.d
  65. raspberrypi  login:

  66. $  ls  -­‐A  ~   .bashrc      .bash_logout  

       .bash_profile   .profile   $  ls  -­‐d  /etc/profile*     /etc/profile    /etc/profile.d
  67. Summary • Startup • Run levels • Single-user and multi-user

    mode • Login shells and non-login shells
  68. $  nano

  69. None
  70. ^R ➿邌 Control

  71. 倰ぢ꒳ 獵⹛康垦 1H6Q 1H%O )PNF &OE 獵⹛康垦 ^O 㶸墂 ^R

    Ꟛ㉬墂呪 ^X 鷎ⴀ剚鑉㉏僽や⮭㶸墂呪 ^W 䵃㼦 ^K 䭡頺♧遤俒㶶 ^U 顦♳⛓⵹䭡頺涸俒㶶
  72. Demo

  73. Error  writing  /etc/hosts:  Permission  denied

  74. Demo

  75. Try it!

  76. $  cd  ~   $  git  clone  https://github.com/serialhex/ nano-­‐highlight.git  .nano

      $  nano  .nanorc
  77. include  "~/.nano/python.nanorc"   set  tabsize  4   set  tabstospaces