シェルスクリプト
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-[[UNIX & Linux コマンド・シェルスクリプト リファレンス:h...
-[[シェル・スクリプト・リファレンス INDEX:http://itpro.ni...
-[[連載記事 「ステップ・バイ・ステップ・シェルスクリプト...
-[[シェルスクリプト Tips:http://www.geocities.jp/geo_suni...
-[[シェルスクリプト 処理系コレクション:http://www.boaro.j...
*全般 [#b86c7e25]
-シェルスクリプトの変数名には慣習的に大文字が使われること...
*基本 [#x6ef8178]
**条件分岐 [#h8377543]
-[[if 文と test コマンド:https://shellscript.sunone.me/if...
-[[シェルで変数の空文字判定:https://hacknote.jp/archives/...
***文字列比較 [#ra0b617d]
-[[Bash で文字列を比較する方法:https://www.delftstack.com...
**例外処理 [#l63c9629]
-[[シェルスクリプトでtry-catch-finallyを実装する方法:http...
-[[シェルスクリプトで例外処理(try-catch文)のような動作を...
**JSON [#n03ac50d]
***jq [#y26371af]
-[[jq コマンドを使う日常のご紹介:https://qiita.com/takesh...
-[[JSONデータの操作にjqコマンド使ってみたら扱いやすかった...
-[[jqコマンドの基本的な利用パターン:https://zenn.dev/geka...
-[[jqコマンド(jsonデータの加工, 整形)の使い方:https://www...
* cronで動かすときの注意点 [#t1159410]
-手動実行で動いて cron だと正常に動作しない場合は、以下の...
--コマンド実行やディレクトリ指定は絶対パスを使用する
--絶対パスが使用できない場合は cd で明示的にカレントディ...
-対話的コマンドは基本的に使えない
--[[expect. 対話的なコマンド(ssh, telnet, ftp, su等)を自...
* デバッグ [#i91a0b98]
-[[シェルスクリプトのデバッグ:http://www.geocities.jp/geo...
以下のように実行すると、実際に実行されたコマンドと変数に...
$ bash -x test.sh
* ファイル関連 [#td9591c4]
** ファイルの情報参照 [#b904d1a9]
$ stat aaa
File: `aaa'
Size: 4 Blocks: 8 IO Block: 409...
Device: 806h/2054d Inode: 94404618 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 222/ adpsp) Gid: ...
Access: 2010-11-23 12:20:38.000000000 +0900
Modify: 2010-11-23 12:20:25.000000000 +0900
Change: 2010-11-23 12:20:25.000000000 +0900
** 更新日時 [#a2c6dbdd]
-シェルの比較演算
--file1 -nt file2 ... file1の更新日時がfile2の更新日時よ...
--file1 -ot file2 ... file1の更新日時がfile2の更新日時よ...
-[[指定日時よりも更新日付の新しいファイルを検索するシェル...
-[[シェルスクリプトでタイムスタンプの比較:http://blog.han...
* ログ圧縮 [#q6df4784]
指定ディレクトリ内の日付のディレクトリを圧縮したファイル...
#!/bin/bash
DIR=/var/aplication/log
FROM_DATE=`date --date '3 day ago' +%Y-%m-%d`
TO_DATE=`date --date '3 day ago' +%Y-%m-%d`
while getopts 'd:f:t:' OPTION
do
case $OPTION in
d) DIR="$OPTARG"
;;
f) FROM_DATE="$OPTARG"
;;
t) TO_DATE="$OPTARG"
;;
?) printf "Usage: %s: -a aid [-d DIR] [-f F...
exit 2
;;
esac
done
target=$FROM_DATE
target_s=`date --date "$target" '+%s'`
to_s=`date --date "$TO_DATE" '+%s'`
if [ ! -d $DIR ]; then
echo "not found: $DIR"
exit
fi
cd $DIR
until [ $target_s -gt $to_s ];
do
echo $target
if [ -d $target ]; then
tar cfz $target.tar.gz $target
STATUS=$?
if [ $STATUS = 0 ];then
rm -rf $target
fi
fi
target=`date --date "$target 1 day" +%Y-%m-%d`
target_s=`date --date "$target" '+%s'`
done
* メール送信 [#ee1c0419]
** mail コマンド使用 [#a1155cca]
** sendmail コマンド使用 [#w1764c11]
*Tips [#nc05e037]
**入力 [#cd9a7bcd]
-[[BASHシェルスクリプトで「キー入力待ち」プロンプトを実装...
**日付 [#y2272bad]
-date +%Y%m%d
**文字コード変換 [#a49e6b69]
-iconv -f [変換元文字コード] -t [変換先文字コード]
--iconv -f EUCJP -t UTF8 ... EUC_JP -> UTF-8
--iconv -f EUCJP -t ISO-2022-JP ... EUC_JP -> ISO-2022-JP
**その他 [#gcf9b9eb]
-unset_linguas ... 文字コードを英語に。dateコマンド使用時...
終了行:
-[[UNIX & Linux コマンド・シェルスクリプト リファレンス:h...
-[[シェル・スクリプト・リファレンス INDEX:http://itpro.ni...
-[[連載記事 「ステップ・バイ・ステップ・シェルスクリプト...
-[[シェルスクリプト Tips:http://www.geocities.jp/geo_suni...
-[[シェルスクリプト 処理系コレクション:http://www.boaro.j...
*全般 [#b86c7e25]
-シェルスクリプトの変数名には慣習的に大文字が使われること...
*基本 [#x6ef8178]
**条件分岐 [#h8377543]
-[[if 文と test コマンド:https://shellscript.sunone.me/if...
-[[シェルで変数の空文字判定:https://hacknote.jp/archives/...
***文字列比較 [#ra0b617d]
-[[Bash で文字列を比較する方法:https://www.delftstack.com...
**例外処理 [#l63c9629]
-[[シェルスクリプトでtry-catch-finallyを実装する方法:http...
-[[シェルスクリプトで例外処理(try-catch文)のような動作を...
**JSON [#n03ac50d]
***jq [#y26371af]
-[[jq コマンドを使う日常のご紹介:https://qiita.com/takesh...
-[[JSONデータの操作にjqコマンド使ってみたら扱いやすかった...
-[[jqコマンドの基本的な利用パターン:https://zenn.dev/geka...
-[[jqコマンド(jsonデータの加工, 整形)の使い方:https://www...
* cronで動かすときの注意点 [#t1159410]
-手動実行で動いて cron だと正常に動作しない場合は、以下の...
--コマンド実行やディレクトリ指定は絶対パスを使用する
--絶対パスが使用できない場合は cd で明示的にカレントディ...
-対話的コマンドは基本的に使えない
--[[expect. 対話的なコマンド(ssh, telnet, ftp, su等)を自...
* デバッグ [#i91a0b98]
-[[シェルスクリプトのデバッグ:http://www.geocities.jp/geo...
以下のように実行すると、実際に実行されたコマンドと変数に...
$ bash -x test.sh
* ファイル関連 [#td9591c4]
** ファイルの情報参照 [#b904d1a9]
$ stat aaa
File: `aaa'
Size: 4 Blocks: 8 IO Block: 409...
Device: 806h/2054d Inode: 94404618 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 222/ adpsp) Gid: ...
Access: 2010-11-23 12:20:38.000000000 +0900
Modify: 2010-11-23 12:20:25.000000000 +0900
Change: 2010-11-23 12:20:25.000000000 +0900
** 更新日時 [#a2c6dbdd]
-シェルの比較演算
--file1 -nt file2 ... file1の更新日時がfile2の更新日時よ...
--file1 -ot file2 ... file1の更新日時がfile2の更新日時よ...
-[[指定日時よりも更新日付の新しいファイルを検索するシェル...
-[[シェルスクリプトでタイムスタンプの比較:http://blog.han...
* ログ圧縮 [#q6df4784]
指定ディレクトリ内の日付のディレクトリを圧縮したファイル...
#!/bin/bash
DIR=/var/aplication/log
FROM_DATE=`date --date '3 day ago' +%Y-%m-%d`
TO_DATE=`date --date '3 day ago' +%Y-%m-%d`
while getopts 'd:f:t:' OPTION
do
case $OPTION in
d) DIR="$OPTARG"
;;
f) FROM_DATE="$OPTARG"
;;
t) TO_DATE="$OPTARG"
;;
?) printf "Usage: %s: -a aid [-d DIR] [-f F...
exit 2
;;
esac
done
target=$FROM_DATE
target_s=`date --date "$target" '+%s'`
to_s=`date --date "$TO_DATE" '+%s'`
if [ ! -d $DIR ]; then
echo "not found: $DIR"
exit
fi
cd $DIR
until [ $target_s -gt $to_s ];
do
echo $target
if [ -d $target ]; then
tar cfz $target.tar.gz $target
STATUS=$?
if [ $STATUS = 0 ];then
rm -rf $target
fi
fi
target=`date --date "$target 1 day" +%Y-%m-%d`
target_s=`date --date "$target" '+%s'`
done
* メール送信 [#ee1c0419]
** mail コマンド使用 [#a1155cca]
** sendmail コマンド使用 [#w1764c11]
*Tips [#nc05e037]
**入力 [#cd9a7bcd]
-[[BASHシェルスクリプトで「キー入力待ち」プロンプトを実装...
**日付 [#y2272bad]
-date +%Y%m%d
**文字コード変換 [#a49e6b69]
-iconv -f [変換元文字コード] -t [変換先文字コード]
--iconv -f EUCJP -t UTF8 ... EUC_JP -> UTF-8
--iconv -f EUCJP -t ISO-2022-JP ... EUC_JP -> ISO-2022-JP
**その他 [#gcf9b9eb]
-unset_linguas ... 文字コードを英語に。dateコマンド使用時...
ページ名: