Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2008年10月27日月曜日

lessの文字化け このエントリーを含むはてなブックマーク

本記事では、ターミナルでlessで日本語の文字化け対策についてまとめる。

lessはファイルを読み込むためによく使うコマンドだが、デフォルトでは日本語のテキストは文字化けしてしまう。代わりにlvコマンドを使えば良い。

~/.bashrcに次の行

alias less='lv'
を挿入して、lessのエイリアスをlvとしておく。

こうすると、(代わりにlvが実行されるので)今まで通りlessと入力してファイルの閲覧ができる。

2008年10月26日日曜日

外付けHDDのパーティション・マウント・所有権の設定 このエントリーを含むはてなブックマーク

本記事では、Ubuntu 8.04の導入されたPCに外付けHDDをUSB接続して、パーティションを切り、マウントポイントの登録、一般ユーザがアクセスできるように所有権の変更など一連の作業をまとめる。

背景

私はUbuntuのバックアップを外付けHDDにとろうと思い、試したところうまくいかず試行錯誤を繰り替えしてしまった。その一番の原因は以下の通りであった。バックアップは、rsyncという同期をとるツールを使って自動的にバックアップをとる仕組みをスクリプトで書こうと試みた(本記事の末尾に、スクリプトの載せている)。

設定は、ノートPCにインストールしているUbuntuのhome, etc, var, usr/localといったディレクトリ以下をUSB接続の外付けHDDにバックアップをとることである。実際にスクリプトを動かせてみると、ほとんどすべてのファイルが下のような

chown ・・・・:Operation not permitted

というエラーによって失敗してしまった。

エラー出力は以下の通りである:

2008/10/26 20:12:38 [6028] rsync: chown "/media/tstar/200810backup/home/waterman/.cache/audacious/thumbs/.Classic1.3.png.x3IqDy" failed: Operation not permitted (1)
2008/10/26 20:12:38 [6028] >f+++++++++ home/waterman/.cache/audacious/thumbs/Default.png
2008/10/26 20:12:38 [6028] rsync: chown "/media/tstar/200810backup/home/waterman/.cache/audacious/thumbs/.Default.png.WEqFI6" failed: Operation not permitted (1)
2008/10/26 20:12:38 [6028] >f+++++++++ home/waterman/.cache/audacious/thumbs/Ivory.png
2008/10/26 20:12:38 [6028] rsync: chown "/media/tstar/200810backup/home/waterman/.cache/audacious/thumbs/.Ivory.png.pEaHOE" failed: Operation not permitted (1)

おそらく「バックアップ先に転送しようとしたけれど、アクセス権がないのでできません」らしいことは分かる。もちろん、sudoを使ってルート権限を持った状態でコマンドを実行しているのにである。これを解決するために、1ステップづつ試してみた結果を以下にまとめる。

(注)同じ症状でうまくバックアップをとれないという報告がUbuntu Forumsなどで見られたが、直接 解決につながる報告を見つけることができなかった。

HDDをfat32でパーティションを切る。

何が原因なのかよく分からないので、一度まっさらな状態にしてゼロから確認してみようと思った。まずGPartedというパーティションを切るツールをsynapticからインストールする。これはGUIで簡単にパーティション作業ができるので非常に便利なツールである(なぜか、「すべてのデバイスをスキャン中…」というところでやたらと時間がかかるのが難点)。

GPartedのウィンドウ

このアプリで、既存のファイルシステムを削除してから、新規ファイルシステムとしてfat32を選択する。パーティションが切れたら、念のためフォーマットもしておく。また、HDDのデバイス名(図では、/dev/sdb1となっている)を確認しておく。

HDDのマウントポイントを/etc/fstabに登録する。

/etc/fstabは、システムにマウントされるデバイスのマウント先が登録されている。この設定ファイルに次の1行を追加する。

/dev/sdb1 /media/tstar vfat  iocharset=utf8,umask=000 0 0

1番目の項目はデバイス名、2番目の項目はマウントポイントである。なので、Gpartedあるいは次のコマンド

$ sudo fdisk -l
でデバイス名を確認する必要がある。

また、マウントポイントとして/media/tstarがなければ作成する。

$ sudo mkdir /media/tstar

そして、

$ sudo mount /media/tstar
を実行するとマウントできる。ちなみに、これまではGUIからマウント、アンマウントの操作をできていたのに、なぜかGUIからの操作ができなくなった。CUIからmountあるいはumountのコマンドで操作できるので問題ないのだが、どういう訳だろう?

実験

上で説明した設定の下で、まずマウント先のディレクトリの所有権をユーザに変更することを試みた。 (もし所有権を変更できたならば、アクセスする権限がないなどと怒られないだろうから)

$ cd /media
$ sudo mount tstar
$ ls -al
lrwxrwxrwx  1 root     root        7 2008-09-07 02:52 floppy -> floppy0
drwxr-xr-x  2 root     root     4.0K 2008-09-07 02:52 floppy0
drwxr-xr-x  3 root     root     4.0K 2008-10-26 20:49 tstar
drwxr-xr-x  4 root     root     4.0K 2008-10-26 21:04 .
drwxr-xr-x 23 root     root     4.0K 2008-10-26 18:48 ..

このようにHDDであるtstarの所有者はもちろんrootになっているので、所有者を変更するため

$ sudo chown ユーザ名:ユーザ名 tstar
と実行してみたが、permission deniedというようなエラーメッセージが出て失敗した。また、ダメ押しでbackupスクリプトを走らせてみたが、また上と同じ症状が発生した。したがって、別の方法でトライすることにした。

(注)マウントしないで所有権の変更を試みたら、うまく変更できた。しかし、その後にマウントしたら、自動的に所有権がrootに変わっていたので、結局ダメだった。

HDDをext3でパーティションを切る。

パーティションの切り方は、ファイルシステムをext3に指定することを除いて上とまったく同じ。

HDDのマウントポイントを/etc/fstabに登録する。

マウントポイントの登録は今度は

/dev/sdb1       /media/tstar    ext3    defaults,relatime       0 0
という一行を/etc/fstabに挿入する。

実験

今回も同じように所有権の変更を試みた。

$ cd /media
$ sudo mount tstar
$ ls -al
lrwxrwxrwx  1 root     root        7 2008-09-07 02:52 floppy -> floppy0
drwxr-xr-x  2 root     root     4.0K 2008-09-07 02:52 floppy0
drwxr-xr-x  3 root     root     4.0K 2008-10-26 20:49 tstar
drwxr-xr-x  4 root     root     4.0K 2008-10-26 21:04 .
drwxr-xr-x 23 root     root     4.0K 2008-10-26 18:48 ..

$ sudo chown ユーザ名:ユーザ名 tstar
今度はうまく所有権を変更できた。そして、バックアップスクリプトを走らせてみると、エラーもなくバックアップをとることができた!

(補足)アンマウントした後に、再度マウントしても所有権はユーザのままだった。また、再起動しても保存されていた。

分かったこと

ほとんどファイルシステムが違うだけの2通りの方法を試みて一方が成功して、他方が失敗したので、ファイルシステムが原因なのではないかと思われる。実は、後で調べて分かったことだが、vfat, fatなどのファイルシステムをマウントしたとき、基本的に所有者がrootになってしまうようだ。もしユーザやグループを指定してマウントしたいならば、マウントオプションで指定するかfstabに記述しておく必要がある。

例:

$ mount /media/tstart -o uid=xxx, gid=yyy

参考: 「バックアップ用ポータブルドライブに最適なファイルシステムに関する一考察」 「[linux-users:22683] mount option for fat (Re: Mosaic)

バックアップスクリプト

次のスクリプトの処理手順は

  1. バックアップ先のディレクトリがなければ作成する。
  2. インストール済みのパッケージリスとを作成する。
  3. 各ディレクトリ以下をrsyncでバックアップをとる。
ただし、.gvfsにマッチするものは無視する。バックアップ先のディレクトリは月ごとに新規作成する。パッケージリストとバックアップログは、実行する度にとる。

ファイルディスクリプタとリダイレクト このエントリーを含むはてなブックマーク

本記事では、シェルスクリプトでの標準入出力のリダイレクトについてまとめる。

標準出力はfile.txtに書き込まれる。(標準エラー出力は画面に表示される)

$ command1 >  file.txt

標準出力はfile.txtの末尾に追加する形で書き込まれる。

$ command1 >>  file.txt

標準出力はfile.txtに書き込まれ、標準エラー出力はerr.txtに書き込まれる。

$ command1 > file.txt 2> err.txt

標準出力とエラー出力はともにfile.txtに書き込まれる。

$ command1 > file.txt  2>&1

(注)最初に>file.txtが評価される。command1の標準出力がfile.txtに書き込まれる。次に、command1の標準エラー出力が標準出力に向けられる。この時点で標準出力=file.txtである!ので、標準エラー出力はfile.txtに書き込まれる。

標準エラー出力は画面に表示され、標準出力はfile.txtに出力される。

$ command1 2>&1 > file.txt

(注)最初に2>&1が評価される。そのとき、command1の標準エラー出力は標準出力に向けられる。この時点で標準出力=画面である!ことに注意する。その後に、command1の標準出力はfile.txtに書き込まれる。

まず、command1の標準出力がcommand2の標準入力に結合される。そして、command1の標準エラー出力は標準出力に向けられる。すなわち、標準出力とエラー出力がともにcommand2に渡される。

$ command1 2>&1 | command2

(注)まず初めにパイプでコマンド同士の入出力が結合される!その後にリダイレクトが評価される。

参考サイト:「シェルを使おう -応用編-」に非常に分かりやすい説明が載っている。

日本語、プログラミング用のmanpageがない。 このエントリーを含むはてなブックマーク

本記事では、Ubuntu 8.04に日本語、プログラミング用のmanpageを導入する方法をまとめる。

これまで使用してきたlinuxでは、日本語でmanpageを読む場合は、manコマンドでなくjmanコマンドを使っていた。しかし、デフォルトでjmanコマンドが入っていない。

調べてみると、

manpages-ja,           一般ユーザ向けのmanpage
manpages-ja-dev   開発者向けのmanpage
が入っていない。

さらに、

manpages-posix,
manpages-posix-dev
もまた入っていない。したがって、この4つをsynapticで入れておく。ちなみに、manコマンドで日本語のマニュアルが見られる。jmanコマンドは使われなくなったのだろうか?

Synapticあるいはapt-getでエラーとなる。 このエントリーを含むはてなブックマーク

本記事では、synapticあるいはapt-getを実行するとエラーが発生する症状の解決法をまとめる。

原因は、リポジトリの公開鍵が登録されていないことにある。pgp.nic.ad.jpの公開鍵058A05E90C4ECFECを登録するには、

$ pgp --keyserver pgp.nic.ad.jp --recv-keys 058A05E90C4ECFEC
$ sudo gpg --armor --export 058A05E90C4ECFEC | sudo apt-key add -
$ sudo gpg --armor --export 058A05E90C4ECFEC | sudo apt-key add -

(僕の環境では2回実行しないと適用されなかった)

CtrlとCapsLockの交換 このエントリーを含むはてなブックマーク

本記事では、CtrlボタンとCapsLockボタンのシステム的に交換する方法をまとめる。

そのためには、設定ファイル/etc/X11/xorg.confにて、

[前] Option    "XkbOptions"    "grp:alt_shift_toggle,grp_led:scroll"
[後] Option    "XkbOptions"    "grp:alt_shift_toggle,grp_led:scroll,ctrl:swapcaps"
と変更する。再ログインすると、設定は有効になる。

フォントの登録 このエントリーを含むはてなブックマーク

本記事では、フォントをシステムに登録する方法をまとめる。ユーザ個人で使用する場合は、そのユーザのホームディレクトリに.fontsというディレクトリを作成してその中に格納する。システムで全ユーザ向けに登録する場合は/usr/share/fonts/に入れる必要がある。

自動起動するアプリケーションを減らす。 このエントリーを含むはてなブックマーク

本記事では、デフォルトの設定で自動起動するように設定されている不要なアプリケーションを停止する方法をまとめる。 「システム→設定→セッション」で現れるダイアログで以下のアプリのチェックを外した(私の場合は不要なので)。 Blootoothマネージャ Evolution Alarm Notifier Tracker Trackerアプレット 視覚支援 印刷キューのアプレット User Folder Update

apport-gtkの不具合? このエントリーを含むはてなブックマーク

本記事は、apport-gtkのサービス停止についてまとめる。apportは、アプリケーションがクラッシュしたときに、バグレポートの作成をサポートするツールのようです。ネットで調べてみると、「apport-gtkのクラッシュ」のようにapportの不具合らしきものが報告されている。 1年以上まえの情報なのでよく分からないが、重要なアプリでないと思うのでサービスを停止した。「システム→システム管理→サービスの設定」で現れるダイアログでチェックを外せば良い。

日本語のフォルダ名を英語にする。 このエントリーを含むはてなブックマーク

本記事は、Ubuntu 8.04でフォルダ名が日本語となっているものを英語に変更する方法についてまとめる。 端末から $ LANG=C xdg-user-dirs-gtk-update と実行すると、ダイアログが現れる。Update namesをクリックする。再ログインすると変更されている。

viの設定ファイル このエントリーを含むはてなブックマーク

本記事は、エディタviの設定ファイル.vimrcの設定例をまとめる。以下の内容のファイル.vimrcをホームディレクトリに置いておくこと。 設定例:
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,cp932,iso-2022-jp,euc-jp

set backspace=2
set tabstop=2
set shiftwidth=4
set expandtab
   
highlight tabs ctermbg=green guibg=green

set list
set number
set ruler
set smartindent

パッケージ管理ツール (apt-get, dselect, dpkg) このエントリーを含むはてなブックマーク

本記事では、3つのパッケージ管理ツール(apt-get, dselect, dpkg)について概説して、システムの移行作業への活用法をまとめる。すなわち、旧システムに導入済みのすべてのパッケージを新システムに一括インストールする方法。

apt-get

レポジトリを登録する。設定ファイル/etc/apt/sources.listに、レポジトリを記述する。例えば、Ubuntu 8.04の場合は次のようにする。

deb http://archive.ubuntulinux.jp/ubuntu-ja hardy/
deb http://archive.ubuntulinux.jp/ubuntu-ja hardy-ja/

パッケージ情報を更新する。登録したレポジトリを参照して、パッケージの一覧を取得する。アップグレード、インストールの前に実行する。

$ apt-get update

パッケージをアップグレードする。

$ apt-get dist-upgrade

指定のパッケージをインストールする。

$ apt-get install パッケージ名

関連サイト:「ATP HOWTO

 dselect

パッケージを一覧から選んで対話的にインストールする。もちろんsources.listが正しく設定されている必要がある。

 dpkg

ローカルマシン内で、指定のパッケージをインストール、アンインストール、情報取得などを行う。

パッケージをインストールする。

$ dpkg  -i   パッケージ名

パッケージをアンインストールする。

$ dpkg  -r パッケージ名    // etc以下の設定ファイルは残す。
$ dpkg  --purge  パッケージ名  //すべてのファイルを消去する。

インストールパッケージの一覧を取得する。

$ dpkg -l
または
$ dpkg -l  パッケージ名
または
$ dpkg --get-selections  >  一覧をダンプするファイル名

インストールされたパッケージのファイル名を一覧

$ dpkg -L パッケージ名

特定のファイルが含まれるパッケージ名を検索する。

$ dpkg -S ファイル名

パッケージファイルの中身を一覧表示する。

$ dpkg -c パッケージ名

パッケージの中身を抽出する。

$ dpkg -x パッケージ名 展開する場所

パッケージの状態を確認する。インストール中断や設定失敗など何らかのエラー状態にあるパッケージを表示する。

$ dpkg --audit

一覧表に指定されたファイルリストをインストール指定する。

$ dpkg  --set-selections  <  インストールファイルの一覧表

出典:dpkgコマンドの扱い方は、LANDISK HACKING DIARY 「apt-get, dpkgコマンドでパッケージ管理」から引用しました。こちらにより詳しい情報が載っています。

システム移行への活用

旧システムにインストールされたパッケージ一覧を取得する。 旧システムにおいて以下を実行して、パッケージ一覧を作成する。

$ dpkg  --get-selections >  packagelist.txt

新システムにパッケージをインストールする。 旧システムのパッケージ一式をインストール指定する。

$ dpkg  --set-selections

関連サイト:「パッケージやパッケージシステムのFAQ

gnome-terminalを設定する。 このエントリーを含むはてなブックマーク

本記事では、gnome-terminalでフォントや色の設定をまとめる。

端末(ターミナル)

端末とは、システム内部にコマンドで命令を伝えるときの窓口に対応するものである。

gnome-terminal

ドルマーク($)の直後のカーソルが点滅しているところに、コマンドを入力してEnterを押すことで、システムに指定の動作をするように伝える。上の図では、lsコマンドを入力して、現在のディレクトリ(/usr)にあるファイルおよびディレクトリの一覧を表示させている。このように、ユーザは端末を介してシステムと対話することで、作業を行う。

フォントの設定

上の図ではメニューバーが非表示になっているが、表示されていれば、「編集→現在のプロファイル」を選択する。そうでなければ、端末上で右クリックすればメニューが現れるので、「このプロファイルの編集」を選択する。すると、次のダイアログが現れる。

プロファイルの編集
メニューバーがうっとおしい場合は、上の図のように「新しい端末の中にメニューバーをデフォルトで表示する」のチェックを外す。また、フォントはドロップリストから好きなものを選ぶ。私は「Bit stream Vera Sans Mono」のサイズ11のフォントにした。

色の設定

次に、テキスト色と背景色の設定を行う。「色」というタブを選択すると、次のダイアログとなる。「システム・テーマの色を使用する」のチェックを外して、「組み込みスキーム」から「明るい黄色地に黒文字」を選択した。

ウィンドウの縁

GNOME Artというサイトに各種テーマが置いてあるので、好きなものをダウンロードする。tar.gzなど圧縮されているファイルは解凍しないでそのままローカルPCに保存する。「システム→設定→外観の設定」で、次のダイアログが現れる。

外観の設定ダイアログ
「インストール」ボタンをして、ダウンロードしてファイルを選択する。すると、上の図の枠の中に、ダウンロードしたデザインのウィンドウのアイコンが現れるので、それを選択すると外観が変わる。

ちなみに私がダウンロードしたのは、WindowBorderというジャンルにあるMWMというウィンドウの縁のデザイン。昔のウィンドウマネージャのことはあまり知らないのだが、FVWMというウィンドウマネージャでよく見る外観である。

設定したWindowBorder

2008年10月25日土曜日

プロンプトをカスタマイズする このエントリーを含むはてなブックマーク

本記事では、端末で作業する人にはお馴染みのプロンプトの表示形式を変更する方法をまとめる。 □ プロンプトとは 下の端末の[.....]$という文字列の部分のことです。シェルが入力待ちであることを表しています。この文字列はユーザの好きなようにカスタマイズできます。例えば、ユーザ名、ホスト名、ワーキングディレクトリ名、現在時刻、日付など様々な情報を埋め込むことができます。
gnome-terminal
□ 設定の方法 設定は.bashrcに書き込みます。PS1というシェル変数に文字列を登録してexportするだけです。上の端末のように、[ユーザ名@ホスト名 現在時刻]$ という文字列にするには、export PS1="[\u@\h \t]$ "という1行を挿入するだけでOKです。\u, \h, \t はそれぞれユーザ名、ホスト名、現在時刻を表す特別な記号です。こういった記号の一覧は@ITの「bashのプロンプトを変更するには」に載っています。 □ 補足 設定ファイルに書き込んだ後は、端末を立ち上げ直すか、あるいは
$source ~/.bashrc
を実行して設定ファイルを読み込んでください。

ユーザ名を変更する。 このエントリーを含むはてなブックマーク

本記事では、ユーザ名を変更する方法をまとめる(Ubuntu 8.04)。過去に、別のディストリビューションのLinuxを使っているときに、ホスト名やユーザ名を変更してログインできなくなったり、変なトラブルが起きたことがあった。だから、今回はあまり気乗りしないが、ホスト名やユーザ名はよく目につくので、どうしても変更したくなった。ホスト名は、前回の記事「ホスト名を変更する」の通りすると、ごく簡単に変更できた。一方、ユーザ名は少し手間取ったので、手順を一通りまとめる。 □ シングルユーザモードでログインする。 通常は、ランレベル5(=グラフィカルログインによるマルチユーザモード)で起動する設定になっていると思う(c.f. @ITの「ランレベルとは」)。シングルユーザモードでログインする方法を、Ubuntu 8.04の場合で説明する。 (1)PCに電源投入(システムを起動していたら、再起動) (2)デュアルブートの場合は、OS選択画面に移るので、Ubuntuを選択 (3)Ubuntuが立ち上がるときにEscを押すと、ブートローダGrubのメニュー画面が現れる。 メニューでは、起動するシステムのカーネルが選択できる。 (4)最新のカーネルで、確かrecovery modeとか付記されているものを選択する。 (5)起動後に表示されるメニューで、確か「コマンドプロンプトに戻る」というのを選択する。 (6)次の3つのファイルで、現在のユーザ名をすべて変更したユーザ名で置き換える。CUIでの操作なので、viの操作などにはあらかじめ慣れておくこと! /etc/passwd /etc/group /etc/shadow 例えば、viなどのエディタで編集すると良い。編集箇所はたくさんあるので、パターン検索などの機能を活用してすべて置換する。 (7)ホームディレクトリの名前を新しいユーザ名のものにリネームする。 補足: 私は(7)をしないで、(6)までやった後に再起動してログインしてしまった。すると、もちろんログインに失敗したので次のようにして復帰した(説明するまでもないが。。。)まず、ログイン画面においてフェールセーフによるログインで入った。そして、ホームディレクトリを新しいユーザ名にリネームする。Ctrl-Alt-Backspaceでログイン画面に戻ってから、今度は通常のログインで入った。

ホスト名を変更する。 このエントリーを含むはてなブックマーク

本記事では、ホスト名(=マシン名)の変更方法を説明する。以下の2通りの設定方法がある。いづれの場合も、設定した後はすぐに再起動すること。

CUIでの設定方法

以下の設定ファイル /etc/hostname に現在のホスト名が書き込まれているので、これを変更したいホスト名で置き換える。

GUIでの設定方法

システム→システム管理→ネットワーク を選択すると、ウィンドウが現れる。その「全般」タブの項目「ホスト名」を編集する。

(注)実は次のファイル /etc/hosts の内容も置き換えないといけない!

.bashrcで初期設定 このエントリーを含むはてなブックマーク

前回の記事「.bash_profileで環境変数を設定する」に引き続き、本記事は.bashrcの設定についてまとめます。2つの設定ファイルはともにシェルに初期設定を登録するためのファイルですが、.bash_profileは基本的にログイン時にのみ読み込まれるのに対して、.bashrcはシェルが起動する度に読み込まれるのでした。

.bashrcとは

シェルを起動する度に読み込まれる設定ファイルです(ホームディレクトリに置いておきます)。.bashrcでは、主にエイリアスやユーザ定義関数、シェルの起動の度に実行するコマンドなどを登録します。

umask

ファイル作成したときは、読み書き実行に関して誰が行えるか(ファイルへのアクセスの権限)を取り決めることができます。これをパーミッションといいます。ファイル(file.txt)のパーミッションは小文字のエルをオプションとして指定することで、lsコマンドで確認できます。

$ ls -l file.txt
-rw-r--r-- 1 hoge hoge 3 2008-10-25 20:05 file.txt

この出力結果の見方は「パーミッションとは」に分かりやすい説明が載っています。

.bashrcに

umask 022
という1行を入れておくと、ファイルを新規作成したときに、そのファイルのパーミッションは644になります。すなわち、作成したユーザは読み書きができますが、それ以外の人は読むことしかできません。

fortune

fortuneは、実行する度に格言やジョークを端末に表示するプログラムである。シェルを立ち上げる度に、自動的にfortuneを実行するようにbashrcに書き込んでおくと楽しい。apt-getなどで、

# apt-get install fortune-mod 
インストールする。

ちなみに、fortuneの語源はフリー百科事典『ウィキペディア(Wikipedia)』によると、「フォーチュン・クッキー(fortune cookie)とは、中に運勢の書かれた紙片の入った菓子である。アメリカ合衆国の中華料理店では殆どの店で食後に出される。」とのこと。

フォーチュンクッキーを開けたところ(出典:Wikipedia

.bashrcの設定例

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
#alias ls='ls -F --color=auto'
alias ls='ls --color=auto --ignore-backups --human-readable -vxX '
alias eng='LANG=C LANGUAGE=C LC_ALL=C'

# don't put duplicate lines in the history. See bash(1) for more options
export HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
export HISTCONTROL=ignoreboth


# Source global definitions
if [ -f /etc/bashrc ]; then
     . /etc/bashrc
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
 . /etc/bash_completion
fi

umask 022

/usr/games/fortune

ただし、ssh接続されるサーバ上のアカウントで/usr/games/fortuneの行を書いていたら そのアカウントに対してscpできない。回避方法としては、~/.bashrcでなく~/.bash_profileなどに書いておく(そうしたら、端末を立ち上げるごとでなくて、ログインにつき1回しかfortuneは実行されないが)。

ディストリビューションによっては、/usr/games/fortuneではなくて/usr/bin/fortuneかもしれない。fortuneをインストールしたが、実行ファイルの場所が分からないときは

$ which fortune
を実行して場所を確認すること。

.bash_profileで環境変数を設定する。 このエントリーを含むはてなブックマーク

バッシュシェルを使っている場合、ホームディレクトリに

.bashrc
.bash_profile      <----(誤)Ubuntu 8.04では.profileを優先して読み込みます。
というファイルがある場合、シェルはそのファイルを読み込んで設定を登録します。.bashrcはシェルが起動する度(例えば、ktermなどの端末を立ち上げる度)に読み込まれる一方、.bash_profileは基本的にログインしたときにだけ読み込まれます。

(注)ドットで始まるファイルはlsコマンドだけでは通常は表示されません。lsコマンドにaオプションを付けて

$ ls -a
と実行すれば、ドットで始まるファイルなどすべてのファイルが表示されます。

.bash_profileでできること

.bash_profileに環境変数の設定をして、シェルの動作を変えることができます。

環境変数の設定を確認する

$ printenv | less
を実行すると、設定されている変数の一覧が表示されます。

例えば、以下のように左辺に環境変数で、右辺にその設定値として表示されます。

SHELL=/bin/bash
TERM=xterm
http_proxy=yyy
USERNAME=xxx
COLORTERM=gnome-terminal
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
LANG=ja_JP.UTF-8

設定ファイルの読み込まれる順番

まず最初はシステムの設定/etc/profileが読み込まれます(これはユーザの設定ではないので、一般ユーザは編集できません!)。その次に、下に示した順番でユーザごとの設定ファイルが読み込まれます。

  1. ~/.bash_profileを読み込む。
  2. ~/.bash_profileがなければ~/.bash_loginを読み込む。
  3. さらに~/.bash_loginがなければ~/.prfileを読み込む。
したがって、ホームディレクトリに.bash_profileを置いておけば良いのです。

環境変数を設定する。

~/.bash_profileに以下のように書き込む。

書式の例:

環境変数1=設定値1
環境変数2=設定値2
環境変数3=設定値3
…
export 環境変数1 環境変数2 環境変数3 …

.bash_profileの設定例:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
     . ~/.bashrc
fi

# User specific environment and startup programs

ENV=$HOME/.bashrc
USERNAME="xxxx"
PATH=$PATH:"/$HOME/bin"

export USERNAME ENV PATH

.bash_profileを読み込む

ログアウトして、再ログインする。あるいは以下のコマンドで設定を更新する。

$source ~/.bash_profile

その他

シェル変数を設定して、バッシュの動作を変えることもできる。 例えば、@ITの「bashのカスタマイズ」が参考になります。

2008年10月24日金曜日

Cソースファイルをコンパイルできない。 このエントリーを含むはてなブックマーク

Ubuntu 8.04では、C言語で書いたソースファイルをコンパイルできないことがあります。コンパイラgccは入っているようですが、ライブラリlibc6-devがデフォルトで入っていないことが原因のようです。

試しに、"Hello, world!"をprintfで出力する超有名なプログラムをコンパイルしてみると、

$ gcc hello.c -o hello
hello.c:1:14: error: stdio.h: No such file or directory
と確かに怒られてしまいます。このプログラムって一種の儀式だと思っていたんだけど、要はこういう不具合(というか単にライブラリがないだけ)のときに、自分の書いたプログラムのバグが原因なのか、それともシステム側に原因があるのか切り分けるためのプログラムなんですね。

ネットで調べてみると、build-essentialというパッケージ(Debianパッケージを作成するときに使うかもしれないツール一式)を入れるとうまくいったと報告されていたので、同じようにそのパッケージをインストールしてみると、問題なくコンパイルできました。

$sudo apt-get install buld-essential

参照サイト

trial and error Ubuntu 8.04 で gcc が動かない...?

2008年10月14日火曜日

emacs キーバインド このエントリーを含むはてなブックマーク

Unix系のOSで標準的なエディタでemacsがあります。emacsはエディタ以上の強力なツールです。というのは、emacsの上でブラウザやメーラ、あるいはシェルのインタープリタやデバッガなどを扱えるので、emacsの上だけでかなりの作業を行うことができます(やろうと思えば)。

emacsは独特のキーバインドを提供しています。キーバインドというのは、いくつかのキーを組み合わせて1つの機能を呼び出すものです。はじめて聞く人には抽象的で分かりずらいかもしれませんが、具体的な作業で説明すると次のようになります。「1行を切り取って、別の場所に貼り付ける」場合を考えます。”普通の”エディタでは、

  1. マウスで1行を選択する。
  2. メニューバーで「切り取り」をクリックする。
  3. カーソルを指定の位置に移動させる。
  4. メニューバーで「貼り付け」をクリックする。
という一連の操作で実現できます。

emacsでキーバインドを使うと、次のようにキーボードだけで行うことができます。

  1. 行の先頭に移動する(Ctrl-a)。
  2. 1行を切り取る(Ctrl-k)。
  3. 指定の行(例えば3行下)に移動する(Ctrl-u 3 Ctrl-n)。
  4. 切り取った行を貼り付ける(Ctrl-y)。
キーバインドだけで操作を行うメリットは、キーボードから手を話さないで済むことです。プログラミングや文書作成ではとても素早く作業を行えます。

前置きが長くなりましたが、本記事ではemacsのキーバインドで気になったものをピックアップしてまとめます。大抵は、自分が忘れていたものをピックアップするので、網羅的なものではありません。

選択した範囲を切り取る。

  1. 選択範囲の起点を指定する(マークセット)。 指定の場所にカーソルを進めて、Ctrl-SPC (注)SPCはスペースです
  2. 選択範囲の終点に移動する。
  3. 選択範囲を切り取る。 Ctrl-w

随時、追加していきます

2008年10月10日金曜日

RhythmboxとiPod このエントリーを含むはてなブックマーク

iTuneライクな音楽ファイル管理ソフトのRhythmboxを使って、iPodの曲を管理するために必要な設定をまとめる。

mp3形式のファイルを扱えるようにコーデックをインストールする。

メニューバーの「編集」にある「設定」という項目を選択して、設定ウィンドウを開く。デフォルトでは、以下の画像のように、「フォーマット」はoggマルチメディアが選択されている。

ここで、mp3を選択すれば良いが、デフォルトではmp3のコーデックがないので選択できない。したがって、Synapticなどでコーデックをインストールする。

インストールリスト:

  • gstreamer0.10-ffmpeg
  • gstreamer0.10-plugins-base
  • gstreamer0.10-plugins-good
  • gstreamer0.10-plugins-bad
  • gstreamer0.10-plugins-bad-multiverse
  • gstreamer0.10-plugins-ugly
  • gstreamer0.10-plugins-ugly-multiverse
  • gstreamer0.10-sdl
すると、mp3を選択できる。

設定後のウィンドウは以下のようになる。

iPodの中身をローカルPCにコピーする

iPodをPCに接続すると、RythmboxのウィンドウにiPodのアイコンが現れる。アイコンの中にある音楽ファイルがリストで表示されている。これらの音楽ファイルを選択して、フォルダにドラッグ&ドロップすると、ローカルPC内に音楽ファイルをコピーできる。

2008年10月5日日曜日

時刻の修正 このエントリーを含むはてなブックマーク

中古で入手したThinkpad X31は時刻が大幅にずれていたので、その修正の方法および調査結果をまとめる。

リアルタイムクロックとシステムクロックについて

linuxでは、リアルタイムクロック(RTC)とシステムクロックの2種類の時刻を扱っている。リアルタイムクロックは、ハードウェア的に時刻を計測しているもので、コンピュータの電源をシャットダウンしても付属の電池で計測している。一方、システムクロックはOSの起動時にRTCから時刻を取得して、その後はOSが計測・管理している時刻のこと。したがって、サーバなどのようにシャットダウンすることなしに長時間OSを稼働させる場合には、RTCから時刻がズレしてしまう。

今回のズレの原因

$ hwclock
でRTCを確認してみると、RTC自体の時刻がズレていることが分かった。RTCを修正する方法はいくつかある。

ntpサーバを利用する方法: ntpdateというコマンドを使って、ntpサーバに接続してシステムクロックをntpサーバに同期させて、その後にRTCをシステムクロックに同期させる方法。何回か試してみたが、なぜかうまくntpサーバと同期できなかった。ネットで調べてみると、システムクロックが大幅にずれていた場合には同期できないなどという情報があった(真偽は不明)。したがって、この方法は断念した。

手動でシステムクロックを修正する方法: 例えば、以下のように手動でシステムクロックを設定する。

$ sudo date -s '2008-10-05 23:23:25'
ちなみに、現在時刻は、情報通信機構のWebサイトなどで確認できる。

次に、ntpdateでntpサーバと同期する(上ではうまく出来なかったが、今回はできた)。

$ sudo ntpdate ntpサーバのURL

RTCをシステムクロックに同期させる。

$ sudo hwclock --systohc

インターネットラジオ このエントリーを含むはてなブックマーク

インターネットラジオを聞くためのソフトとその設定についてまとめる。

ソフト

以下のソフトをsynapticでインストールした。

インターネットラジオ局を探して、tuningするソフト - streamtuner

ミュージックプレイヤー - audacious

ラジオを録音するソフト(オプション) streamripper

設定

デフォルトでstreamtunerは、xmmsを呼び出して再生するようになっている。設定で、以下のようにaudaciousに変更する。(Ubuntu8.04ではxmmsは利用できないので。)

audaciousはwinampなどのスキンを適用して、外観を変えるには以下のように設定する。 skinz.orgなどのサイトからスキンを解凍しないでダウンロードする。 audaciousの設定のスキンの一覧にドラッグ&ドロップして、選択する。

2008年10月4日土曜日

emacsで単語登録 このエントリーを含むはてなブックマーク

emacsで辞書に単語を登録する方法

  1. M-x anthy-add-word-interactive
  2. 登録する単語を入力
  3. 単語の読みを入力
  4. 後は指示に従って、品詞や活用などに関する質問に回答

2008年10月2日木曜日

webサイトの登録 このエントリーを含むはてなブックマーク

本ブログの趣旨と少し違うが、今回はwebサイトを作成したときに検索サイトに登録するときのチップスをまとめる。

Google

Google web マスターツールを使って登録する。 Webサイトのheadセクションに指定のメタタグを挿入して、登録する。

Yahoo.com

Yahoo! Site Explorerに登録する。 Webサイトのheadセクションに指定のメタタグを挿入して、登録する。

Yahoo japan

登録サイトにURLを登録する。ロボットが巡回してくれる。

MSN

MSN Live searchにURLを登録する。

Yahoo カテゴリ

Yahooカテゴリの適切なカテゴリで「サイトの登録・変更」というところから登録する。

参考

くりぼうのBlogger入門

ImageMagicで画像処理2 このエントリーを含むはてなブックマーク

ImageMagicのコマンドラインからの画像処理について、チップスを追加する。

画像を時計回りに30度だけ回転する。

$ convert -rorate 30 before.jpg after.jpg

画像の上下を反転する。

$ convert -flip before.jpg after.jpg

画像の上下を反転する。

$ convert -flop before.jpg after.jpg

しきい値を指定して画像を2値化する(輝度値が30度未満は黒、それ以外は白にする)。

$ convert -threshold 30 before.jpg after.jpg

枠を付ける。

$ convert -border 10x10 -bordercolor black before.jpg after.jpg

ぼかす。

$ convert -blur 10 before.jpg after.jpg

間引く。

$ convert -sample 10% before.jpg after.jpg

参照

本記事は、以下のサイトを参照してまとめた。とても分かりやすくまとめられている。 「ImageMagicによる基本的な画像処理

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。