本記事では、ターミナルでlessで日本語の文字化け対策についてまとめる。
lessはファイルを読み込むためによく使うコマンドだが、デフォルトでは日本語のテキストは文字化けしてしまう。代わりにlvコマンドを使えば良い。
~/.bashrcに次の行
alias less='lv'を挿入して、lessのエイリアスをlvとしておく。
こうすると、(代わりにlvが実行されるので)今まで通りlessと入力してファイルの閲覧ができる。
Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。
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
gnome-terminal
$source ~/.bashrcを実行して設定ファイルを読み込んでください。
前回の記事「.bash_profileで環境変数を設定する」に引き続き、本記事は.bashrcの設定についてまとめます。2つの設定ファイルはともにシェルに初期設定を登録するためのファイルですが、.bash_profileは基本的にログイン時にのみ読み込まれるのに対して、.bashrcはシェルが起動する度に読み込まれるのでした。
シェルを起動する度に読み込まれる設定ファイルです(ホームディレクトリに置いておきます)。.bashrcでは、主にエイリアスやユーザ定義関数、シェルの起動の度に実行するコマンドなどを登録します。
ファイル作成したときは、読み書き実行に関して誰が行えるか(ファイルへのアクセスの権限)を取り決めることができます。これをパーミッションといいます。ファイル(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を実行するようにbashrcに書き込んでおくと楽しい。apt-getなどで、
# apt-get install fortune-modインストールする。
ちなみに、fortuneの語源はフリー百科事典『ウィキペディア(Wikipedia)』によると、「フォーチュン・クッキー(fortune cookie)とは、中に運勢の書かれた紙片の入った菓子である。アメリカ合衆国の中華料理店では殆どの店で食後に出される。」とのこと。
フォーチュンクッキーを開けたところ(出典:Wikipedia)
# .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を実行して場所を確認すること。
バッシュシェルを使っている場合、ホームディレクトリに
.bashrc
.bash_profile <----(誤)Ubuntu 8.04では.profileを優先して読み込みます。
というファイルがある場合、シェルはそのファイルを読み込んで設定を登録します。.bashrcはシェルが起動する度(例えば、ktermなどの端末を立ち上げる度)に読み込まれる一方、.bash_profileは基本的にログインしたときにだけ読み込まれます。
(注)ドットで始まるファイルはlsコマンドだけでは通常は表示されません。lsコマンドにaオプションを付けて
$ ls -aと実行すれば、ドットで始まるファイルなどすべてのファイルが表示されます。
.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が読み込まれます(これはユーザの設定ではないので、一般ユーザは編集できません!)。その次に、下に示した順番でユーザごとの設定ファイルが読み込まれます。
~/.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
ログアウトして、再ログインする。あるいは以下のコマンドで設定を更新する。
$source ~/.bash_profile
シェル変数を設定して、バッシュの動作を変えることもできる。 例えば、@ITの「bashのカスタマイズ」が参考になります。
XresouceでXアプリケーションの設定を与えることができる。設定後は
$ xrdb -remove ~/.Xresources $ xrdb -merge ~/.Xresoucesのように明示的に設定を破棄して再び読み込まないと反映されない。
Ubuntu 8.04で、以前の記事にあるようにemacsのパッケージをインストールした状態で、emacsを起動させると画面が小さい(自分的に)。そこで、コマンドで
$emacs -geometry 100x200 &のように指定しても、ある一定サイズ以上に大きくできない。また、~/.Xresourceに
emacs.geometry:100x200のように指定した場合も同じだった。
末尾で参照しているサイトに同じ症状および解決法が載っていた。 まず~/.Xresourcesの上の行をコメントアウトして、
$ xrdb -remove ~/.Xresources $ xrdb -merge ~/.Xresourcesとしておく。そして、~/.emacs.elに以下の設定を追加した後、コンパイルしてロードすれば良い。私はの場合はemacsの設定をコンパイルしたものを読み込むようにしているので、そうでない場合は.emacsなどに書き込むだけで反映されると思う。
参照:「[ubuntu-jp] Emacsの .Xresources に関して」
ターミナルからコマンド入力の際、TAB補完は役に立つのだが、ビープ音が毎回なるのでストレスがたまってしまう。xtermとktermの場合は、 ~/.Xresourcesに
kterm*visualBell: true xterm*visualBell: trueと設定することでvisual bellに変えることができる。一方、gnome-terminalではプロファイルで端末ベルを鳴らすという項目のチェックを外せばよい。
CUIモードでは、set bell-style noneとしてもビープ音がなり続けた。結局、/etc/inputrcのbell-style noneをコメントアウトするとビープ音がならなくなった。
LinuxではXwindowが立ち上がったときに、初期化ファイルに設定を記述しておくことで、アプリを自動的に立ち上げるなどができる。ただし、どのようにXを立ち上げたかによって読み込まれる初期化ファイルが異なる。例えば、CUIからstartxで立ち上げる場合はxinitrcが読み込まれる。xdmからログインする場合はxsessionだったと思う。
Ubuntu 8.04では詳しいことは知らないけれど、ネットで調べたところxsessionrcが読み込まれるらしい。したがって、ホームディレクトリにxsessionrcというファイルを作成して設定を書き込む。
設定例
#!/bin/sh xclock -geometry 150x150+870+0 & gnome-terminal --geometry 120x45+50+0 --hide-menubar &
お気に入りのWebサイト(一部、外部サイト)へのリンクの一覧です。