狠狠撸
Submit Search
奥颈苍诲辞飞蝉でも使えるシェル
?
Download as PPTX, PDF
?
0 likes
?
1,935 views
T
Tetsuya Hasegawa
Follow
Windowsで使っている日常業務用の汎用的に使えるシェル。 解説付き。 cygwin、sed、awk、xargs、sort、powershellなど。
Read less
Read more
1 of 23
Download now
Download to read offline
More Related Content
奥颈苍诲辞飞蝉でも使えるシェル
1.
長谷川 1
2.
シェルの紹介に触発されて。 Windows環境しか使わない場合でもシェルを覚えて いて損はないということの周知。
2
3.
1. WindowsでUnix環境を使おう 2.
よく使うシェルと使うシチュエーション ? 結構すぐ使えるシェル 今日はこっちを紹介します。 ? やや技巧的なシェル ? 技巧的なシェル 技巧的なシェルは特定業務に特化してしまうので後 回し 3
4.
4 ? cygwinのインストール
? 環境設定 ※cygwinとはWindows上で動作するUnixライクな環境。 ※そのうちPowerShellの紹介もしたい。
5.
下記からインストーラーをダウンロードしてインストー ルする。 https://www.cygwin.com/
必要なパッケージを選択してインストールする。 後で追加もできる。 5
6.
実行画面はUnix環境っぽい感じ。 ディレクトリなどが自動的に作られる。 Windowsから楽に使えるように環境設定する。
6
7.
DOS画面からcygwinのコマンドを使えるようにする。 PATHにcygwinのbinのパスを追加。 SET
PATH=%PATH%;C:cygwinbin 下線はcygwinをインストールしたところ。 DOS画面からcygwinのコマンドが使えるように なった! 7
8.
テク① ここに「cmd」と入力してEnterを押すと このパスでDOS画面を開けます。
8
9.
9 結構すぐ使えるシェル ①ディレクトリの一覧を取得(DOS)
②大量のファイルをcsvにする(cygwin) ③ディレクトリの使用容量(cygwin) ④csvの特定列の最大値取得(cygwin) ⑤プロセス多重起動監視(cygwin) ⑥自動FTP操作(cygwin) ⑦ネットワーク設定の変更(PowerShell)
10.
TREE ドライブやパスのフォルダー構造を図式表示します。 /F
各フォルダーのファイル名を表示します。 /A 拡張文字ではなく、ASCII 文字で表示します。 >TREE /F /A > tree.txt C:. | classes.dex | hello.apk | resources.ap_ | +---classes | ---hello | ---namespace | HelloActivity.class | R$attr.class | R$drawable.class | R$id.class パイプ等で使うときはls –Rなどのパス のみ表示するコマンドを使う。 10
11.
【シチュエーション】大量のvmstatのログファイルが あってそれを全部csvに変換したい。 r
b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 128 57012 87772 664448 0 0 12 10 75 68 0 1 98 1 0 0 0 128 59368 87772 664480 0 0 0 0 189 90 7 4 89 0 0 0 0 128 59368 87772 664480 0 0 0 0 174 80 4 3 93 0 0 0 0 128 59368 87772 664480 0 0 0 0 159 90 6 3 91 0 0 0 0 128 59376 87772 664480 0 0 0 0 139 63 4 3 93 0 0 0 0 128 59376 87772 664480 0 0 0 0 165 86 4 4 92 0 0 0 0 128 59376 87780 664480 0 0 0 60 161 80 5 3 92 0 0 ~~~~~ 1万行くらい~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 0 0 128 59376 87780 664480 0 0 0 0 174 92 5 5 90 0 0 0 0 128 59376 87780 664480 0 0 0 0 144 66 6 3 91 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 82 5 3 92 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 77 4 4 92 0 0 0 0 128 59376 87784 664480 0 0 0 28 163 94 5 4 91 0 0 0 0 128 59376 87784 664480 0 0 0 0 143 69 4 3 93 0 0 0 0 128 59376 87784 664480 0 0 0 0 160 81 6 3 91 0 0 0 0 128 59376 87780 664480 0 0 0 0 144 66 6 3 91 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 82 5 3 92 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 77 4 4 92 0 0 0 0 128 59376 87784 664480 0 0 0 28 163 94 5 4 91 0 0 0 0 128 59376 87784 664480 0 0 0 0 143 69 4 3 93 0 0 0 0 128 59376 87784 664480 0 0 0 0 160 81 6 3 91 0 0 このようなファイルが100個くらいある。 #getconf ARG_MAX 32000 ←引数3200個までは大丈夫 vmstat:実行待ちプロセス数、割り込み回数、消費メモリ、 カーネル/ユーザ/アイドルのCPU使用率、 コンテキストスイッチ数などを取得するコマンド。 11
12.
【コマンド】 コマンド機能オプションなど意味 sed
文字列置換。-r 正規表現使用 s/条件/文字/g 条件を文字列に置換 find ファイル検索-type f:ファイル、d:ディレクトリ、l:シンボ リックリンク -name ファイル名のパターン -print0 区切り文字を0にする。 xargs ARG_MAX以 下になるように 分割してコマン ド実行 -0 区切り文字を0にする。 -PN 並列数N。0は最大限の並列化。 -t コマンドを標準エラー出力。 -I str strを標準入力の引数に置換。 12
13.
#!/bin/sh 0以上の連続するスペースを,に置換し、拡張子 csvで保存。
function func() { sed -r "s/[ ]+/,/g" "$1" > "$1.csv" } export -f func カレントディレクトリの*.logファイルのパスを引数 にしてfuncを呼び出す。 区切り0にしないとパスのスペースで区切られる。 find . -type f –maxdepth 1 -name "*.log" -print0 | xargs -0 -P0 -t -I %arg bash -c "func %arg" シングルクォーテーション’?シェル展開しない。 ダブルクォーテーション”?シェル展開する。 13
14.
【コマンド】 コマンド機能オプションなど意味 du
ディスク使用容 量。 -m メガバイト単位。 -k キロバイト単位。 -h M/K/Gを自動で選択する。 -s サブディレクトリを除く。 sort ソート-r 降順でソート。 -n 数値としてソート。 -u 重複排除。 14
15.
C:cygwinusr>du -sk ./*
| sort -rn 409122 ./share 378867 ./ppc 343904 ./lib 166279 ./bin 63405 ./include 47820 ./src 28486 ./i686-pc-mingw32 2432 ./libexec 413 ./sbin 6 ./i686-pc-cygwin 3 ./ssl カレントディレクトリの各ディレクトリの使 用容量を降順でソート Windosのsortが優先される場合があ るので注意 パス検索の順序確認 >where sort C:cygwinbinsort.exe C:WindowsSystem32sort.exe 15
16.
【コマンド】 コマンド機能オプションなど意味 awk
文字列処理用 (gawk) 言語。 -F 区切り文字 {cmd1} END{cmd2} cmd1:各行で実行 cmd2:最後に実行 構文:awk ‘program’ [file ...] gawk -F, ‘{print $2 $5}’ xx.csv ?csvの各行の2、5列目を表示。 gawk -F, ‘{printf “data10:%dn”, $10}’ xx.csv ?data10: dataという出力形式。 gawk -F, ‘BEGIN{print “START”} {printf “data10:%dn”, $10} END{print “END”}’ xx.csv ?最初にSTART/最後にENDと表示。 16
17.
gawk -F, ‘{print
$5}’ x.csv | sort -nr | head -n 1 5列目の最大値を表示。 head –n N:先頭からN行を表示。 gawk -F, ‘{sum +=$5} END{print sum / NR}’ x.csv 5列目の平均を表示。 NR:行数 ※数値以外が含まれる場合の考慮はしていない。 17
18.
【コマンド】 コマンド機能オプションなど意味 ps
プロセス表示。aux a:全ユーザー、u:ユーザ名と開始 時刻、x:全プロセス grep 文字列の検索-v マッチしない行を表示。 -A num -B num A:マッチ行の前num行を表示。 B:マッチ行の後num行を表示。 -E 拡張正規表現(ERE)使用。egrepと 同様。 wc 行数などを表 示。 -c バイト数をカウント。 -w 単語数をカウント。 -l 行数をカウント。 なし行数、単語数、バイト数をカウント。 pgrep PIDを取得。-x 完全一致のプロセスのPIDを取得。 18
19.
#!/bin/sh threshold=3 count=$(ps
aux | grep "$1" | grep -v "grep" | wc -l) if [ "$count" -ge "$threshold" ]; then echo "[WARNING]$count" fi psから引数のプロセスを抽出。 pgrep –x ”$1”でもよい。 psからgrepを除き、行 数を取得。 プロセス数が閾値以上ならばメッセージを表示。 watchコマンド、whileなどで定期実行しておく。 19
20.
【コマンド】 ヒアドキュメント cmd<<xxでcmdにデータを渡すことができる。
cmd<<-xxとすると行頭のタブが無視される。 xxを’で囲むと変数、コマンドが展開されない。 例) mail –s ’タイトル’ <<EOF メール本文 EOF 20
21.
#!/bin/sh ftp –n
“192.168.100.1” << EOF #ftp –n 標準入力からログイン情報を取得。 user ’hasegawa’ ’password’ binary #binaryモード cd ../ mget ”*.log” EOF ログインしてbinaryモードに切り替えて、 ログディレクトリに移動して*.logを取得 する。 21
22.
PowerShellについては近々紹介予定。 Windowsの設定を自動化できる。 C:WINDOWSsystem32WindowsPowerShellv
1.0 $adapters=Get-WmiObject -Class Win32_NetworkAdapterConfiguration - ComputerName. -Filter "IPEnabled='True'“ $adapters[0].EnableStatic(“192.168.200.100”,” 255.255.255.0”) 22
23.
$ip=@() $mask=@() $ip+=“1.1.1.1”
$ip+=”2.2.2.2” $mask+=“255.0.0.0” $mask+=“255.0.0.0” 16個IPアドレスを設定するのもスクリ プトでやれば簡単 $adapters[0].EnableStatic($ip, $mask) 23
Download