BASH

Advanced Bash Scripting Guide

Advanced Bash Scripting Guideというものを見つけました。manには書かれていない関数などがたくさん書かれています。例えば、文字列検索(照合;match)などを、BASH_REMATCH を利用してちまちま作ってましたが、ものによっては、「expr match」、「expr index…

ASCIIコード

bashのprintf関数で文字のASCIIコードの取得や文字への変換をします。鍵となるのは「¥’A」という表記。これは、シングルクォートでも、ダブルクォート「¥”A」でも良いようです。本当は、’とか”ですが、エスケープさせるために¥が必要らしいです。参考:…

TrueType font の情報

7/10 訂正 元の記事はPANOSEのガイドを読み進めるうちに、ちょっと怪しいということがわかり始めてきました。 元の記事がいい加減だったのは間違いないですが、そもそも、ttfdumpは、Family Kindに対応していないということを知らなかったということです。 P…

bash -x

bashのスクリプトをトレースしながら実行するオプション。 $ bash -x script.sh あるいは、スクリプトの先頭に #! /usr/bin/sh -x 以上

svn:ignore

症状 svnでignoreを設定したいのです。 working-copy repository TestApp/ root/ ├ dist/ ├ branches/ ├ obj/ ├ tags/ ├ include/ └ trunk/ ├ resources/ ├ resources/ └ src/ └ src/ 左側がワーキングコピーのフォルダ構成で、obj/ はコンパイルの中間ファ…

svn:externals

症状 svn(cli)の propset ではリポジトリに直接外部依存が設定できません*1。素直に考えた propset による方法は、次のようになりそうですが、エラーになります*2。 svn propset svn:externals '^/../Lib/trunk lib' file:///F:/SVN/App/trunkSVNのフォーラ…

cygwinでフルパス

症状 ファイルのfullpathが欲しい時に、よくやるのが「cd、pwd、basename・・・」というスクリプトで書くらしいけど、ちょっと面倒。 対策 「readlink.exe」を使う。これだけ。「canonical path*1」で調べて見つけました。ファイルが存在しなくてもフルパス(…

ログはUTF8にこだわる

特にUTF-8でなくて、SJISでもいいですけど・・・ $ echo "$(LANG=ja_JP.utf8 date +%c):$(echo "ログします"|iconv -t UTF-8)" 2011年04月20日 12時34分56秒:ログします

BASH_REMATCH

障害 bashの正規表現(regexp)パタンマッチにはglobalマッチがないキャッチできるとは限らない">*1。 対策 whileループで実現できました。 #! /usr/bin/sh find . -type f -path "*.ts" | { while read f do echo "$f" subject="$f" pattern='@([a-zA-Z]+)=?(…

一時ファイルの一掃

"clean up temporary files"から拝借。 #! bash # # 終了時処理 # http://www.linuxjournal.com/content/use-bash-trap-statement-cleanup-temporary-files # declare -a on_exit_items function on_exit { for i in "${on_exit_items[@]}" do eval $i done …

while-read loop

障害 次のコードは find の処理でよく使われる典型的な手法です*1。 find . -type f -path "*.ts" | { while read f do echo "$f" done } うまく行きますし、保守しやすいコードなので、多用しています。ところが、次のコードはうまく行くように見えますが、…

regtoolなど

症状 cygwin用の自作シェルスクリプトなどを新規インストールしたOSに引越し。「permission denied」、「アクセスが拒否されました」などのセキュリティ関係のエラー発生。特に、regtoolを使用したスクリプトはエラーになりました。また、所属グループがNone…

CMスキップ

mplayer用のCMスキップのためのEDLを作成するスクリプトです.公開はしますが,エンコードに利用するのは危険です.自分自身も現在は視聴時のみに利用し,エンコードには使っていません.録画した 24シーズン7 では,上手いことCMスキップで視聴はできました…

MediaInfo(CLI+GUI)

MediaInfoにはGUI版とCLI(コマンドライン)版があります.このページからダウンロードできます.GUI,CLIを共存させるためには, まずは,GUIをダウンロードして,先にインストールしておきます CLIをダウンロードして,ZIP展開します 展開されたCLIのフォル…

空白終わりのフォルダ

障害 Windows7のエクスプローラでは,フォルダ名が空白で終わると削除できなくなりました.全角空白終わりの場合はリネームできなくなります。 対処 cygwin(bash)からrmdirで削除します.あるいは、mvします。 $ rmdir "末尾に全角空白 " $ mv "末尾に全角空…

動画サムネイル作成

いまやエクスプローラのアイコン表示を使えば事足りていますが,サムネイル作成には,ちょっとコツが必要なので,保存・公開. #! /usr/bin/sh exts="*.ts *.avi *.mpeg *.mp4" for f in $exts do if [[ ! -f "$f" ]]; then continue; fi png=${f%%.*}.png m…

動画,パラパラ漫画相互変換

動画からフレーム画像を切り出す方法とその逆. 動画からパラパラ漫画へ $ mplayer.exe foo.avi -ss 2:05 -vo png -frames 750 -nosound foo.aviの2分5秒からpng形式で750フレーム切り出し,その際消音で.00000001.png〜00000750.pngの形式でPNG画像が生成…

前日のスクリプトの修正

ニュース ファイナル 2010 1014 2305.0000.0002.ts のような形式のファイル名が出てきたため. #! /usr/bin/sh # # 動画ファイル名称の標準形を返します. # # ニュース ファイナル 2010 1014(木).ts # ################################## # 関数 # functio…

down-steps.shの改良

10/13の記事で,フォルダ階層を再帰的に下るスクリプトを書きました.コアとなるスクリプト部分は次のようでした. find . -type f -a -path "*.ts" -exec $1 {} \; 複数の引数を受け取るには,次のようにします. find . -type f -a -path "*.ts" -exec $1 …

標準ファイル名称への変換

問題 録画したTSファイルや変換した動画ファイルの名称の形式がバラバラなので統一させたいなぁと思います. 経緯 これまでに作成したバッチでは対処できないファイル名称があちらこちらにありました.変則的なファイル名称があちこちに散在しているという,…

TSファイル名に曜日を振り直す

課題 地デジで録画したファイルなどに曜日を付加したい. 当初ファイル名称には曜日を付加していませんでしたが,曜日があると視認しやすいので,最近では付加するようにしています.例えば次のような感じです. 曜日なし ニュース ファイナル 2010 1014 230…

TSファイルをフォルダに振り分ける

問題 地デジTSファイルをHDTVtoMPEG2などで編集すると連番のファイルが複数作成されます.週末などに溜まったTSファイルを整理しようとすると,いくつもの番組名を持つ連番化された多量のTSファイルがフォルダに溢れかえるという事態になります.これを番組…

TSバッチ変換

bash+mencoder+cygwin のTS変換用シェルスクリプト.TSからXVIDに変換する.当然「私家版」,つまりは書き換え必至.自分でも必要に応じて書き換えながら使っています.それ故に,たまに後戻りできなくなるので,ここに保存を兼ねて公開. #! /usr/bin/sh # …

cygwin+chere

問題 Win7のエクスプローラ(explorer)にbashを起動するコンテキストメニュー(context menu)を設定したかったのですが・・・ 経緯 PowerShellにはフリーの設定ツールがあまた在るので、bash用をと探してたのですがなかなか見つからぬまま、 レジストリに登録…

CygwinがPINできない

Win7でも相変わらず(今後暫くは?)Cygwinを使うつもりなのですが、Win7のタスクバーにCygwinが入れられないという事態となりました(「.bat」だから?)。原因はいざ知らず、クイックランチャ(quick launch)を復活させることで、従来のようにタスクバーに納める…

for-vspx3.ps1

(やっぱり,PowerShellだとまどろっこしいので,最近は専ら,cygwinに逆戻り,そしてまた,「chere」を設定したので,使いやすさ倍増だし・・・) 昨日の記事「地デジTSファイルの編集」をバッチ処理するスクリプトを作成。PowerShellで初めて書いたので、C…

WindowsXPにCygwin

(今更)WindowsXPをインストールしました。XPのインストール先は、「D:\WINDOWS」。「C:\WINNT」にはWindows2000がインストールされてます。すでにインストール済みで、W2Kで使っていたCygwinをXPからも使いたかったのですが、問題が起きました。 症状 「cd…