SlideShare a Scribd company logo
1 of 37
Download to read offline
Shell入門Shell入門
nasa9084nasa9084
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
1 / 37 2016年04月24日 15:22
自己紹介自己紹介
名前
北村壮大 : Masahiro Kitamura
HN : nasa9084
所属
北海道大学
工学部
情報エレクトロニクス学科
コンピュータサイエンスコース
情報認識学研究室
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
2 / 37 2016年04月24日 15:22
今回のお話今回のお話
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
3 / 37 2016年04月24日 15:22
Shell入門Shell入門
お題目
ヘルプの読み方
標準入出力について
リダイレクト
パイプ
ヒアドキュメントのご紹介
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
4 / 37 2016年04月24日 15:22
対象環境対象環境
bash を対象としています
(多分zsh等のbash系シェルでも大差はない内容)
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
5 / 37 2016年04月24日 15:22
注意注意
話を簡単にするため、複数箇所で「正しくはない」お話が含まれます
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
6 / 37 2016年04月24日 15:22
SHELLとはSHELLとは
ユーザのためにインタフェースを提供するソフトウェア
であり、カーネルのサービスへのアクセスを提供する。
→UNIXの文脈ではコマンドインタプリタのこと
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
7 / 37 2016年04月24日 15:22
SHELLのご紹介超簡易版SHELLのご紹介超簡易版
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
8 / 37 2016年04月24日 15:22
最初のSHELL - sh最初のSHELL - sh
ケン・トンプソンという人が開発した
非常にシンプルなコマンドラインインタプリタ
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
9 / 37 2016年04月24日 15:22
Bourne ShellBourne Shell
多くのUNIX系システムでのデフォルトシェル
/bin/shは大体Bourne Shellかその互換プログラムへのリンク
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
10 / 37 2016年04月24日 15:22
Bourne Again Shell(Bash)Bourne Again Shell(Bash)
GNUプロジェクト用Shell
非常に高機能だがやや遅い
一部システムでは/bin/shの実態がコレ
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
11 / 37 2016年04月24日 15:22
Z Shell(zsh)Z Shell(zsh)
最も多機能なShell
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
12 / 37 2016年04月24日 15:22
tcshtcsh
C言語風のShell
国際化対応がメチャはやだった
FreeBSDでは現在標準Shell
Mac OS Xでは10.2まで標準→10.3からはbashが標準
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
13 / 37 2016年04月24日 15:22
「端末」ということば「端末」ということば
Shellのお話をするとき、「端末」「ターミナル」といったら
→Shellを動かすソフトウェアのこと
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
14 / 37 2016年04月24日 15:22
HELPHELP
Helpの読み方のお話(要約)
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
15 / 37 2016年04月24日 15:22
I. [] → なくてもいいI. [] → なくてもいい
[]で囲まれているものはオプション
→必要な場合だけ書く
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
16 / 37 2016年04月24日 15:22
II. … → 繰り返せるII. … → 繰り返せる
直前のものを複数回書いても良い
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
17 / 37 2016年04月24日 15:22
III. オプションはまとめて指定できる時があるIII. オプションはまとめて指定できる時がある
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
18 / 37 2016年04月24日 15:22
exampleexample
calコマンドを例に
cal [-13nsmjyYwhV] [[[DAY] MONTH] YEAR]
13nsmjyYwhVというオプションがある
この内必要なものを選べる
-1mや-3sjといった指定が可能
普通は-1 -mや-3 -s -jといった感じ
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
19 / 37 2016年04月24日 15:22
標準ストリーム標準ストリーム
プログラムから見た、データの入出力の流れや入出力先のこと
UNIX系OSでは普通3つ
標準入力
標準出力
標準エラー出力
水道管のようなもの
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
20 / 37 2016年04月24日 15:22
ファイル記述子(File Descripter:FD)ファイル記述子(File Descripter:FD)
プログラムがアクセスするファイルや
標準入出力をOSが識別するための番号
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
21 / 37 2016年04月24日 15:22
0. 標準入力(Standard Input:stdin)0. 標準入力(Standard Input:stdin)
いわゆる普通の入力。
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
22 / 37 2016年04月24日 15:22
1. 標準出力(Standard Output:stdout)1. 標準出力(Standard Output:stdout)
いわゆる普通の出力。
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
23 / 37 2016年04月24日 15:22
2. 標準エラー出力(Standard Error:stderr)2. 標準エラー出力(Standard Error:stderr)
エラー関係を出力する部分。
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
24 / 37 2016年04月24日 15:22
リダイレクトリダイレクト
標準入出力をファイルに接続する
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
25 / 37 2016年04月24日 15:22
<<
CMD n< FILE
標準入力をファイルに接続する
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
26 / 37 2016年04月24日 15:22
n>n>
CMD > FILE
CMDの標準出力をFILEに接続する
FILEの内容はCMDの出力内容で上書き保存される
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
27 / 37 2016年04月24日 15:22
n>>n>>
CMD >> FILE
CMDの標準出力をFILEの末尾に書き足す
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
28 / 37 2016年04月24日 15:22
パイプパイプ
標準出力を次のコマンドの標準入力に接続する
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
29 / 37 2016年04月24日 15:22
イメージ図で考えてみるイメージ図で考えてみる
ココまでの内容を図にして
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
30 / 37 2016年04月24日 15:22
デフォルトデフォルト
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
31 / 37 2016年04月24日 15:22
リダイレクトリダイレクト
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
32 / 37 2016年04月24日 15:22
入力入力
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
33 / 37 2016年04月24日 15:22
出力出力
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
34 / 37 2016年04月24日 15:22
パイプパイプ
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
35 / 37 2016年04月24日 15:22
ヒアドキュメントヒアドキュメント
プログラム中に 複数行の 文字列を埋め込む方法 (もちろん一行でも)
$ cat <<EOF
hogehoge
EOF
hogehoge
$
<<のあとに指定し行があるまで文字列だとみなす
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
36 / 37 2016年04月24日 15:22
まとめまとめ
SHELLにはいろいろある
bash, zsh, tcsh, etc…
ヘルプには決まった書き方がある
その読み方を覚えればカンタン
UNIXコマンドは普通入力が1つ出力が2つ
IN
標準入力
OUT
標準出力、標準エラー出力
リダイレクト、パイプはコマンドの標準入出力の繋ぎかえ
ヒアドキュメントっていう複数行入力する技(?)がある
Shell入門 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#6/...
37 / 37 2016年04月24日 15:22

More Related Content

Similar to Shell入門

Flowchart w/program structure
Flowchart w/program structureFlowchart w/program structure
Flowchart w/program structurenasa9084
 
20211002 stm32 cube halとtoppes
20211002 stm32 cube halとtoppes20211002 stm32 cube halとtoppes
20211002 stm32 cube halとtoppesSeiichi Horie
 
CH340を炙って削ってみた
CH340を炙って削ってみたCH340を炙って削ってみた
CH340を炙って削ってみたJunichi Akita
 
Introduction of Programming language
Introduction of Programming languageIntroduction of Programming language
Introduction of Programming languagenasa9084
 
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528Atomu Hidaka
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016 slankdev
 

Similar to Shell入門 (10)

Flowchart w/program structure
Flowchart w/program structureFlowchart w/program structure
Flowchart w/program structure
 
20211002 stm32 cube halとtoppes
20211002 stm32 cube halとtoppes20211002 stm32 cube halとtoppes
20211002 stm32 cube halとtoppes
 
CH340を炙って削ってみた
CH340を炙って削ってみたCH340を炙って削ってみた
CH340を炙って削ってみた
 
Introduction of Programming language
Introduction of Programming languageIntroduction of Programming language
Introduction of Programming language
 
PYNQ祭り
PYNQ祭りPYNQ祭り
PYNQ祭り
 
Let’s Encrypt更新話
Let’s Encrypt更新話Let’s Encrypt更新話
Let’s Encrypt更新話
 
Hacking Vox and Plagger
Hacking Vox and PlaggerHacking Vox and Plagger
Hacking Vox and Plagger
 
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016
 
Pulsar Handson 20180226
Pulsar Handson 20180226Pulsar Handson 20180226
Pulsar Handson 20180226
 

More from nasa9084

Webエンジニアのためのはじめてのredis.pdf
Webエンジニアのためのはじめてのredis.pdfWebエンジニアのためのはじめてのredis.pdf
Webエンジニアのためのはじめてのredis.pdfnasa9084
 
Webエンジニアのためのはじめてのredis
WebエンジニアのためのはじめてのredisWebエンジニアのためのはじめてのredis
Webエンジニアのためのはじめてのredisnasa9084
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredisnasa9084
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめるnasa9084
 
Web Environments
Web EnvironmentsWeb Environments
Web Environmentsnasa9084
 
Efsta student session
Efsta student sessionEfsta student session
Efsta student sessionnasa9084
 
初めてのSQL
初めてのSQL初めてのSQL
初めてのSQLnasa9084
 
DIVE INTO /regexp?/
DIVE INTO /regexp?/DIVE INTO /regexp?/
DIVE INTO /regexp?/nasa9084
 
HTTPのお話
HTTPのお話HTTPのお話
HTTPのお話nasa9084
 
Linuxディストリビューションのお話
Linuxディストリビューションのお話Linuxディストリビューションのお話
Linuxディストリビューションのお話nasa9084
 

More from nasa9084 (11)

Webエンジニアのためのはじめてのredis.pdf
Webエンジニアのためのはじめてのredis.pdfWebエンジニアのためのはじめてのredis.pdf
Webエンジニアのためのはじめてのredis.pdf
 
Webエンジニアのためのはじめてのredis
WebエンジニアのためのはじめてのredisWebエンジニアのためのはじめてのredis
Webエンジニアのためのはじめてのredis
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめる
 
Web Environments
Web EnvironmentsWeb Environments
Web Environments
 
Efsta student session
Efsta student sessionEfsta student session
Efsta student session
 
LT!
LT!LT!
LT!
 
初めてのSQL
初めてのSQL初めてのSQL
初めてのSQL
 
DIVE INTO /regexp?/
DIVE INTO /regexp?/DIVE INTO /regexp?/
DIVE INTO /regexp?/
 
HTTPのお話
HTTPのお話HTTPのお話
HTTPのお話
 
Linuxディストリビューションのお話
Linuxディストリビューションのお話Linuxディストリビューションのお話
Linuxディストリビューションのお話
 

Shell入門