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
第2回 GNU/Linux勉強会
Search
Hiroto Sasagawa
July 09, 2023
Programming
0
460
第2回 GNU/Linux勉強会
Hiroto Sasagawa
July 09, 2023
Tweet
Share
More Decks by Hiroto Sasagawa
See All by Hiroto Sasagawa
IP Anycastとリバースプロキシ
nagutabby
0
450
HSTSについて調べた
nagutabby
0
410
第1回 AWS勉強会
nagutabby
0
580
第1回 GNU/Linux勉強会
nagutabby
0
540
第3回 GNU/Linux勉強会
nagutabby
0
520
DNSを標的とする攻撃
nagutabby
0
470
EC2とCloudWatchで始める高対話型ハニーポット運用
nagutabby
0
590
Other Decks in Programming
See All in Programming
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6k
今から始めるClaude Code超入門
448jp
7
8.3k
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
290
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
170
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
160
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
Oxlintはいいぞ
yug1224
5
1.3k
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
180
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
230
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
110
Agile that works and the tools we love
rasmusluckow
331
21k
Mind Mapping
helmedeiros
PRO
0
75
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
From π to Pie charts
rasagy
0
120
The SEO identity crisis: Don't let AI make you average
varn
0
64
Being A Developer After 40
akosma
91
590k
The Curious Case for Waylosing
cassininazir
0
230
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
430
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Transcript
第2回 GNU/Linux 勉強会 正規表現、⽂字列探索、プロセス管理 2022/5/23 笹川 尋翔
正規表現とは • 端的に⾔えば、あいまいな表現 • 定義 • ⽂字列の集合を1つの⽂字列で表現する⽅法 • メリット •
⽂字列検索を⾏う際にコード量を削減できる
もう少し分かりやすく • カレーを例に考えてみる • 世界には⾊々なカレーがある • チキンカレー • ビーフカレー •
ポークカレー … • 全てのカレーを検索対象とするときは、単に「カレー」と検索すれば いい • 正規表現では同様のことを「*カレー」という⽂字列で表現する
Linuxにおける正規表現 • grepコマンドと組み合わせることが多い • 今回はgrepコマンドを例に、実際に検索⽂字列から⽂字列を抽 出してみる
grep(global regular expression print) • ファイルや標準出⼒に書かれている⽂字列を検索対象として、指定 した⽂字列を検索するコマンド • ⽤法 •
grep 検索パターン ファイル名 • オプション • -c: マッチした⾏数のみを表⽰する • -f: ファイルの内容を検索パターンに指定する • -i: ⼤⽂字と⼩⽂字を区別しない • -n: 先頭に⾏番号を付けてマッチした⾏を表⽰する • -v: マッチしなかった⾏を表⽰する
grep • -E: 拡張正規表現を使う • egrepコマンドと同じ挙動になる • -F: 検索パターンを正規表現ではなく固定⽂字列として解釈する •
fgrepコマンドと同じ挙動になる • -e: 検索パターンを指定する • 検索パターンが1つの場合は不要
grepを使ってみる • それぞれのユーザのホームディレクトリにinput.txtファイルを 作成してある • 実際にgrepコマンドを使って⽂字列を検索してみる • ⽂字列linuxを含む⾏の⽂字列を表⽰する • grep
linux input.txt
grep -i • ⼤⽂字と⼩⽂字を区別せずに、⽂字列linuxを含む⾏の⽂字列を 表⽰する • grep ‒i linux input.txt
grep ‒v • ⽂字列linuxを含まない⾏の⽂字列を表⽰する • grep ‒v linux input.txt
grepでAND, OR検索 • AND検索(A∩B) • grepで抽出した結果を|(パイプ)で次のgrepに渡す • grep 検索パターンA ファイル名
| grep 検索パターンB • OR検索(A∪B) • grepの-eオプションで複数の検索パターンを指定する • grep ‒e 検索パターンA ‒e 検索パターンB ファイル名 • 拡張正規表現の|を使う • grep ‒E 検索パターンA|検索パターンB ファイル名 • egrep 検索パターンA|検索パターンB ファイル名
grepの正規表現 • []: []内の任意の1⽂字 • [abc]: aかbかcのいずれか1⽂字を含む⾏ • [a-z]: aからzまでのいずれか1⽂字(⼩⽂字のアルファベット)を含む⾏
• [A-Z]: AからZまでのいずれか1⽂字(⼤⽂字のアルファベット)を含む ⾏ • [0-9]: 0から9までのいずれか1⽂字(数字)を含む⾏
grepの正規表現 • .(ドット):任意の1⽂字 • ...(ドット3つ): 任意の3⽂字 • .*: 任意の⽂字列 •
a.*: aを含む⾏ • ^: ⾏頭 • ^a: aから始まる⾏ • $: ⾏末 • a$: aで終わる⾏
grepの正規表現 • ⾏頭が⼤⽂字Lである⾏の⽂字列を表⽰する • grep ^L.* input.txt あるいは grep ^L
input.txt • マッチの仕⽅が全部⼀致でも部分⼀致でも ⾏は表⽰されることに注意する
特殊⽂字のエスケープ • エスケープする⽅法 • \(バックスラッシュ)を特殊⽂字の直前に挿⼊する • ʻʼ(シングルクォーテーション)で囲む • grepの-Fオプションを使う •
fgrepを使う
プロセス管理 • プロセス • Linuxカーネルがプログラムを管理する際の単位の1つ • プログラムを実⾏すると⽣成されるインスタンス • 親プロセスがforkされている場合は、単⼀のプログラムでも複数のプ ロセスを持つ
• 親プロセスと⼦プロセスの関係はpstreeコマンドで確認できる
pstree(process tree)
init • Linuxカーネルが起動した際に最初に実⾏されるプログラム • initのPIDは必ず1になる • 他の全てのプロセスの親プロセス • 古い⽅から順番に、SysVinit、Upstart、systemdがある
SysVinit • initプロセスを開始 • → initプロセスが/etc/inittabを読み込む • → /etc/inittabに書かれたプロセスを順番に開始する •
メリット • 開始するプロセスを1つのファイルだけで管理できる • デメリット • プロセスを順番に開始するため、全てのプロセスが開始されるまでに ⻑い時間が掛かる
Upstart • イベント駆動型 • initプロセスを開始 • → initプロセスがイベントを検知する • →
イベントを処理するために必要なジョブを実⾏するためのジョブ定 義ファイルを/etc/event.dディレクトリから検索する • → ジョブを実⾏する • メリット • プロセスを並列で起動することができる
systemd • initのデファクトスタンダード • ほとんどのディストリビューションで採⽤されている • プロセスをユニットと呼ばれる単位で管理する • systemdプロセスを開始 •
→ default.targetを確認 • → default.targetに書かれているtargetを確認 • → 読み込んだtargetを元に必要なユニットを起動
systemd • メリット • プロセスを並列で起動することができる • Upstartよりも⾼速