2009年11月12日木曜日

モチベーションの向かう先は

今まで生きてきて、平凡かもしれないけれど色々なことがあり、そしてこれからも、色々なことが起こるだろう。しかし、果たして本当に自分が向かう先が分かっているのだろうか。
今の答えは「NO」だ。
向かう先が見えていない。

最近は特に、何かしなければと焦る、もどかしい、足掻いている、そんな状況だが、方向性がないために 、時間を無駄に浪費している。

ただ、だからと言って空回りしているわけにはいかない。

とにかく、基本に戻って全力を尽くす。
それをやっていきたい。
冷静に見つめながら、情熱的に進む。

2009年11月6日金曜日

仮想環境デビュー。VMwarePlayerを使ってみた。

「食わず嫌いはよくない」と常日頃から思っており、どんなことでも、まずはやってみてから考えるようにしているのだが、どうもソフトウェア系に関してだけ、逃げ腰な所がある。それは、インストールから設定して普通に使えるようになるまでに、かなりの時間が必要で、それが待てないからだ。下手すると半日潰れてしまう。
しょうがないと言えばそうかもしれないが、どうしても貧乏性な性格がこんな所にも出てしまう。

今日は、これまで敬遠してきたVMwarePlayerを使ってみた。
今回は、まずはLinuxの勉強のためのCUI操作できる環境「コマンドを打って確認できる」が目的で、高いゴールではなかったのもあるが、特に躓く所はなく、すぐにVMwarePlayer上でUbuntuが使えるようになった。
本当に最近はインストールから使えるようになるまで、簡単になった。
この記事もVISTAのVMwarePlayerから仮想でUbuntuのFireFoxから投稿している。

今、VMwarePlayer で Ubuntu8.04が動いている。
VMwareが、
「仮想CDROMからtarで解凍し「vmware-install.pl」を実行して「VMwareTools」をインストールしろ」
とメッセージがあったので、tarで解凍しようとして、苦戦した。
解凍先を指定したかった。
必要なかった。そのままその場所に解凍した。
解凍後「vmware-install.pl」を実行したかった。
実行する時は、./ に続けて、「vmware-install.pl」 で実行する。
root@ubuntu-vm:/home/ubuntu/vmware-tools-distrib# ./vmware-install.pl  (こんな感じ)
LINUXの「超」基本。。。勉強になります。

色々できそうなので、怠けず、色々やってみようと思った。

【復習】3.1.8.マニュアルの参照

Linuxでは、オンラインマニュアルページ(manページ)が標準で用意されており、manコマンドで表示できる。
マニュアルを構成するファイルは、/usr/share/man
manページの検索ディレクトリは、環境変数MANPATHが参照される。
MANPATHに何も指定されていない場合は、/etc/man.config(もしくは/etc/man.conf)ファイルに指定されたデフォルトのリストが使われる。manコマンドは環境変数PAGERで指定されたページャプログラム(通常はless)で表示を行うが、変更可能。

書式) man [オプション] [セクション] コマンド名/キーワード

・manコマンドの主なオプション
-a:すべてのセクションのマニュアルを表示する。
-f:指定されたキーワード(完全一致)を含むドキュメントを表示する。
-k:指定されたキーワード(部分一致)を含むドキュメントを表示する。
-w:マニュアルの置かれているディレクトリを表示する。

・manページの見出し
NAME(名前):コマンドやファイルの名前と簡単な説明。
SYNOPSIS(書式):書式(オプションや引数)
DESCRIPTION(説明):詳細な説明。
OPTIONS(オプション):指定できるオプションの説明。
FILES(ファイル):設定ファイルなど関連するファイル。
ENVIRONMENT(環境変数):関連する環境変数。
NOTES(注意):その他の注意事項
BUGS(バグ):既知の不具合
SEE ALSO(関連項目):関連項目
AUTHOR(著者):プログラムやドキュメントの著者

manのデフォルトのページャでlessが設定されている。lessコマンドは「テキストを1画面ずつ表示する」こと、moreコマンドの高機能版である。
・lessの主なキー操作
スペースキー、fキー:下方向に1画面スクロール
bキー:上方向に1画面スクロール
qキー:終了
/検索文字列:下方向に検索
?検索文字列:上方向に検索

☆/etc/passwdファイルについて調べたい場合、ドキュメントの内容による分類であるセクションを指定する。
・セクション
1:ユーザーコマンド
2:システムコール
3:ライブラリ
4:デバイスファイル
5:ファイルフォーマット
6:ゲーム
7:その他
8:システム管理コマンド
9:Linux独自のカーネル用ドキュメント

→ man 5 passwd  >> /etc/passwdのファイルのフォーマットに関するマニュアルが表示される。
PASSWD(5) PASSWD(5)

名前
passwd - パスワードファイル

説明
passwd ファイルには各ユーザアカウントの様々な情報が記録されている。書か
れているのは次の通り。
(以下略)

☆ -fオプションで、指定した検索キーワードと完全にマッチした一覧が表示される。
whatisコマンドと同じ。
・man -f
・whatis

crontabをキーワードとして、すべてのマニュアルを検索する。

ubuntu@ubuntu-vm:~$ man -f crontab
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron
ubuntu@ubuntu-vm:~$
ubuntu@ubuntu-vm:~$ whatis crontab
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron
ubuntu@ubuntu-vm:~$

☆コマンド名などの正確な名前が不明な場合、-kオプションを使う。
aproposコマンドと同じ。
指定されたキーワードが、マニュアルタイトルもしくはNAME欄に含まれるマニュアルの項目一覧を表示する。

ubuntu@ubuntu-vm:~$ man -k crontab
/etc/anacrontab (5) [anacrontab] - configuration file for anacron
anacrontab (5) - configuration file for anacron
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron
ubuntu@ubuntu-vm:~$
ubuntu@ubuntu-vm:~$ apropos crontab
/etc/anacrontab (5) [anacrontab] - configuration file for anacron
anacrontab (5) - configuration file for anacron
crontab (1) - maintain crontab files for individual users (V3)
crontab (5) - tables for driving cron
ubuntu@ubuntu-vm:~$

これらは、whtaisデータベースを用意しておく必要があり、makewhatisコマンドで作成する。whatisコマンド、aproposコマンド、-k及び-fオプション付きのmanコマンドは、whatisデータベースを参照する。

※シェルの内部コマンドの説明を表示するには、helpコマンドを使う。

■感想:manコマンドは、マニュアルが表示されて便利で助かるが、ちゃんと読んで理解するのが大変な時がある。頑張って理解したい。

【復習】3.1.7.コマンド履歴

bashは実行したコマンドを保存しているので、historyコマンドでコマンド履歴を表示して確認できる。
「!履歴番号」で指定して、コマンドを再度実行できる。
コマンド履歴は、ユーザーのホームディレクトリの、.bash_historyファイルに保存されている。
環境変数HISTFILEで変更が可能。履歴数は、環境変数HISTSIZEで設定されている。

ubuntu@ubuntu-vm:~$ history
1 ls
2 cd /
3 ls
4 cd cdrom
5 ls

(中略)

34 echo `$DATE`
35 echo "$DATE"
36 echo "\$DATE"
37 history
ubuntu@ubuntu-vm:~$ !34
echo `$DATE`
2009年 11月 6日 金曜日 00:21:39 JST
ubuntu@ubuntu-vm:~$
ubuntu@ubuntu-vm:~$ echo "$HISTFILE"
/home/ubuntu/.bash_history
ubuntu@ubuntu-vm:~$ echo `$HISTFILE`
bash: /home/ubuntu/.bash_history: Permission denied

ubuntu@ubuntu-vm:~$ echo "$HISTSIZE"
500
ubuntu@ubuntu-vm:~$

●bashの履歴機能
↑(Ctrl+P):一つ前のコマンドを表示する。
↓(Ctrl+N):一つ次のコマンドを表示する。
!文字列:実行したコマンドの中で、指定した文字列から始まるコマンドを実行する。
!?文字列:実行したコマンドの中で、指定した文字列を含むコマンドを実行する。
!!:直前のコマンドを再実行する。
!履歴番号:履歴番号のコマンドを実行する。

■感想:「!文字列」と「!?文字列」は、どうも最新?のマッチしたものが実行されるようだ。ただ個人的には、どうしてもそのような指定が必要な時だけ「!文字列」を使おうと思う。

【復習】3.1.6.引用符

「'」単一引用符(シングルクォーテーション)
単一引用符の中は、すべて文字列であると解釈される。

「"」二重引用符(ダブルクォーテーション)
二重引用符内に変数があれば、その変数の内容が展開される。「`(バッククォーテーション)」が使われていると、その中も展開される。

「`」(バッククォーテーション)
引用符内にコマンドがあれば、素のコマンドを実行した結果が展開される。
変数の場合は、変数に格納されているコマンドを実行した結果が展開される。

「\」(バックスラッシュ)は、直後の文字を、通常の文字であるとみなす。(エスケープ文字)

ubuntu@ubuntu-vm:~$ echo "$DATE"
date
ubuntu@ubuntu-vm:~$ echo "\$DATE"
$DATE
ubuntu@ubuntu-vm:~$ echo "current is `pwd`"
current is /home/ubuntu
ubuntu@ubuntu-vm:~$

ubuntu@ubuntu-vm:~$ DATE=date
ubuntu@ubuntu-vm:~$ echo $DATE
date
ubuntu@ubuntu-vm:~$ echo '$DATE'
$DATE
ubuntu@ubuntu-vm:~$ echo "$DATE"
date
ubuntu@ubuntu-vm:~$ echo `$DATE`
2009年 11月 6日 金曜日 00:01:29 JST
ubuntu@ubuntu-vm:~$

■感想:「`」バッククォーテーションも、その単語を囲まないといけないが、ついついエスケープ文字の使い方のように、先頭に付けた時点で忘れてしまうので、注意しなければ。