Recommended
PDF
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PPT
PDF
Intro to SVE 富岳のA64FXを触ってみた
PDF
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
PDF
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PDF
PDF
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PDF
PDF
PDF
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
怖くないSpring Bootのオートコンフィグレーション
PDF
イエラエセキュリティMeet up 20210820
PDF
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PDF
PDF
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
PPTX
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PDF
PDF
Summary of "Hacking", 0x351-0x354
ODP
More Related Content
PDF
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PPT
PDF
Intro to SVE 富岳のA64FXを触ってみた
PDF
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
PDF
What's hot
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PDF
PDF
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PDF
PDF
PDF
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
怖くないSpring Bootのオートコンフィグレーション
PDF
イエラエセキュリティMeet up 20210820
PDF
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PDF
PDF
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
PPTX
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PDF
Viewers also liked
PDF
Summary of "Hacking", 0x351-0x354
ODP
PDF
PDF
PPT
PDF
固定長レコード形式行順ファイルでもAwkがしたい!
PDF
PPTX
PPTX
ODP
Format string vunerability
PDF
PDF
ODP
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
PDF
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
PDF
Similar to シェル芸初心者によるシェル芸入門 (修正版)
PDF
PDF
PDF
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
PDF
PDF
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
PDF
PPTX
PDF
PDF
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
PDF
ODP
PDF
NGS速習コース:UNIXの基礎の理解/Linux導入
PPTX
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
PPTX
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
PDF
20130223 OSC Tokyo/Spring
PPTX
PDF
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
PDF
PDF
PDF
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
シェル芸初心者によるシェル芸入門 (修正版) 1. 2. 3. 4. 5. 6. 7. 8. 9. IO (Input and Output)
Linuxの入出力は大きく分けて3つ
標準入力
標準出力
エラー出力
IOには番号(File Discriptor)が割り振られている
標準入力 0, 標準出力 1, エラー出力 2
普通の出力は1番
エラーメッセージは2番
10. IO (Input and Output)
ターミナル(端末)には識別番号がつけられている
コンソールから直接ログイン → tty
ターミナルエミュレータ → pts (仮想tty)
tty pts
tty/1 tty/2 tty/3
tty/4 tty/5 tty/6
tty/7
pts/0 pts/1 pts/2
pts/3 pts/4 pts/5
pts/6 pts/7
接続するたびに増える
...
11. IO (Input and Output)
現在開いているターミナルエミュレータは
tty/7で起動したGUIから仮想的に接続しているもの
ttyを切り替えるには Ctrl + Alt + F1~7を押す (tty/1~7)
12. IO (Input and Output)
ターミナルに出力されているのは
自身のターミナル識別番号に出力された結果
$ ls -la
total 184
drwxr-x--x 21 root ubuntu…
drwxr-xr-x 6 root root…
….
/dev/pts/0
13. IO (Input and Output)
実際は出力をデバイスファイルに書き込んでいる
cat ls.bash
/dev/pts/10
/proc/self/fd/1
現在のprocess自身の
ファイルディスクリプタ1番(標準出力)
シンボリックリンク
ls -la
pts/10
シェルが書き込む /dev/stdout
14. 15. 16. 17. 18. 19. 20. 21. 22. パイプ
cat ls.result と ls -la の出力結果は同じ
!
!
それぞれのコマンドは
完全に独立した動き
ptsls -la | head head
ls -la の実行結果 入力の先頭10行
23. 24. 25. 26. grep
• grep expr [input]
• exprにマッチする行を出力する
• grep -v expr [input]
• exprにマッチしない行を出力する
• grep -r expr /some/path
• /some/path配下からexprにマッチするファイル
およびその箇所を出力する
27. 28. grep
• 演習1 解答:
• grep -r `whoami` /home ¦ grep -v matches
2>/dev/null
!
• grep -r と grep -v はよく使う
• エラーが多すぎる場合は/dev/nullに投げて無視
29. cut
• cut -d <delim> -f num [input]
• <delim>を区切り文字として,num番目の列を
出力する
• numには 1,3-5 (1と3-5行目)のように範囲を指
定できる
30. 31. sed
• sed expr [input]
• 入力を行ごとにexprに従って処理する
• expr
• s/[pat1]/[pat2]/g # pat1をpat2に置換する
• patに / が含まれる場合はエスケープが必要
• 区切り文字は別のものでも良い (@,#,%など)
32. sed
• 例)
• cat /etc/passwd ¦ sed s/bash/zsh/g
• 全ユーザーのログインシェルをbashからzshに変更
• 結果は出力されるだけ
• 反映させたい場合は-iオプションとファイルを指定
• 対象ファイルへのwrite権限が必要
33. awk
• awk expr [input]
• テキスト処理のために作られたスクリプト言語
• 行単位で処理を行う
• デフォルトで空白をいい感じに扱ってくれる
• 空白とタブが混じっていても大丈夫
• cutで崩れるような場合に便利
34. awk
• 処理の流れ
• BEGIN { statement } # 開始処理
(pattern) { statement }
…
END { statement } # 終了処理
• BEGINとENDは無くてもよい
• patternにマッチするとその中身が実行される
35. 36. 37. sort
• sort [input]
• 入力をソートする (ソートキーを変更可能)
• -t <delim> # 区切り文字をdelimにする
• -k <key1> # key1から行末をソートキーにする
• -b # 行頭のスペースを無視
• -r # 降順
• -i # ignore case
38. 39. 40. フィルタ処理
• 演習2 解答:
• ps aux ¦ grep ^root ¦ awk {print $4,$2} ¦
sort -r ¦ head ¦ cut -d -f2
!
• awkで出力順序を変更してソートしやすくする
41. xargs
• xargs cmd
• 引数を標準入力から受け取りコマンドを実行
• 標準入力が複数行ある場合
一行に連結して実行する
• cat filelist.txt ¦ xargs rm
# => rm file1 file2 file3 file4…
# filelist.txtに含まれるファイルを消去する
42. find
• find <path> <expr>
• pathからexprにしたがって検索を実行する
• expr (よく使うもの)
• -name <filename>
• filenameに一致したファイルのパスを出力する
43. 44. find
• 演習3 解答:
• find /Users -name .DS_Store ¦ xargs rm -f
!
• find /Users -name .DS_Store
• /Users以下に含まれる.DS_Storeを検索
• xargs rm -f
• rm -f [.DS_Store1] [.DS_Store2]…
45. 46. 47. 48. 49. :(){: ¦ :&};:
• :()
• : という関数を定義
• {: ¦ :&}; :
• :を:にパイプで繋ぐのをバックグラウンドで実行
!
• 無限にプロセスが増殖する
50. 51. ps aux ¦ grep bash ¦ grep
-v $$ ¦ awk {print $2} ¦
xargs kill -9
52. ps aux ¦ grep bash ¦ grep -v $$
¦ awk {print $2} ¦ xargs kill -9
• ps aux
• プロセスを全列挙
• ¦ grep bash
• bashプロセスを抽出
• ¦ grep -v $$
• $$ (自分自身)を除外する
53. ps aux ¦ grep bash ¦ grep -v $$
¦ awk {print $2} ¦ xargs kill -9
• ¦ awk {print $2}
• PIDを列挙し
• ¦ xargs kill -9
• kill する
!
• つまり自分以外のbashを全員殺す
54. 55. 56. 57. 58. 59. for
• seq start end
• start から endまでの数字を順に出力
• seq start d end
• start から endまでの数字をdおきに出力
!
• for((i=0;i<10;i+=2)) ==> for i in `seq 0 2 9`
60. 61. while
• while read line
• 標準入力から一行ずつ$lineに読み込む
• $lineを参照することで行単位の処理が可能
• $ cat filelist.txt ¦ while read line
> do
> rm $line
> done
# filelist.txtに書かれているファイルを削除
62. 63. 64. 65. 66. 67. 68. 69. access.log
• zcat -f /var/log/apache/*access*
• 全てのaccess.logが得られる
• ¦ grep ()
• ShellShockのアレ
• ¦ awk {print $1}
• IPを表示
70. 71. 72. auth.log
• zcat -f /var/log/auth.log*
• アーカイブを含む全てのauth.logを出力
• ¦ grep sshd
• sshのイベントを抽出
• ¦ grep Invalid
• Invalid user <username> from <IP address>
のログを抽出
73. auth.log
• ¦ awk {print $10,$8}
• 8番目(username)と10番目(IP address)を抽出
あとでソートしやすくするために順番を逆にする
• ¦ sort
• ソート
• ¦ uniq -c
• 重複するものをカウント (IP別のユーザー名)
74. auth.log
• ¦ sort -g -r # -g: 数字をいいカンジにソート
• カウントの回数について降順にソート
!
• awkで抽出する列を
• 8のみにするとユーザー名
• 10のみにするとIP別の統計が取れる
75. 76. 77. 78. auth.log
• zcat -f auth.log* ¦ grep sshd ¦ grep Invalid
• ¦ awk {print $8,$10} ¦ sort ¦ uniq
• username,IPの順にソートをして同一IPを排除する
• ¦ cut -d -f1 ¦ sort
• もう一度usernameでソートをかける
• ¦ uniq -c ¦ sort -g -r
• username毎にIPの種類数でカウントされる
79. 80.