SlideShare uma empresa Scribd logo
1 de 32
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
USP 友の会
今泉光之
@bsdhack
http://bsdhack.org
仕事で使えるシェルスクリプト 2
講師講師
● 今泉光之
 UNIX/Linux環境でのプログラミングを中心に、ネットワークや
インフラなども含め20年以上に渡る経験だけは積んできました。
 当初はC言語でコンパイラ、Xサーバ、ドライバ、TCP/IPによる
通信などシステム系のプログラミングが主でしたが、最近はPerl
やPHPなどのWeb向けのLLも使っています。
仕事で使えるシェルスクリプト 3
POSIXPOSIX についてについて
●
POSIX とは
– Portable Operating System Interface
– 各種 UNIX OS を始めとする異なる OS 実装に共通の
API を定め、移植性の高いアプリケーションソフト
ウェアの開発を容易にすることを目的として IEEE
が策定したアプリケーションインタフェース規格
– 名前はリチャード・ストールマン提案による
仕事で使えるシェルスクリプト 4
なぜなぜ POSIXPOSIX かか
● 元々は Bourne Shell のみだったので互換性は問題なし
● シェルスクリプトは様々な環境で動作した
●
csh 、 tcsh 、 ksh 、 bash 、 zsh などの登場により機能は増加し
たが互換性は減少した
● ソフトウェア製品を様々なベンダーの数ある unix システムで
動作させるために互換性を意識する必要がある
仕事で使えるシェルスクリプト 5
どんな時にどんな時に POSIXPOSIX を意識するのかを意識するのか
● ソフトウェア製品の開発
– 色々な環境で動作させる事で開発コストが下がる
● 監査が厳しい状況
– 金融業界などは導入するソフトに制限がある
● そもそも bash は標準シェルじゃない
仕事で使えるシェルスクリプト 6
checkbashismscheckbashisms
● シェルスクリプトの lint(1) 的存在
– 引数で指定されたシェルスクリプトを解析して
POSIX に準拠していない部分を指摘する
– http://sourceforge.net/projects/checkbaskisms/
– Sourceforge からダウンロードできます
– 残念ながら perl スクリプト
仕事で使えるシェルスクリプト 7
POSIXPOSIX を気にしないを気にしない
●
POSIX を気にしない場面も必要
– アプライアンスサーバを作る場合
● 全て自前で揃える必要がある
● 組み込みに近いので独自仕様を優先する
● サイズや速度に制限がある場合もある
仕事で使えるシェルスクリプト 8
POSIXPOSIX を気にしないを気にしない
●
OS 固有の処理(起動スクリプトなど)
– redhat 系
● パラメタは /etc/sysconfig 以下にファイルを設置
● 起動スクリプトは /etc/rc.d/init.d 以下にファイルを設置
● 起動制御は chkconfig で指定
– FreeBSD
● パラメタ・起動制御は /etc/rc.conf に指定
● 起動スクリプトは /usr/local/etc/rc.d 以下にファイルを設置
仕事で使えるシェルスクリプト 9
POSIXPOSIX まとめまとめ
基本は POSIX を意識するが
必要があれば
敢えて POSIX を無視する必要もあります
仕事で使えるシェルスクリプト 10
フィルターコマンドフィルターコマンド
● 標準入力から入力を受け取り結果を標準出力に
出力するコマンド。
– パイプによりコマンドを連続で実行できる
– unix のコマンドでは基本的な動作(例外あり)
– 余計な出力はせずに必要なデータのみ出力
– エラーは標準エラー出力に
仕事で使えるシェルスクリプト 11
シェル変数シェル変数
● シェル組み込みの set コマンドを活用する事で
シェルスクリプトの開発や運用が 32 倍 ( 当社
比 ) 捗ります
– マニュアル(オンラインマニュアル)を活用しよう
– できれば原文(英語)でマニュアルを読もう
仕事で使えるシェルスクリプト 12
シェル変数シェル変数 -e-e
● スクリプト実行時に制御文以外でエラーが発生
した場合に スクリプトを終了させる。
$ cat foo.sh
#!/bin/sh
set -e
files=`la ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
foo.sh: line 3: la: command not found
仕事で使えるシェルスクリプト 13
シェル変数シェル変数 -x-x
● コマンドが実行される前にコマンドと変数の展
開結果を stderr に出力する。
$ cat foo.sh
#!/bin/sh
set -x
files=`ls ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
++ ls
+ files='bar
baz 以下略
仕事で使えるシェルスクリプト 14
シェル変数シェル変数 -v-v
● シェルの入力行を stderr に出力する。
$ cat foo.sh
#!/bin/sh
set -v
files=`ls ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
files=`ls`
ls
echo "FILES: ${files}" 以下略
仕事で使えるシェルスクリプト 15
シェル変数シェル変数 -n-n
● コマンドの実行を抑止する。文法チェックや前
述の -v と組み合わせて使用すると便利。
$ cat foo.sh
#!/bin/sh
set -vn
files=`ls ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
files=`ls`
echo "FILES: ${files}"
仕事で使えるシェルスクリプト 16
シェル変数シェル変数 -u-u
● シェル変数を展開した時に値が設定されていな
い場合はエラーとする。
$ cat foo.sh
#!/bin/sh
set -u
tmpdir="/tmp"
rm -r ${tnpdir}/*
$ sh foo.sh
foo.sh: line 4: tnpdir: unbound variable
仕事で使えるシェルスクリプト 17
変数展開変数展開
● シェルによる変数展開を活用しよう
– ${parameter:-word} デフォルト値への置換
– ${parameter:=word} デフォルト値の代入
– ${parameter:?[word]} 値の検査とエラー
– ${parameter:+word} 代替値の使用
– ${#parameter} 文字列長の取得
– ${parameter%word} 最短後置パターンの削除
– ${parameter%%word} 最長後置パターンの削除
– ${parameter#word} 最短前置パターンの削除
– ${parameter##word} 最長前置パターンの削除
仕事で使えるシェルスクリプト 18
デフォルト値への置換デフォルト値への置換
● ${parameter:-word}
– ${parameter} が NULL の場合 word に置換される。
$ echo ${foo}
$ echo ${foo:-HOGE}
HOGE
$ echo ${foo}
$ foo=FUGA
$ echo ${foo:-FOO}
FUGA
仕事で使えるシェルスクリプト 19
デフォルト値の代入デフォルト値の代入
● ${parameter:=word}
– ${parameter} が NULL の場合 word に置換され parameter
に代入される。
$ echo ${foo}
$ echo ${foo:=HOGE}
HOGE
$ echo ${foo}
HOGE
$ echo ${foo:=FUGA}
HOGE
仕事で使えるシェルスクリプト 20
値の検査とエラー値の検査とエラー
● ${parameter:?[word]}
– ${parameter} が NULL の場合 word かデフォルトの値を
表示しシェルをエラー終了させる。
$ echo ${foo}
$ echo ${foo:?HOGE}
HOGE
仕事で使えるシェルスクリプト 21
代替値の使用代替値の使用
● ${parameter:+word}
– ${parameter} が NULL 以外の場合 word に置換される
$ echo ${foo:+HOGE}
$ echo ${foo}
$ foo=FUGA
$ echo ${foo}
FUGA
$ echo ${foo:+HOGE}
HOGE
仕事で使えるシェルスクリプト 22
文字列長の取得文字列長の取得
● ${#parameter}
– ${parameter} の文字列としての長さに置換される。
$ echo ${foo}
$ echo ${#foo}
0
$ foo=HOGE
$ echo ${foo}
HOGE
$ echo ${#foo}
4
仕事で使えるシェルスクリプト 23
最短後置パターンの削除最短後置パターンの削除
● ${parameter%word}
– ${parameter} の右から word で示されるパターンの最短
部分を削除する。
$ echo ${foo}
$ echo ${#foo}
0
$ foo=HOGE
$ echo ${foo}
HOGE
$ echo ${#foo}
4
$ foo=/hoge/fuga/moge
$ echo ${foo%/*}
/hoge/fuga
$ foo=hoge.c
$ echo ${foo%.*}
hoge
$ foo=fuga
$ echo ${foo%.*}
fuga
仕事で使えるシェルスクリプト 24
最長後置パターンの削除最長後置パターンの削除
● ${parameter%%word}
– ${parameter} の右から word で示されるパターンの最長
部分を削除する。
$ foo=hoge.fuga.moge
$ echo ${foo%%.*}
hoge
$ foo=http://hoge.fuga.moge:8888/
$ echo ${foo%%:*}
http
$ foo=fuga
$ echo ${foo%%.*}
fuga
仕事で使えるシェルスクリプト 25
最短前置パターンの削除最短前置パターンの削除
● ${parameter#word}
– ${parameter} の左から word で示されるパターンの最短
部分を削除する。
$ foo=hoge.c
$ echo ${foo#*.}
c
$ foo=hoge.fuga.moge
$ echo ${foo#*.}
fuga.moge
$ foo=fuga
$ echo ${foo#*.}
fuga
仕事で使えるシェルスクリプト 26
最長前置パターンの削除最長前置パターンの削除
● ${parameter##word}
– ${parameter} の左から word で示されるパターンの最長
部分を削除する。
$ foo=hoge.fuga.moge
$ echo ${foo##*.}
moge
$ foo=/hoge/fuga/moge
$ echo ${foo##*/}
moge
$ foo=fuga
$ echo ${foo##*.}
fuga
仕事で使えるシェルスクリプト 27
traptrap の活用の活用
●
trap (1) で 0 を指定する
– スクリプトが正常終了した時にも指定した処理が実
行されるので、プログラム中で作成した一時ファイ
ルの削除などにはもってこい。
tmpdir="${TMP:-/tmp}/`basename ${0}`.$$"
mkdir -p "${tmpdir}"
trap 'rm -r "${tmpdir}"' 0
仕事で使えるシェルスクリプト 28
コマンドの活用コマンドの活用
● コマンドの機能をフルに活用する
grep "^HOGEHOGE=" file | awk 'BEGIN { FS = "="} { print $2 }'
↓
awk 'BEGIN{FS="="}/^HOGEHOGE=/{ print $2 }' file
awk 'BEGIN{FS="="}{ if($1 == "HOGEHOGE") print $2 }' file
もしくは
sed -n '/^HOGEHOGE=/s/^.*=//p' file
仕事で使えるシェルスクリプト 29
ヒアドキュメントの活用ヒアドキュメントの活用
● 複数行の固定データなどはヒアドキュメントを
活用する
echo "1 行目 " > ${file}
echo "2 行目 " >> ${file}
:
echo "n 行目 " >> ${file}
↓
cat << EOF > ${file}
1 行目
2 行目
:
n 行目
EOF
仕事で使えるシェルスクリプト 30
setset の活用の活用
● スペース区切りのデータ解析は set を活用
date="`date '+%Y %m %d'`"
year="`echo ${date} | awk '{ print $1 }'`"
month="`echo ${date} | awk '{ print $2 }'`"
day="`echo ${date} | awk '{ print $3 }'`"
↓
set -- `date '+%Y %m %d'`
year="${1}"
month="${2}"
day="${3}"
仕事で使えるシェルスクリプト 31
正規表現正規表現
● 正規表現の種類
– POSIX 1003.2 で定義されている
– 拡張正規表現 : egrep などモダンな実装
– 基本正規表現 : ed など旧来の実装
●
| 、 + 、 ? は存在しない
●
{ 、 } 、 ( 、 ) はそれぞれ { 、 } 、 ( 、 )
●
^ 、 $ は正規表現の先頭 / 末尾意外では普通の文字
– + 、 ? は代替の表現があるが | の代替は面倒
● シェルの glob とは異なるので注意
仕事で使えるシェルスクリプト 32
宿題宿題
● 重複ファイルの削除
– mh 形式のメイルファイルで重複したメイルを削除
●
apache ログの成形
– apache のログから URL 毎のアクセス回数を取得
●
postfix ログの成形
– postfix のログを成形してメッセージ毎に出力

Mais conteúdo relacionado

Mais procurados

誰得コマンド&オプション35連発
誰得コマンド&オプション35連発誰得コマンド&オプション35連発
誰得コマンド&オプション35連発Yozo SATO
 
systemdでよく使うサブコマンド
systemdでよく使うサブコマンドsystemdでよく使うサブコマンド
systemdでよく使うサブコマンドKazuhiro Nishiyama
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール弘毅 露崎
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すAromaBlack
 
3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術Kei IWASAKI
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようmax747
 
Functions
FunctionsFunctions
Functionsdo_aki
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみるairtoxin Ishii
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装したt-sin
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門Yoshitaka Seo
 
エンジニアのための痔の話
エンジニアのための痔の話エンジニアのための痔の話
エンジニアのための痔の話Kouhei Maeda
 
私がPerlを使う理由
私がPerlを使う理由私がPerlを使う理由
私がPerlを使う理由Yohei Azekatsu
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presenKouhei Maeda
 

Mais procurados (20)

SSH Tips & Tricks
SSH Tips & TricksSSH Tips & Tricks
SSH Tips & Tricks
 
誰得コマンド&オプション35連発
誰得コマンド&オプション35連発誰得コマンド&オプション35連発
誰得コマンド&オプション35連発
 
systemdでよく使うサブコマンド
systemdでよく使うサブコマンドsystemdでよく使うサブコマンド
systemdでよく使うサブコマンド
 
Unix
UnixUnix
Unix
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術
 
Unix1
Unix1Unix1
Unix1
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
Functions
FunctionsFunctions
Functions
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
 
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
エンジニアのための痔の話
エンジニアのための痔の話エンジニアのための痔の話
エンジニアのための痔の話
 
私がPerlを使う理由
私がPerlを使う理由私がPerlを使う理由
私がPerlを使う理由
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presen
 

Destaque

シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」博文 斉藤
 
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」博文 斉藤
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028博文 斉藤
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)umidori
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらいNaoki Nagazumi
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考えるHideto Ishibashi
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall博文 斉藤
 
「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!Jun Meguro
 
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用Jun Meguro
 
文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用Jun Meguro
 
20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について和仁 浅野
 
初心者向けシェル芸勉強会
初心者向けシェル芸勉強会初心者向けシェル芸勉強会
初心者向けシェル芸勉強会Katsuya Tashiro
 
T4t - tools for teams - 第1回 発表スライド
T4t - tools for teams - 第1回 発表スライドT4t - tools for teams - 第1回 発表スライド
T4t - tools for teams - 第1回 発表スライドKojiro Yokota
 
10 w 02-議事録、報告書について
10 w 02-議事録、報告書について10 w 02-議事録、報告書について
10 w 02-議事録、報告書についてHieu Mac
 
【議事録】スキルアップ勉強会(6月度) h23.07.10
【議事録】スキルアップ勉強会(6月度) h23.07.10【議事録】スキルアップ勉強会(6月度) h23.07.10
【議事録】スキルアップ勉強会(6月度) h23.07.10Kenichi Takara
 
OGPってなんでしょう?
OGPってなんでしょう?OGPってなんでしょう?
OGPってなんでしょう?Reina Okabe
 
ビジネスを加速させる議事録作成
ビジネスを加速させる議事録作成ビジネスを加速させる議事録作成
ビジネスを加速させる議事録作成Kohji Tanaka
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011TokyoRyuichi Ueda
 

Destaque (20)

シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
 
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
 
awk入門
awk入門awk入門
awk入門
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)
 
Awk勉強会用資料
Awk勉強会用資料Awk勉強会用資料
Awk勉強会用資料
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
 
「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!
 
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
 
文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用
 
20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について
 
初心者向けシェル芸勉強会
初心者向けシェル芸勉強会初心者向けシェル芸勉強会
初心者向けシェル芸勉強会
 
T4t - tools for teams - 第1回 発表スライド
T4t - tools for teams - 第1回 発表スライドT4t - tools for teams - 第1回 発表スライド
T4t - tools for teams - 第1回 発表スライド
 
10 w 02-議事録、報告書について
10 w 02-議事録、報告書について10 w 02-議事録、報告書について
10 w 02-議事録、報告書について
 
【議事録】スキルアップ勉強会(6月度) h23.07.10
【議事録】スキルアップ勉強会(6月度) h23.07.10【議事録】スキルアップ勉強会(6月度) h23.07.10
【議事録】スキルアップ勉強会(6月度) h23.07.10
 
OGPってなんでしょう?
OGPってなんでしょう?OGPってなんでしょう?
OGPってなんでしょう?
 
ビジネスを加速させる議事録作成
ビジネスを加速させる議事録作成ビジネスを加速させる議事録作成
ビジネスを加速させる議事録作成
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyo
 

Semelhante a 仕事で使えるシェルスクリプト

Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Ransui Iso
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPNSaitoNmiri
 
Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Tetsu Yama
 
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説LeapMind Inc
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Tetsu Yama
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„和弘 井之上
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTakahisa Iwamoto
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014Rui Hirokawa
 
Powershell基礎_20180521用
Powershell基礎_20180521用Powershell基礎_20180521用
Powershell基礎_20180521用Tetsu Yama
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRubyemasaka
 

Semelhante a 仕事で使えるシェルスクリプト (20)

Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
 
Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)
 
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
 
Capistrano
CapistranoCapistrano
Capistrano
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
Ilstudy001_20110806
Ilstudy001_20110806Ilstudy001_20110806
Ilstudy001_20110806
 
Powershell基礎_20180521用
Powershell基礎_20180521用Powershell基礎_20180521用
Powershell基礎_20180521用
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
Task
TaskTask
Task
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
 

仕事で使えるシェルスクリプト