漸くBashの感じが掴めてきた。特に汎用性の高いファンクション群を纏めることで、再利用が効率的になると思った。
取り敢えず、次のスクリプト・ファイル、「$HOME/myBash/My_Utilities」を作成した。
これらのユーティリティを使って当面の課題である「Time Machine」の手動バックアップ・スクリプトは書けそうだ。でもbashに突き進むより、zshやPythonに移行するのが善いと思えるようになってきた。
いずれにしろ正規表現は本腰をいれて練習をせねば...。
ーーーー
このポストの履歴
取り敢えず、次のスクリプト・ファイル、「$HOME/myBash/My_Utilities」を作成した。
#!/bin/bashなお、「.bshrc」に次の行を追加した;
###################################################################
# 目的:このユーティリティ・ファイルに、小さな関数群を纏めておく。 #
# 開始: 2012-06-14 (木) 10:00 #
###################################################################
#
# 要件: ~/.bashrcに、下記を追加する。
# 「. myBash/My_Utilities」
# 「myBash」は$HOMEの直下で$PATHが通っている。
#
# 使い方:
# 通常の関数としてコール
# 引数は個別の「利用」を参照。
# 作り終えたら、ClipMenu → my用語 →「関数説明の雛形」を用いて説明する。
#
###################################################################
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# My_Home #
#機能: show "Users home directory"
#利用:引数はなし。"$HOMO"と同じだった。;-P)
# 1) MyHome(ret)
# 2) cd `MyHome`
#
#効能: スクリプト中で「~」を使うと「/var/なんとか」に飛ばされるので。
#
#制作:
# 1) 開始 2012-06-14 (木) 10:42 by mNeji
#
#------------------------------------------------------------------------#
My_Home()
#------------------------------------------------------------------------#
{
echo /Users/$( whoami )
}
#------------------------------------------------------------------------#
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# My_LogTouch #
#機能: $HOMEの下のディレクトリ;引数のDirectoryName(無ければ作り);の配下に、
# 現在のタイムスタンプ名の.logをtouchする。
#具体例:
# $MyLogTouch abc
# $cd ~/ab
# $cd ~/abc
# $ ll
# total 0
# -rw-r--r-- 1 u1 staff 0 6 14 18:22 2012-06-14-182257.log
#:
#依存: My_Date2
#
#制作:
# 1) 開始 2012-06-14 (木) 19:08 by mNeji
#
#------------------------------------------------------------------------#
My_LogTouch()
#------------------------------------------------------------------------#
{
# Usage: MyLogTouch DirectoryName
# touch YYYY-MM-dd-hhmmss.log
#
# DirectoryName: Relative to $HOME
#set -x
local dn="$HOME/$1"
#
# Check and Make Directory $dn
#
if [ -d "$dn" ]
then
#echo "alredy exist $dn"
:
else
# echo "not exist $dn"
mkdir $dn
ls -l $HOME | grep $1
fi
#
# fileN
#
local fileN=`My_Date2`.log
echo $dn/$fileN
touch $dn/$fileN
echo "---> touchd `ls $dn/$fileN`"
}
#
#------------------------------------------------------------------------#
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# My_Date #
#-----------------------------------
# 表示: "2012-06-15(金)15:48:03"
#
#-------------------------
#制作:
# 1) 2012-06-15(金)15:48:03 by mNeji
#
#------------------------------------------------------------------------#
My_Date()
#------------------------------------------------------------------------#
{
date +'%Y-%m-%d(%a)%H:%M:%S'
}
#
#------------------------------------------------------------------------#
####################################################################
# My_Date2 #
#-----------------------------------
# 機能:# Output: "YYYY-MM-DD-hhmmss"
#
#-------------------------
#制作:
# 1) 2012-06-14 (木) 19:23 by mNeji
#
#------------------------------------------------------------------------#
My_Date2()
#------------------------------------------------------------------------#
{
date +'%Y-%m-%d-%H%M%S'
}
#
#------------------------------------------------------------------------#
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
# My_UtilsList #
#-----------------------------------
# 機能:
# 「~/myBash/MyUtilities」中の関数名だけの行をリストする。
## 関数名の定義として
## 行頭に、#,数字は無く
## 行尾に、()がついている
#
#------------------------
# 具体例:
# $ MyUtilsList(ret)
#
#
#-------------------------
#制作:
# 1) 開始 2012-06-15 (金) 00:38 by mNeji
# 2) 追加 2012-06-15 (金) 12:51 sort
#------------------------------------------------------------------------#
My_UtilsList()
#------------------------------------------------------------------------#
{
cat $HOME/myBash/My_Utilities | grep \(\)$ | grep ^[^#] | sort
}
#
#------------------------------------------------------------------------#
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# 次のスクリプト予定地
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Bashの立ち上げ表示スクリプト
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
# ターミナル.appが開く毎に、.bashrcから呼びさされる。
# 制作:2012-06-15(Fri)16:04:31
echo "`My_Date` Functions are ready at 'My_Utilities';"
echo "--------------------------------------------------------------------"
echo $(My_UtilsList |sed 's/\(\)..$/, /')| sed 's/,$/./'
echo "--------------------------------------------------------------------"
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
#MyHome
#MyDate2
#MyLogFile abc
#test() grep \(\)$
#test()
#1abc()
#xyz()
# Read the MyUtiliteis directory within current shell新しいターミナルを開き、動作の確認をした;
. myBash/MyUtilities
Last login: Fri Jun 15 16:11:40 on ttys006今後、関数群を製作する毎に、「$HOME/myBash/My_Utilities」に追加して、「$ My_UtilsList」コマンドで関数群のリストを出せる訳だ。
2012-06-15(Fri)16:13:01 Functions are ready at 'My_Utilities';
--------------------------------------------------------------------
My_Date, My_Date2, My_Home, My_LogTouch, My_UtilsList.
--------------------------------------------------------------------
u1@div-mmX74:~ $
u1@div-mmX74:~ $ My_Date
2012-06-15(金)16:13:17
u1@div-mmX74:~ $
u1@div-mmX74:~ $
u1@div-mmX74:~ $ My_Date2
2012-06-15-161332
u1@div-mmX74:~ $
u1@div-mmX74:~ $
u1@div-mmX74:~ $ My_Home
/Users/u1
u1@div-mmX74:~ $
u1@div-mmX74:~ $
u1@div-mmX74:~ $ My_LogTouch abc
/Users/u1/abc/2012-06-15-161415.log
---> touchd /Users/u1/abc/2012-06-15-161415.log
u1@div-mmX74:~ $
u1@div-mmX74:~ $
u1@div-mmX74:~ $ My_UtilsList
My_Date()
My_Date2()
My_Home()
My_LogTouch()
My_UtilsList()
u1@div-mmX74:~ $
u1@div-mmX74:~ $
u1@div-mmX74:~ $
これらのユーティリティを使って当面の課題である「Time Machine」の手動バックアップ・スクリプトは書けそうだ。でもbashに突き進むより、zshやPythonに移行するのが善いと思えるようになってきた。
いずれにしろ正規表現は本腰をいれて練習をせねば...。
ーーーー
このポストの履歴
- 開始: 2012-06-15-01:22(JST)
- 修正: 2012-06-15 (金) 16:23