*趣旨 [#h4a48234]
再び探さなくても良いようにメモします。

*目次 [#k5659dfd]
#contents

*日付を得る [#c80e291e]
`date '+%Y%m%d'`

*ファイルパスからファイル名や拡張子を自由に取り出す [#xee0e691]
紹介URL
http://d.hatena.ne.jp/zariganitosh/20100921/get_file_name_ext_dir

**例 [#j0778d75]
fpath='/a/b/c.d.e'

**ファイル名を取り出す(拡張子あり) [#h6a55448]
fname_ext="${fpath##*/}"
echo $fname_ext
***結果 [#va4bcdd7]
c.d.e


**ファイル名を取り出す(拡張子なし) [#o882e586]
fname="${fname_ext%.*}"
echo $fname
***結果 [#xc41fe49]
c.d


**拡張子を取り出す [#ta5f7bfa]
fext="${fpath##*.}"
echo $fext
***結果 [#o4a009df]
e

**ディレクトリを取り出す [#p70404f3]
fdir="${fpath%/*}"
echo $fdir
***結果 [#w8fd2573]
/a/b

**補足 [#dc1405b9]
-${変数#パターン} 先頭から最短一致した部分を取り除く
-${変数##パターン} 先頭から最長一致した部分を取り除く
-${変数%パターン} 末尾から最短一致した部分を取り除く
-${変数%%パターン} 末尾から最長一致した部分を取り除く

*関数 [#l856e073]
**所感 [#k233f0fa]
同じプロセス内で実行されるので、ディレクトリの移動をおこなうと関数の終了時にカレントディレクトリが変更される。
作業の環境変数自体をなんとかしたい場合にシェルスクリプトをつかうよりも有効なのだろうと思う。

なので、
-環境変数を変えたい単位で関数を用意する。
-変数に応じて汎用的に動く関数を用意する。

という作りが便利なのだろう。


**関数の書き方 [#dc3629c2]
function myfunc() {

}

関数の内部はインデントをつかることで読みやすさが格段にアップする。

*ファイル検索と連携した処理 [#zf7166f3]
ファイルの検索結果に対していろいろ処理をしたい場合、ディレクトリ構造をそのまま保存しての処理がBSD版のcpコマンドでは難しかったりするが、下記のようにwhile read 変数名; do とすることで対処できる。

 find . -type f ! -path "*a.txt" ! -path "*b.txt" ! -path "*c.txt" | while read f; do 
 echo $f
 mkdir -p $mergedir/${f%/*}
 cp -a $f $mergedir/${f%/*}
 done
 echo "ok"

*シェルスクリプトで並列実行 [#d8499827]

**参考元 [#ce3b99d7]
http://www.bulkitem.com/2011/09/blog-post.html

**コード例 [#n79f0a8a]
 #!/bin/sh
 
 curl -O 'http://domain/1.jpg?1'  & # 1M程度の画像
 PID=$!
 curl -O 'http://domain/2.jpg?2'  & # 1M程度の画像
 wait $PID
 wait $!
 
 echo "END"

**history [#r5a8253c]
コマンドの履歴を重複を削って並べる
 history | awk '{ $1=""; print $0}'|sort|uniq
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS