Shell script to replace a part of filenames

I came across a situation I want to change a part of filenames.
I have many nvXXXX.nii files, and I want to change it to n1vXXXX.nii.
Below is the shell script I came up with.
The point is using sed.

#!/bin/bash
# A script to change a part of filenames.
for FILE in $*
do
  echo $FILE | sed -e "s/nv/n1v/" # This is optional. I just want to display the filenames on the monitor.
  mv $FILE `echo $FILE | sed -e "s/nv/n1v/"`
done

The below might be better if I want to use the new filenames as some variables.

#!/bin/bash
# A script to change a part of filenames.
for FILE in $*
do
  echo $FILE | sed -e "s/nv/n1v/"
  NEWFILE=`echo $FILE | sed -e "s/nv/n1v/"`
  mv $FILE $NEWFILE
done

openSuse 11.1 で Scan Snap S510は使えるか?

*昔に書いた内容ですが、検索でひっかかることが多いようなので、再度アップします。

確定申告の時期で、いろいろな書類のコピーをとるためにScansnapが大活躍しています。

Scansnapを導入したとき、Windowsマシンに様々なドライバをインストールしなければいけなかったので、Linuxでは使えないだろうなぁと勝手に思っていました。

しかし、何気なく”scansnap Linux”でググってみたところ、ubuntuでXSANEを使うとできちゃうみたいなことが書いてある記事を発見しました。

そこで、opensuse 11.1でできるかどうか確認。

xsaneのインストールの確認
YAST -> ソフトウェアの管理 -> xsaneで検索してみると、自分のマシンにはインストールされていました。

scansnap S510をつないでみる。
WindowsマシンにつながれていたS510のUSBコードをLinuxマシンに差し替えます。

どのように認識されるか確認
lsusb でUSBデバイスのリストを一覧で表示できます。

こんな出力がされました。

$lsusb

Bus 005 Device 002: ID 04c5:1155 Fujitsu, Ltd

対応の確認
次の2通りの方法があるかと。

SANEのサイトで確認
http://www.sane-project.org/sane-mfgs.html#Z-FUJITSU

ここには、

S510 USB 0x04c5/0×1155 Good workgroup, current, no TWAIN driver fujitsu
(1.0.55) sane-fujitsu
とかかれています。きちんと動きそうです。

/etc/sane.d/fujitsu.confを確認
$less /etc/sane.d/fujitsu.conf

最後の行にS510があります。

#scansnap S510
usb 0x04c5 0×1155

きちんと動きそうです。

xsaneの起動
メニューから、グラフィックの中にxsaneがあるので、それから起動。

感動したのが、ADFが両面も選べるようになっていること。

(ただし、その場合は、スキャン枚数(一番上の項目)を2以上に設定しなければいけません。)

ScanSnap本体の緑色ボタンは使えないものの、xsane経由で、普通にScansnapが使えるようになりました。

これで、Windowsに依存しなければいけない要素がまた一つ減りました。

それにしても、最近のLinuxは便利になりましたね。

Neurodebianのミラーサイト

このブログでも今までに紹介し、そしてLin4Neuroでも採用させていただいてきたNeurodebianですが、開発者のYarsolav Halchenkoといろいろやりとりした結果、日本でミラーサイトを立ち上げました。最近はファイルサイズの大きなものもありますので、日本からの場合、このミラーサイトを使っていただいたら、ダウンロード時間を短縮できる可能性があります。

方法を簡単に説明します。

まず、http://neuro.debian.netにいきます。

トップページにある、”How to use this repository”を見ます。

そこに、下図にあるような感じでDebianかUbuntuのリリースとダウンロードサイトを選ぶドロップダウンメニューが出てきます。

そこに出てくる2行を端末にコピペします。Ubuntu 12.04の場合は以下の2行になります。

wget -O- http://neuro.debian.net/lists/precise.jp | sudo tee etc/apt/sources.list.d/neurodebian.sources.list
sudo apt-key adv --recv-keys --keyserver pgp.mit.edu 2649A5A9

その後、apt-get updateと、apt-get upgradeを行い、さらにapt-get installで必要なソフトをインストールします。

それだけで設定はおしまいです。便利ですよね。

いろいろな画像解析関連ソフトが簡単にいれられますので、どうぞ利用してみてください。
日本語版Lin4Neuroでもこの日本のミラーサイトがデフォルトになっています。

How to install FSL on Ubuntu (up to 5.0.9)

N.B.: This is the old post. If you want to install the latest FSL (5.0.10 and later), you need to use fslinstaller.py.

If you use Debian or Ubuntu, you can install FSL easily using neurodebian repository.
Below is what you need to install FSL.

  1. Add the neurodebian repository
  2. Follow the guideline described here.

  3. update the sources.list
  4.         $ sudo apt-get update
            
  5. install FSL (and related packages)
  6.         $ sudo apt-get install fsl fsl-doc fslview fslview-doc fsl-atlases fsl-possum-data fsl-first-data fsl-feeds dicomnifti libvtk5-dev vtk-examples vtk-doc
            
  7. Add the following line to .bashrc
  8. This is the thing people often forget. Without this, you can’t run fsl from shell.

             . /etc/fsl/fsl.sh
             

    That’s it.

Installing R and JGR on Ubuntu Lucid Lynx

The other day I wanted to install R on Ubuntu. Googling led me to this site, but I found some of them are not up-to-date. In addition, I don’t use Sun-Java but open-JDK. So I needed to change things a little bit.

Below is what I did. Note that I already installed openJDK.

  1. Add an R repository to /etc/apt/sources.list
  2. First, you need to decide a CRAN mirror close to where you live. The list can be found here. Since I live in Tsukuba Japan, I added the following line to /etc/apt/sources.list

    deb http://cran.md.tsukuba.ac.jp/bin/linux/ubuntu lucid/

    Below is the format.

    deb http://my.favorite.cran.mirror/bin/linux/ubuntu lucid/

  3. Obtain the public key of Ubuntu repository
  4. The Ubuntu archives on CRAN are signed with the key of “Michael Rutter
    ” with key ID E084DAB9. You can fetch this key then feed it to apt-key with the following lines.

    $ gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9
    $ gpg -a --export E084DAB9 | sudo apt-key add -

  5. Update the respository
  6. $ sudo apt-get update

  7. Install r-base
  8. sudo apt-get install r-base r-base-dev

  9. Upgrade the repository
  10. By upgrading the repository, r-cran-* will be installed.

    $ sudo apt-get upgrade

    The following should be displayed.

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    The following packages will be upgraded:
    r-base-html r-cran-boot r-cran-class r-cran-cluster r-cran-codetools
    r-cran-foreign r-cran-kernsmooth r-cran-lattice r-cran-mass r-cran-matrix
    r-cran-mgcv r-cran-nlme r-cran-nnet r-cran-rpart r-cran-spatial
    r-cran-survival r-doc-html
    17 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Need to get 12.2MB of archives.
    After this operation, 827kB disk space will be freed.
    Do you want to continue [Y/n]?

  11. Set java configuration
  12. $ sudo R CMD javareconf

  13. Start R environment
  14. $ sudo R

  15. Install JGR inside R environment
  16. install.packages('JGR')

    A GUI will popup asking you to select a mirror to download from. Select the same mirror as before, though it doesn’t matter.

    After installation is completed. Add the library and install the ggplot2 library.

    library(JGR)
    install.packages('ggplot2', dep = TRUE)

    This will take some time.

    After that, you can start JGR by typing

    JGR()

    This will bring up JGR.

    But this is not the end. Please look at the shell carefully, which says,

    Starting JGR run script. This can be done from the shell as well, just run
    /usr/local/lib/R/site-library/JGR/scripts/run

    That means that you don’t have to run R first before running JGR.

    Now I will make a launcher of JGR.

    Right-click of GNOME menu –> “Edit Menu”

    That will pop up Main Menu Dialogue.

    In this case, I want to put the JGR launcher under Science, so click “New Item”

    Then you will see JRG in the menu. Note that I got the made the icon of JGR from the JGR site. I also customized the user interface. The screenshot is the from Lin4Neuro.

UbuntuのカスタマイズLiveCD/DVDにおいて、日本語ディレクトリ名への変更ダイアログを抑制させる方法

Lin4Neuro日本語版の開発において、英語版を元に、日本語版を開発し、Remastersysでリマスタリングを行うと、USBブートの際に下図のダイアログが出てしまう現象に遭遇しました。

この現象をどう解決するかどうか皆目検討がつかなかったので、Ubuntuのメーリングリストに聞いたところ、親切に2つ方法を教えて頂きました。

  1. user-dirs.localeのチェック
  2. 以下、メーリングリストへの投稿からの抜粋です。
    吉田様からアドバイスをいただきました。

    この表示の有無は ~/.config/user-dirs.locale が「存在するかどうか」と、
    「中身が現在のロケールと一致するかどうか」で判定されています。
    (see also: apt-get source xdg-user-dirs-gtkで取得できるupdate.c)
    動作は以下です。
     ・そもそも存在しなければそのまま。
     ・中身が現在のロケールと一致しなければ、アップデートを試みる。
     ・中身が現在のロケールと一致すればそのまま。
    英語表示にすると、このファイルの中身は「C」とだけ書かれたファイルになるので、
    日本語環境で起動すると次のような動作になります。
     1) user-dirs.localeの中身をチェック。
     2) user-dirs.localeの中身が「C」なので、現在のロケール(ja_JP)と違うので、
      アップデートダイアログを表示。
    ここで期待の挙動にするには、次の二つの方法があります。
     ・中身として「ja_JP」とだけ書いたものを置く(現在のロケールと同じなので
      問題のダイアログの表示が抑制される)
      # 改行を含めず、単に「ja_JP」と書いた5バイトのファイルを置く。
     ・そもそも削除する(「Don’t ask me this again」した状態と同じ)
    ホームディレクトリをどのように構成されているのかにもよるのですが、
    まず /etc/skel に .config/user-dirs.locale がないか見てみて、存在するなら
    (存在する場合の期待は中身「C」なので)中身「ja_JP」にする、というのが
    手早いような気がします。

    実際、user-dires.localeを見ると、en_USとなっていたので、これをja_JPにしたところ、問題はあっさり解決しました。

  3. 自動起動するアプリの設定
  4. これもMLの投稿からの引用です。
    西山様からアドバイスをいただきました。

    まず「設定」の中の「自動起動するアプリ」で
    「ユーザ・フォルダの更新」のチェックを外せば
    そのユーザでは出てこなくなります。
    その設定は
    ~/.config/autostart/user-dirs-update-gtk.desktop
    に残っていて、このファイルを
    /etc/xdg/autostart/user-dirs-update-gtk.desktop
    にコピーすればシステム全体で無効にできます。
    違いは
    X-GNOME-Autostart-enabled=false
    だけのようなので、直接
    /etc/xdg/autostart/user-dirs-update-gtk.desktop
    に書き加えても良いと思います。

誰かの役にたつかもしれないので投稿しておきます。

Ubuntu 10.04 (Lucid) 以降でsplash画面をカスタマイズしたいとき… (plymouthの使い方)

Ubuntu 10.04になってからsplash画面を制御するのがplymouthというものになったようです。
これを用いてsplash画面をカスタマイズするのに難渋したので備忘メモ。
kubuntuのsplash画面がカスタマイズするのにいい勉強になったので、kubuntu-logoというテーマをもとにカスタマイズしています。
*なお、この方法は、12.04でも有効でしたので、タイトルを修正しました。

  1. *.script, *.pngなどが入っているテーマを見つけます。
  2. といってもそれはすぐにはわからないので、とりあえず、apt-cache searchでテーマを見つけます。

    $ sudo apt-cache search theme

  3. 適当にテーマをインストールしてみます。
  4. 上述のように、カスタマイズしやすかったのが、kubuntuのテーマでした。

    $ sudo apt-get install plymouth-theme-kubuntu-logo

  5. テーマは/lib/plymouth/themeの中にインストールされます。なので、そこに移動します。
  6. $ cd /lib/plymouth/themes/kubuntu-logo

    テーマの中身は以下のようになっています。

    $ ls
    kubuntu-logo.plymouth password_field.png progress_dot_on.png
    kubuntu-logo.script password_field16.png progress_dot_on16.png
    kubuntu_logo.png progress_dot_off.png kubuntu_logo16.png
    progress_dot_off16.png

    ここで、
    kubuntu-logo.script: これをカスタマイズしていきます。
    kubuntu-logo.png: splash画面での真ん中に現れる”kubuntu”のロゴ画像です。
    progress_dot_*.png: 起動時にロゴの下で点滅するドットの画像です。
    ここでは、scriptをいじって背景の色を変えてみて、そしてlogoの画像を変更し、dotの画像の色を変えることでカスタマイズすることとしました。

  7. scriptの中身をいじります。背景の色は以下をいじります。
  8. ( )内にある3つの数値はそれぞれRGBを表し、0と1の間の数値を指定するのだそうです。TopColorは画面の一番上で、BottomColorは画面の一番下で、上から下に向かってグラデーションがかかっていくことになります。

    Window.SetBackgroundTopColor (0.00, 0.28, 0.45);
    Window.SetBackgroundBottomColor (0.00, 0.28, 0.45);

  9. splash画面に表示させたい画像は以下で指定します。
  10. 従って、自分で画像を用意して、下のファイル名を変更すればいいことになります。

    logo_filename = "kubuntu_logo.png";

  11. 起動時に点滅するドットは以下で規定されています。これも元画像をもとに、色を変えればいいことになりますね。
  12. progress_dot_off_filename = "progress_dot_off.png";
    progress_dot_on_filename = "progress_dot_on.png";

  13. プレビュー
  14. 以上のところをいじってあげたら、プレビューします。プレビューには、以下の方法がいいかと思います。

    $ sudo plymouthd #plymouthのデーモンを立ち上げます。
    $ sudo plymouth --show-splash

    ちなみに終わるときは、sudo plymouth –quitです。

  15. 変更を反映させる(ここがキモ)
  16. Splashの変更を反映させます。ここは忘れがちなのであえて書いておきます。initramfsなるものをアップデートする必要があります。

    $ sudo update-initramfs -u

    これで、次回からsplash画面が変更されます。

    上記だけでは、テーマを変えたときに他に変わってしまいます。
    自分のものとしてきちんとインストール方法は以下にあります。

    https://forums.ubuntulinux.jp/viewtopic.php?pid=77654

    23/July/2012追記: 上記のリンクはよく参照するので、以下に転載します。

    plymouthのテーマは1から作るのは大変なので、既存のテーマを変更する方法がいいです。
    まず、ベースにするテーマをインストールします。全画面自作画像が良ければplymouth-theme-sabilyパッケージがおすすめです。(以下このパッケージを元に説明します)

    $ sudo apt-get install plymouth-theme-sabily

    インストールしたテーマは/lib/plymouth/themes/sabily内にあります。このフォルダをコピーして、コピー先を編集するようにします。

    $ sudo cp -R /lib/plymouth/themes/sabily /lib/plymouth/themes/mytheme
    $ gksu nautilus /lib/plymouth/themes/mytheme

    bg_2560x1600.png: 背景画像(PNGでなければなりません。GIMPなどで変換してください。サイズがあまり大きくならないようにしましょう。)
    sabily-logo.png: 中央に表示されるロゴ。この下に点滅する点が表示されます。
    sabily.plymouth: 名前をmytheme.plymouthなど、分かりやすいように変えておきます。
    (画像など、他のファイルの名前も変えていいですが、その場合はsabily.scriptやsabily.plymouthの中身も編集する必要があります。)

    一通り編集したら、次のコマンドにより自作テーマをインストールします。

    $ sudo update-alternatives --install /lib/plymouth/themes/default.plymouth default.plymouth /lib/plymouth/themes/mytheme/mytheme.plymouth 100

    この段階ではインストールされただけで、テーマの変更は行われていません。表示されるテーマの変更は次のコマンドにより行います。

    $ sudo update-alternatives --config default.plymouth
    番号の入力を求められるので、自作テーマのファイル名が書かれた行の先頭にある番号を入力し、Enterキーを押してください。

    これで完了です。
    以下の方法により再起動せずにテーマの確認を行えます。
    まず、plymouth-x11をインストールします。

    $ sudo apt-get install plymouth-x11

    plymouthデーモンの起動、表示、終了は以下のとおりです。

    $ sudo plymouthd
    $ sudo plymouth show-splash
    $ sudo plymouth quit

wodim (旧cdrecord) を用いてisoイメージをCDに焼く方法

LinuxでisoイメージをCDやDVDに焼きたいとき、簡便な方法があります。
シェルからwodimを使う方法です。
以前は、いろいろ確認することも必要だったようですが、改めてmanページを見たら、もっとシンプルにできるのではないかと思いました。

インストールは以下で簡単にできます。

sudo apt install wodim

今、hogehoge.isoというファイルがあったとします。これをCDに焼きたいとすると…

  1. もっともシンプルな方法
  2. hogehoge.isoがあるディレクトリにいきます。
    そこで、これを打つだけ。

    $ wodim hogehoge.iso
    

    そうすると、自分の環境ではこんなメッセージが出てきました。

    wodim: No write mode specified.  #書き込みモードが特定されていないよって注意されていますね。
    wodim: Asuming -tao mode.    # -taoモードでいくよと。Track at Onceの略ですね。
    wodim: Future versions of wodim may have different drive dependent defaults.
    wodim: Operation not permitted. Warning: Cannot raise RLIMIT_MEMLOCK limits.Device was not specified. Trying to find an appropriate drive…
    Looking for a CD-R drive to store 696.71 MiB… #書き込みデバイスが特定されていないので、いいものを見つけにいくよと。
    Detected CD-R drive: /dev/cdrw  #いいCD-R driveを見つけてくれたようです。
    Using /dev/cdrom of unknown capabilities
    Device type : Removable CD-ROM #以下、自分のCD-Rドライブの説明をしてくれていますね。
    Version : 5
    Response Format: 2
    Capabilities :
    Vendor_info : ‘_NEC ‘
    Identification : ‘DVD_RW ND-3540A ‘
    Revision : ’1.01′
    Device seems to be: Generic mmc2 DVD-R/DVD-RW.
    Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr).
    Driver flags : MMC-3 SWABAUDIO BURNFREE
    Supported modes: TAO PACKET SAO SAO/R96R RAW/R96R
    Speed set to 5645 KB/s
    Starting to write CD/DVD at speed 32.0 in real TAO mode for single session. #32倍速で書き込むよと言ってますね。
    Last chance to quit, starting real write in 0 seconds. Operation starts. #今だったら中止できるよ、どうする?と聞いてきてます。
    Track 01: Total bytes read/written: 730554368/730554368 (356716 sectors).
    

    と、こんな感じでやってくれるのです。GUIを立ち上げてやるよりずっと楽です。

  3. これでうまくいかない場合
    1. ドライブを確認します。
    2. 次のようにコマンドを実行します。

      $ wodim -scanbus
      

      自分のマシンでは、こんな結果がはき出されました。

      scsibus1:
      1,0,0     100) ‘_NEC ‘ ‘DVD_RW ND-3540A ‘ ’1.01′ Removable CD-ROM
      1,1,0     101) *
      1,2,0     102) *
      1,3,0     103) *
      1,4,0     104) *
      1,5,0     105) *
      1,6,0     106) *
      1,7,0     107) *
      

      1,0,0というのがデバイス名になるらしいです。

    3. 書き込みをする場合、次のようにします。
    4. $ wodim dev=1,0,0 speed=8 -v hogehoge.iso
      

      ちなみにspeedで倍速を決定し、-vは「いろいろ表示しなさい」というverboseオプション(個人的にはおせっかいオプションと言っています)ですね。

      もし、ATA接続だった場合、dev=ATA:1,0,0のように書くようです。

Linuxでhomeディレクトリ以下の日本語ディレクトリを英語に変えたい

最近のLinuxディストリビューションでは、日本語版をインストールすると、ホームディレクトリ以下のサブディレクトリが日本語で表示されるようになっています。
これは便利なようでいて、シェルを多用する人にはかなり不便だったりします。

Ubuntu, openSUSEで確認しましたが、以下のような方法で英語に戻すことができます。

$ LANG=C xdg-user-dirs-gtk-update

注意しなければいけないこととしては、スーパーユーザーでなく、一般ユーザーとしてこのコマンドをうつ必要があるということです。
また、既にディレクトリの中にファイルがある場合、英語名でのディレクトリは作成されますが、日本語名のディレクトリは残ります。その中のファイルは手動で移動する必要があります。

また、ときにこれが動かないことがあります。
コマンドを打っても何も反応しないのです。
(その理由ははっきりしないのですが…)
そんなときには、以下のコマンドを打ちます。

$ xdg-user-dirs-update --force

このあと、もう一度

$ LANG=C xdg-user-dirs-gtk-update

とすると、設定ダイアログが出て、英語のディレクトリ名に変更することができます。

Linux上でPNG画像をEPS画像に変換するスクリプト

最近、LaTeXを用いて文章を作る機会が増えています。
画像を入れる際に、EPS画像だと使い勝手がいいのですが、スクリーンショットなどを変換するのにいい方法はないかと思っていました。

ググったところ、こんなページを見つけました。

画像ファイルをepsに変換してLaTeXで使う

これは便利。
早速、とっても小さなスクリプトですが、友人からアドバイスをもらって、一括処理するスクリプトを書いてみました。

#!/bin/sh
for f in $*
do
  convert $f `echo eps2:$f | sed 's/png$/eps/'`
done

これで複数のPNG画像を一括してEPS画像にできるのでとっても便利です。

友人のコメントが勉強になりましたので、それも記載しておきます。

バッククォートで何らかの処理を囲み、その結果として返される文字列を更にシェルで利用する方法は、一度身につけると相当便利に使えるので、オススメです。
たとえば私は以下の処理を、mkdatedir という alias にして使っています。

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

確かにこれは便利ですね。Linuxのシェルを使いこなすコツの一つはバッククォートにあるということですね。

png2eps.shをダウンロード

Installing N3 (mni-n3) on Ubuntu 10.04 (Lucid Lynx) 64bit

Note: This article is pretty old. Now you can install MINC toolkit more easily. Please see the instruction in http://www.bic.mni.mcgill.ca/ServicesSoftware/ServicesSoftwareMincToolKit. (24 Oct 2014)

We have few resources how to install N3 on Ubuntu. I could successfully install N3 (aka mni-n3) on Ubuntu 10.04. I write down what I did.

NB: This is only for 64bit Ubuntu 10.04. They don’t maintain 32bit binary for minc.
The following commands must be executed with root privileges (use sudo) except for the last one.

  1. Add the repository for minc-related software to your /etc/apt/sources.list.
  2. You can do this by adding the following line to the /etc/apt/sources.list.

    #MINC software
    deb http://packages.bic.mni.mcgill.ca/ubuntu-lucid/ ./

    Note: You have to include “./” at the end of the line.

  3. Refresh repository
  4. $ sudo apt-get update

  5. Install N3
  6. Through many trials and errors, I found out that we have to specify the following 4 packages; minc, minc-tools, n3, and libmni-perllib-perl to have n3 work properly. Of course you can install other packages such as mni-autoreg, register, display, or mincblob. (However, I haven’t fully tested about these packages.)

    $ sudo apt-get install libmni-perllib-perl minc minc-tools n3

    Note: Ignore the Warning: “The following packages cannot be authenticated!” and press Y when asked: “Install these packages without verification [y/N]?”

  7. Configure the path
  8. Add the phrase “export PATH=/usr/local/bic/bin:$PATH” in your .bashrc file (located in your home directory). You don’t have to be root doing this.

Now you are ready to use N3 on your Ubuntu 10.04!