一行スクリプト集

一行スクリプトを集めました。

URLエンコード/デコード

URLエンコードするにはこんな感じ

$ echo "兵庫県姫路市" | nkf -MQ | sed 's/=$//g' | tr = % | tr -d "\n"
%E5%85%B5%E5%BA%AB%E7%9C%8C%E5%A7%AB%E8%B7%AF%E5%B8%82

最後のtrで改行を削ってるのは、折り返さないようにするためです。

URLデコードは、nkfの–url-inputオプションを使えば簡単。

$ echo "%E5%85%B5%E5%BA%AB%E7%9C%8C%E5%A7%AB%E8%B7%AF%E5%B8%82" | nkf --url-input
兵庫県姫路市

メールアドレスのドメイン名でソートする

1行1メールアドレスで書かれたテキストファイルをドメイン名をキーにソートします。

sort -t @ -k2 -k 1,1 mailadress.txt

オプションの説明をすると、-tがデリミタになるので「@」を区切りにしています。-kはソートするフィールドです。-k 2でドメイン名のフィールドでソートしますが、前半のローカル部分はソートされないので同時に-k 1,1も指定します。

jamendoのアーカイブをいい感じに展開する

jamendoのファイルはディレクトリなしのZipアーカイブなので、普通に展開するとアチャーな感じになるのでディレクトリを作って展開する。

for i in ~/Downloads/*zip;do unzip ${i} -d $(basename ${i%_---_Jamendo_-_MP3_VBR_192k.zip});done

パーミッションを保ったまま大量のファイルをコピーする

HDDを買ってきて中身を移し替えるとき、パーティションごと移し替えるならgpartedでパーティションごとコピーするだけで終わるけど、パーティションのファイルシステムを変更して移し替えるにはファイルをコピーするしかない。 cpでaオプションをつけるてコピーすると( cp -a hoge/ fuga/ みたいな感じ)パーミッションやタイムスタンプそのままコピーできるけど、むちゃくちゃ遅い。 ということで、tarを使ってコピーしてみた。

tar cvf - -C (コピー元ディレクトリ) .  | tar xpf - -C (コピー先ディレクトリ)

ddで分割しながらイメージを切り出す

days of speed(2009-10-22)より。 ddで切り出した20GBのファイルをパイプに流してサブシェルの先で4GB(4096M)ごとに分割。

dd if=20GB.image | ( dd of=4GB-1st.image bs=1M count=4096 ; dd of=4GB-2nd.image bs=1M count=4096 ; dd of=4GB-3rd.image bs=1M count=4096 ; dd of=4GB-4th.image bs=1M count=4096 ; dd of=4GB-5th.image bs=1M count=4096 )

sedでファイルを直接書き換える

GNU sedでは-iオプションをつけるとそのまま書き換える。

  -i[接尾辞], --in-place[=接尾辞]
                 ファイルをその場で編集 (拡張子があれば、バックアップを作成)

大文字のファイル名を小文字のファイル名に変換

for file in ./*; do mv $file `echo $file | tr '[A-Z]' '[a-z]'` ; done

tarの中身を見る

tar tf (アーカイブ名) | less

IEEE1394 DVカメラからキャプチャしつつリアルタイムにMPEG4(xvid/aac)にエンコードする

IEEE1394 DVカメラからキャプチャをしつつ、リアルタイムにISO MPEG4でエンコードします。 1時間が90MB前後になるので、ファイルの大きさの制限はあるけど時間には制限が無い動画投稿サイトの投稿用データには適しているかと思います。

できあがる動画: ISO MPEG4(xvid/aac)、サイズ320×240、フレームレート12fps、モノラル 96kbps。

#!/bin/bash
dvgrab -f raw - | ffmpeg -f dv -i - -f mp4 -vcodec libxvid -vtag mp4v -qscale 6 -r 12 -s qvga -acodec libfaac -ab 96k -ac 1 video-`date +%Y%m%d%H%M%S`.mp4

ウィンドウをキャプチャと同時に不要なところをカット

Image Magickのimportコマンドでキャプチャする時に不要なところをカットする。

import -crop ()x(高さ)+(左からのカットしたいピクセル)+(上からカットしたいピクセル) fuga.png

bin/cueなCDイメージを扱う

bchunkを使う。 使い方は

bchunk <image.bin> <image.cue> <basename>

もしイメージファイルがCDなら「-w」オプションをつけることで WAVでファイルに書き出してくれます。

wma/shn/flac/m4a/aacをmp3に変換

wmaをmp3に変換

for i in ./*wma; do mplayer "$i" -ao pcm -vc null -vo null ; lame --alt-preset standard audiodump.wav "`basename "$i" .wma`.mp3" ; rm ./audiodump.wav ; done

shortenをmp3に変換

shortenはflacに変わる前、ライブの配信に使われていた可逆圧縮の音声ファイル。 くわしくは、http://www.etree.org/linux.htmlを参照。

for i in ./*shn; do shntool cat "$i" |  lame --alt-preset standard - "`basename "$i" .shn`.mp3" ; done

flacをmp3に変換

for i in ./*flac; do flac -dcs "$i" |  lame --alt-preset standard - "`basename "$i" .flac`.mp3" ; done

m4a/aacをmp3に変換

for i in ./*m4a; do faad -w "$i" |  lame --alt-preset standard - "`basename "$i" .m4a`.mp3" ; done