趣旨

再び探さなくても良いようにメモします。

目次

日付を得る

`date '+%Y%m%d'`

ファイルパスからファイル名や拡張子を自由に取り出す

紹介URL http://d.hatena.ne.jp/zariganitosh/20100921/get_file_name_ext_dir

fpath='/a/b/c.d.e'

ファイル名を取り出す(拡張子あり)

fname_ext="${fpath##*/}" echo $fname_ext

結果

c.d.e

ファイル名を取り出す(拡張子なし)

fname="${fname_ext%.*}" echo $fname

結果

c.d

拡張子を取り出す

fext="${fpath##*.}" echo $fext

結果

e

ディレクトリを取り出す

fdir="${fpath%/*}" echo $fdir

結果

/a/b

補足

関数

所感

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

なので、

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

関数の書き方

function myfunc() {

}

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

ファイル検索と連携した処理

ファイルの検索結果に対していろいろ処理をしたい場合、ディレクトリ構造をそのまま保存しての処理が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"

シェルスクリプトで並列実行

参考元

http://www.bulkitem.com/2011/09/blog-post.html

コード例

#!/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

コマンドの履歴を重複を削って並べる

history | awk '{ $1=""; print $0}'|sort|uniq
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS