Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linux Introduction (for Raspberry Pi Course)
Search
Tzu-ping Chung
August 19, 2015
Programming
0
220
Linux Introduction (for Raspberry Pi Course)
Tzu-ping Chung
August 19, 2015
Tweet
Share
More Decks by Tzu-ping Chung
See All by Tzu-ping Chung
Datasets: What it is, and how it was made
uranusjr
0
140
Let’s fix extras in Core Metadata 3.0
uranusjr
0
550
Python Packaging: Why Don’t You Just…?
uranusjr
1
230
這樣的開發環境沒問題嗎?
uranusjr
9
2.6k
Django After Web 2.0
uranusjr
3
2.1k
We Store Cheese in A Warehouse
uranusjr
1
460
The Python You Don’t Know
uranusjr
17
3.1k
Python and Asynchrony
uranusjr
0
380
Graphics on Raspberry Pi with Qt 5
uranusjr
0
96k
Other Decks in Programming
See All in Programming
抽象データ型について学んだ
ryounasso
0
210
Efficiency and Rock 'n’ Roll (Really!)
hollycummins
0
600
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
0
240
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
920
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
540
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
guvalif
1
240
TSConfig Solution Style & subpath imports to switch types on a per-file basis
maminami373
1
180
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
1.6k
複数アプリケーションを育てていくための共通化戦略
irof
5
2.1k
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
250
DevTalks 25 - Create your own AI-infused Java apps with ease
kdubois
2
130
AI Coding Agent Enablement in TypeScript
yukukotani
17
7.3k
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Fireside Chat
paigeccino
37
3.5k
Faster Mobile Websites
deanohume
307
31k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
How STYLIGHT went responsive
nonsquared
100
5.6k
Code Review Best Practice
trishagee
68
18k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.6k
Transcript
speakerdeck.com/ uranusjr
Agenda • Introduction • The shell • Git • Linux
topics • Writing code • Python basics • Python in shell • Extensions
Introduction to Linux
None
Me • Call me TP • https://uranusjr.com • Python, C++,
OS X, iOS, Web • Tutorials and courses • Speaker • Django Girls Taipei
Quick Polls • Something “not Windows” • Command line interface
• Plain text editors • Programming
None
None
Prompt
pi@raspberrypi:~$
pi@raspberrypi:~$ ⢪欽罏
pi@raspberrypi:~$ ⚺堣せ珕
pi@raspberrypi:~$ 騟䖜
Shell • Core — Shell — User • Command line
interface • Bash (Bourne-Again Shell)
$ pwd /home/pi
$ mkdir bedroom
$ ls bedroom Desktop
$ touch table
$ ls bedroom Desktop table
$ cd bedroom $ pwd 剙곎爙➊랁
$ mkdir closet
銲䙥랁鹌Ⰵ closet
$ cd closet
$ cd ../.. 植㖈➂㖈ㆬ酬♶銲⡲䒦
穩㼨騟䖜 /home/pi/bedroom/closet 湱㼨騟䖜 bedroom/closet
.. = 㢩
現在位置(.) /home/pi/bedroom/closet 外面兩層(../..) /home/pi
$ cd ~ $ cp -‐r bedroom guest-‐room
$ ls 剙⳿植➊랁
$ cd guest-‐room 酬僽やㄤ bedroom ♧垺剣♧ ⦐ closet銲䙥랁墝叆
拷貝一樣東西 cp something 拷貝一樣東西,以及裡面的所有東西 cp -r something
拷貝一樣東西 cp something 拷貝一樣東西,以及裡面的所有東西 cp -r something
չ侶պ䧴չ䒷侶պ
$ man cp ... -‐R, -‐r, -‐-‐recursive
copy directories recursively
$ cd .. 鸍垺剙ⵋㆬ酬
$ mv guest-‐room living-‐room $ ls 剙⳿植➊랁
$ mv living-‐room/closet bedroom/closet2 鸍⦐䭷⟀⨞✪➊랁✲䞔
$ rm ~/table $ rm -‐r ~/bedroom $
rm -‐r ~/living-‐room 敮嫅։
The File System • The root directory • Other partitions
are “mounted” • Things have their places • Names are case-sensitive
/ ├── bin ├── dev ├── etc ├── home │
└── pi ├── lib ├── media ├── opt ├── root ├── tmp ├── usr └── var
Permissions • Essential for Un*x systems • Owner, group, others
• Read, write, execute
$ groups pi adm dialout cdrom sudo audio
video plugdev games users netdev gpio i2c spi input
$ groups pi pi : pi adm dialout cdrom
sudo audio video plugdev games users netdev input spi i2c gpio
$ 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
奚ꣳ垦硹 䠑纏 r 隡《 w 㻨Ⰵ x 㛂遤鹎Ⰵ湡ꏗ s ⟃暶㹁魨⟨㛂遤
t ⫦乩剤罏〳ⵅꤑ荈䊹涸墂呪
奚ꣳ垦硹 䠑纏 r 隡《 w 㻨Ⰵ x 㛂遤鹎Ⰵ湡ꏗ s ⟃暶㹁魨⟨㛂遤
t ⫦乩剤罏〳ⵅꤑ荈䊹涸墂呪
$ 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
The Superuser • “root” • Can do anything • Log-in
disabled by default
/ ├── bin ├── dev ├── etc ├── home │
└── pi ├── lib ├── media ├── opt ├── root ├── tmp ├── usr └── var Superuser’s home directory!
sudo • “superuser do” • Run a command as superuser
• Requires the sudo group
$ groups pi pi : pi adm dialout cdrom
sudo audio video plugdev games users netdev input spi i2c gpio
$ whoami pi $ sudo whoami root
Package Manager • APT = Advance package Tool • apt-get
• apt-cache
$ sudo apt-‐get update $ sudo apt-‐get install git
Git Basics
None
None
$ 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
$ python led.py
HJUDMPOF 䭡頺♧⦐(JU墂呪䏨 HJUBEE墂呪 䪾墂呪⸈Ⰵ墂呪䏨 HJUBEE〳⟃♧妄⸈Ⰵ鿈墂呪 HJUDPNNJUN鏽鎹 ⸈Ⰵ♧⦐晝劥 HJUTUBUVT 叆溏湡涸墂呪䏨朜䢀 HJUEJ
叆溏湡墂呪䏨ㄤ♳⦐晝劥⛓涸䊴殯 HJUMPH 叆溏晝劥鎹ꏗ HJUQVTI 㼟劥㖒墂呪䏨♳⫄荛黇畮 HJUQVMM 刿倞劥㖒Ⰹ㺂
How a Linux OS Boots
Boot Sequence • Load the kernel (details omitted) • Prepare
the system • Start services • Run custom startup hooks • User log in
Boot Sequence • Load the kernel (details omitted) • Prepare
the system • Start services • Run custom startup hooks • User log in
Run Levels ꡠ堥 ㋲➃笞隌垸䒭 搂/'4㢵➃垸䒭 㸤侮㢵➃垸䒭
⥃殆 㕮䕎➝ ꅾ堥
$ 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
$ 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
raspberrypi login:
$ ls -‐A ~ .bashrc .bash_logout
.bash_profile .profile $ ls -‐d /etc/profile* /etc/profile /etc/profile.d
Summary • Startup • Run levels • Single-user and multi-user
mode • Login shells and non-login shells
$ nano
None
^R ➿邌 Control
倰ぢ꒳ 獵⹛康垦 1H6Q 1H%O )PNF &OE 獵⹛康垦 ^O 㶸墂 ^R
㉬墂呪 ^X 鷎ⴀ剚鑉㉏僽や⮭㶸墂呪 ^W 䵃㼦 ^K 䭡頺♧遤俒㶶 ^U 顦♳⛓䭡頺涸俒㶶
Demo
Error writing /etc/hosts: Permission denied
Demo
Try it!
$ cd ~ $ git clone https://github.com/serialhex/ nano-‐highlight.git .nano
$ nano .nanorc
include "~/.nano/python.nanorc" set tabsize 4 set tabstospaces