SlideShare ist ein Scribd-Unternehmen logo
1 von 24
シェルスクリプトを極めるシェルスクリプトを極める
USP 友の会
今泉光之
@bsdhack
http://bsdhack.org
仕事で使えるシェルスクリプト 2
講師講師
● 今泉光之
 UNIX/Linux環境でのプログラミングを中心に、ネットワークや
インフラなども含め20年以上に渡る経験だけは積んできました。
 当初はC言語でコンパイラ、Xサーバ、ドライバ、TCP/IPによる
通信などシステム系のプログラミングが主でしたが、最近はPerl
やPHPなどのWeb向けのLLも使っています。
仕事で使えるシェルスクリプト 3
fdfd を活用するを活用する
●
fd とはファイルディスクリプタの略
– オープンしたファイルの識別子
– 標準入力は 0
– 標準出力は 1
– 標準エラー出力は 2
– シェルではリダイレクト記号の前に数字
●
3> ファイル fd3 をファイルにリダイレクト
●
4< ファイル fd4 をファイルからリダイレクト
●
5<&- fd5 をクローズ
●
6>&7 fd7 を fd6 に複製 (fd6 を fd7 にリダイレクト
仕事で使えるシェルスクリプト 4
● プロセスの出力同士を diff(1) で比較する
– 3<&0 で標準入力 (fd0) を fd3 に複製
– コマンド 1 の出力が fd3 に出力される
– /dev/fd/3 からの入力がコマンド 1 の出力
fdfd の活用方法①の活用方法①
$ diff <( コマンド 1 ) <( コマンド 2 )
$ コマンド 1 | ( コマンド 2 | diff /dev/fd/3 -) 3<&0
仕事で使えるシェルスクリプト 5
fdfd の活用方法②の活用方法②
● パイプの途中のプロセスの終了コード
– コマンド 1 の $? を 1>&3 で fd3 に出力
– fd3 の内容を 3>&1 で ret1 に格納
$ exec 3>&1
ret1=`{ { コマンド 1; echo $? 1>&3; } | コマンド 2; } 3>&1`
ret2=$?
仕事で使えるシェルスクリプト 6
fdfd の活用方法③の活用方法③
● ループ処理での活用
exec 3<&0 0<<EOF
` コマンド `
EOF
while read line
do
:
done
exec 0<&3 3<&-
仕事で使えるシェルスクリプト 7
fdfd の活用③の活用③
– exec 3<&0 で fd0 を fd3 に複製
– exec 0<<EOF でヒアドキュメントを fd0 として使用
– exec 0<&3 で複製した fd0 を復帰
– exec 3<&- で fd3 をクローズ
– パイプを使わないのでプロセスが生成されない
仕事で使えるシェルスクリプト 8
fdfd の実装①の実装①
● コマンド > ファイル
– fd = open( ファイル , O_WRONLY|O_CREAT|O_TRUNC);
● ファイルを出力モードで open
– dup2(fd, 1);
● FD1( 標準出力 ) をクローズした後で fd を 1 に複製する
結果 fd が標準出力として使われる
仕事で使えるシェルスクリプト 9
fdfd の実装②の実装②
● コマンド > ファイル 2>&1
– fd = open( ファイル , O_WRONLY|O_CREAT|O_TRUNC);
● ファイルを出力モードで open
– dup2(fd, 1);
●
FD1( 標準出力 ) をクローズした後で fd を FD1 に複製する
– dup2(1, 2);
●
FD2( 標準エラー出力 ) をクローズした後で FD1 を FD2 に複製する
結果 fd が標準出力、標準エラー出力として使われる
仕事で使えるシェルスクリプト 10
fdfd の実装③の実装③
● コマンド 1| コマンド 2
– pipe(fd[]);
● パイプを生成
– コマンド 1 側 dup2(fd[1], 1);
● コマンド 1 の標準出力をパイプの出力側に複製する
– コマンド 2 側 dup2(fd[0], 0);
● コマンド 2 の標準入力をパイプの入力側に複製する
結果コマンド 1 の標準出力がコマンド 2 の標準入力になる
仕事で使えるシェルスクリプト 11
evaleval の活用①の活用①
● 配列的な変数アクセス
# $1: 配列名
# $2: インデックス
# $3-: 値
setarray()
{
_index_="__`echo $1 $2 | sed -e 's/ //g'`"
shift 2
eval $_index_'='"$@"
}
仕事で使えるシェルスクリプト 12
evaleval の活用②の活用②
● 配列的な変数アクセス
# $1: 配列名
# $2: インデックス
getarray()
{
eval echo '${'__`echo $* | sed -e 's/ //g'`'}'
}
仕事で使えるシェルスクリプト 13
ファイルのオーバーライドファイルのオーバーライド
● 元ファイルを書き替える
– ① でファイルが読み込みモードでオープンされる。
– ② でオープンされたファイルが削除される。
– ③ で新しい(別な)ファイルが書き込みモードでオープンされる。
● ① のファイルと③のファイルはたまたま同じファイル名なだけで、
inode が異なっているので OS からは別なファイル扱いなので正しく動作する。
$ コマンド < ファイル > ファイル # 絶対ダメ!
$ (rm ファイル ; コマンド > ファイル ) < ファイル
② ③ ①
仕事で使えるシェルスクリプト 14
排他処理①排他処理①
● シェルスクリプトでの排他処理
– test(1) と touch(1) の間に他のプロセスの test(1) が実行されると
排他処理が失敗する
lockfile="/var/tmp/`basename ${0}`"
test -f ${lockfile} || touch ${lockfile}
仕事で使えるシェルスクリプト 15
排他処理②排他処理②
● シェルスクリプトでの排他処理
– シンボリックリンクの作成は atomic
– PID をリンクする事でロックしたプロセスが特定できる
lockfile="/var/tmp/`basename ${0}`"
if ln -s $$ ${lockfile} 2> /dev/null
then
: # メイン処理を実行
else
echo "${0}: exist another instance" 1>&2
exit 255
fi
trap 'rm -f ${lockfile}; exit' 0 1 2 3 11 15
仕事で使えるシェルスクリプト 16
キャピタライズ①キャピタライズ①
● 英単語の先頭文字を大文字に変換する
– awk を利用した方法
● awk 組み込みの substr() 、 toupper() を使用する
$ echo "foo" | awk '{ print toupper(substr($0, 1, 1)) substr($0, 2, length($0) - 1) }'
仕事で使えるシェルスクリプト 17
キャピタライズ②キャピタライズ②
● 英単語の先頭文字を大文字に変換する
– sed を利用した処理
● sed 単体では実現できないのでコマンド列を出力して eval
eval `echo "foo" | sed 's/(.)(.*)//bin/echo -n 1 | tr "[a-z]" "[A-Z]"; echo 2/g'`
仕事で使えるシェルスクリプト 18
exex を活用する①を活用する①
● ファイルの行操作に ex を活用する
– 直接行の追加や削除が可能(一時ファイル不要)
– 実は vi なので正規表現など強力な編集操作が可能
– echo やヒアドキュメントで編集コマンドを指定可能
仕事で使えるシェルスクリプト 19
exex を活用する②を活用する②
● 行追加処理
– 行番号で指定した行の下にコンテンツを挿入する
– `.' で挿入モードを終了し `w!' で内容をファイルに出力する
$ /bin/ex -s ファイル << EOF
行番号 a
コンテンツ
コンテンツ
:
.
w!
EOF
仕事で使えるシェルスクリプト 20
exex を活用する③を活用する③
● 行削除処理
– 行番号で指定した行を削除する
– `w!' で内容をファイルに出力する
$ /bin/ex -s ファイル << EOF
行番号 d
w!
EOF
仕事で使えるシェルスクリプト 21
exex を活用する④を活用する④
● 行番号を指定した行置換処理
– 行番号で指定した行のパターンを置換文字列に置換する
– `w!' で内容をファイルに出力する
$ /bin/ex -s ファイル << EOF
行番号 s/ パターン / 置換文字列 /
w!
EOF
仕事で使えるシェルスクリプト 22
exex を活用する⑤を活用する⑤
● パターンを指定した行置換処理
– 最初に発見したパターンを置換文字列に置換する
– s の後ろの連続した `//' は直前の正規表現(パターン)を示す
– `w!' で内容をファイルに出力する
$ /bin/ex -s ファイル << EOF
/ パターン /s// 置換文字列 /
w!
EOF
仕事で使えるシェルスクリプト 23
exex を活用する⑥を活用する⑥
● ファイルから指定された行を削除する
– 元のファイル (basefile) には複数の行が含まれている
– 削除する行は別なファイル (target) に格納されている
– target ファイルには行番号が 1 行ずつ格納されている$ cat basefile
first line
second line
third line
:
:
$ cat target
2
3
5
:
:
仕事で使えるシェルスクリプト 24
exex を活用する⑦を活用する⑦
● パターンを指定した行置換処理
– 削除済みの行を考慮する必要がある
→ 2 行目を削除すると今までの 3 行目が 2 行目になる
– ex で行を削除する
– awk で削除した行を考慮した行番号に対する行削除を出力
$ sort target |
awk '{ printf "%ddn", $1-(NR-1); } END { print "w!" }' |
ex -s basefile

Weitere ähnliche Inhalte

Was ist angesagt?

ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツShinsukeYokota
 
Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Sadayuki Furuhashi
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)Uptime Technologies LLC (JP)
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...yoshimotot
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...Google Cloud Platform - Japan
 
TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成
TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成
TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成QlikPresalesJapan
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)NTT DATA Technology & Innovation
 
MicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステム
MicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステムMicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステム
MicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステムHirofumi Iwasaki
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介Masahiko Sawada
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜Takahiro Inoue
 
分散システム第7章(前半)
分散システム第7章(前半)分散システム第7章(前半)
分散システム第7章(前半)Kenta Hattori
 
DCSF19 Hardening Docker daemon with Rootless mode
DCSF19 Hardening Docker daemon with Rootless modeDCSF19 Hardening Docker daemon with Rootless mode
DCSF19 Hardening Docker daemon with Rootless modeDocker, Inc.
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 

Was ist angesagt? (20)

ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
 
Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
 
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
 
TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成
TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成
TECHTALK 20201117 ビッグデータへのアプローチ ー チャートをリアルタイムに更新するDynamic Views とオンデマンドアプリ生成
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
 
MicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステム
MicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステムMicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステム
MicroProfile 5で超手軽に始める今どきのクラウド完全対応エンタープライズシステム
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
 
分散システム第7章(前半)
分散システム第7章(前半)分散システム第7章(前半)
分散システム第7章(前半)
 
DCSF19 Hardening Docker daemon with Rootless mode
DCSF19 Hardening Docker daemon with Rootless modeDCSF19 Hardening Docker daemon with Rootless mode
DCSF19 Hardening Docker daemon with Rootless mode
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 

Ähnlich wie シェルスクリプトを極める

サーバーだけじゃない! Linux デスクトップを使い倒そう! その1
サーバーだけじゃない! Linux デスクトップを使い倒そう! その1サーバーだけじゃない! Linux デスクトップを使い倒そう! その1
サーバーだけじゃない! Linux デスクトップを使い倒そう! その1Fuminobu Takeyama
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)Kazuko Itoda
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)Kazuko Kanai
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日nukaemon
 
XMLpro 1回目 環境導入
XMLpro 1回目 環境導入XMLpro 1回目 環境導入
XMLpro 1回目 環境導入XMLProJ2014
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small serverTatsumi Naganuma
 
Programming under capability mode
Programming under capability modeProgramming under capability mode
Programming under capability modeYuichiro Naito
 
Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎Sho A
 
Fuchsia概略その1
Fuchsia概略その1Fuchsia概略その1
Fuchsia概略その1l_b__
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプトbsdhack
 
04 filesystem include
04 filesystem include04 filesystem include
04 filesystem include文樹 高橋
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Ransui Iso
 
SCPコマンドについて
SCPコマンドについてSCPコマンドについて
SCPコマンドについてiPride Co., Ltd.
 
Debian Multiarch Support
Debian Multiarch SupportDebian Multiarch Support
Debian Multiarch SupportKeisuke Nakao
 
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2Fuminobu Takeyama
 

Ähnlich wie シェルスクリプトを極める (20)

サーバーだけじゃない! Linux デスクトップを使い倒そう! その1
サーバーだけじゃない! Linux デスクトップを使い倒そう! その1サーバーだけじゃない! Linux デスクトップを使い倒そう! その1
サーバーだけじゃない! Linux デスクトップを使い倒そう! その1
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
 
Slide
SlideSlide
Slide
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
XMLpro 1回目 環境導入
XMLpro 1回目 環境導入XMLpro 1回目 環境導入
XMLpro 1回目 環境導入
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
 
Programming under capability mode
Programming under capability modeProgramming under capability mode
Programming under capability mode
 
Preseeding Debian
Preseeding DebianPreseeding Debian
Preseeding Debian
 
Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎
 
20170124 linux basic_1
20170124 linux basic_120170124 linux basic_1
20170124 linux basic_1
 
Fuchsia概略その1
Fuchsia概略その1Fuchsia概略その1
Fuchsia概略その1
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
04 filesystem include
04 filesystem include04 filesystem include
04 filesystem include
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
SCPコマンドについて
SCPコマンドについてSCPコマンドについて
SCPコマンドについて
 
Unix
UnixUnix
Unix
 
Debian Multiarch Support
Debian Multiarch SupportDebian Multiarch Support
Debian Multiarch Support
 
3-1
3-13-1
3-1
 
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
 

シェルスクリプトを極める