再び探さなくても良いようにメモします。
`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 | awk '{ $1=""; print $0}'|sort|uniq
find . -name "*.csv" | xargs grep -l test | ruby -i -ep 'gsub!(/test/,"tttt")'
http://d.hatena.ne.jp/Hoshi-KN/20120129/1327834914
#!/bin/sh
path_tool1=/opt/tool1 #PATHに上記のpath_tool1で指定したパスがあれば削除 if [ `echo $PATH | grep -e $path_tool1` ] ; then PATH=`echo $PATH | sed -e "s@$path_tool1:\{0,1\}@@"` export PATH fi unset path_tool1
path_tool2=/opt/tool2 #PATHに上記のpath_tool2で指定したパスがなければ追加 if [ ! `echo $PATH | grep -e $path_tool2` ] ; then PATH=$path_tool2:$PATH export PATH fi unset path_tool2
DATE=`date +'%Y%m%d-%H%M'`
function foo() { local arrayname=$1 eval ref=\"\${$arrayname[@]}\" local list=( ${ref} ) for i in "${list}"; do echo "${i}" done } hoge=( 'xxx' 'yyy' 'zzz' ) foo hoge
小粋空間