カテゴリー別アーカイブ: Unix

Linux / FreeBSD / Minix の話題

Raspberry pi JavaでGPIOを使う準備メモ

Raspberry PiのGPIOをJavaで使用するための準備メモ

①Javaの準備
Javaインタプリタ及びコンパイラは既に入っていたのでそのまま使用
java -version
javac -version
Raspbean1.9.4に入っていたのは1.8.0_65

②Gitの準備
gitも既に入っているようなのでそのまま使用
Raspbean1.9.4に入っていたのはgit 2.1.4

③Pi4jの準備
Pi4J Projectのライブラリを使用させて頂く → http://pi4j.com/
curl -s get.pi4j.com | sudo bash
でインストール
JAR化されたライブラリの保存場所→ /opt/pi4j/lib
Pi4jのライブラリ位置指定にてコンパイル&実行
javac -cp .:/opt/pi4j/lib/’*’ ソース名.java
sudo java -cp .:/opt/pi4j/lib/’*’ クラス名
pi4jの使い方 → http://pi4j.com/usage.html

④vimの準備
コード記述用にVimをインストール
sudo apt-get vim

 


ピンアサインメモ

 

ubuntuでバイナリエディタを使う

Ubuntu10.04の環境でバイナリデータを見る機会があったのでバイナリエディタを入れてみました。

今回入れてみたのは色々と評判の良いGHex

インストールはapt-getコマンドで特に問題なく完了しました
sudo apt-get install ghex

バイナリもアスキーも直感的に操作できていい感じですが、文字が大きい行と小さい行ができる。
GHex

ざっくり検索してみた感じでは、症状が出ている人は少ない様子・・・

時間ができたら探ってみようかな^^;;

.

ubuntuにminicom v2.6をインストールする

VMWare上で動作するubuntu10.04でUSB式シリアルポート変換器IODATA USRSQ2が
動作するか確認するためシリアル端末をインストールしてみました。

アイオーデータのUSB-RSAQ2
DSC05161

インストールはapt-getで可能でした
sudo apt-get install minicom

インストールしたらminicomを起動(sudoで起動が必要) 
sudo minicom -o ← -oオプションはモデムを初期化しないモード
CTRL+Aの後Zでコマンド一覧が表示されるので0を押して設定画面に入る
設定のシリアルポートにカーソルを合わせてEnter
Aのシリアルデバイスに/dev/ttyUSB0を設定してEnter”
Fのハードウェア流れ制御をいいえに設定してEnter
dfl”に設定を保存にカーソルを合わせてEnter
(rootでやると設定がroot用になるので、普段使いのユーザでsudoでやらないと自分用の設定ができない)
終了で設定を抜ける
CTRL+A Xで一度終了して再度minicomを起動
起動画面でttyポートが変更されていることを確認
minicom26
USB-RSAQ2で115200bpsのループバックOK!

apt-getでインストールしたminicomは画面が崩れますが今のところ解決策は見つかっていません^^;;
http://freecode.com/urls/88a87ae332ec17462ac2b3897ad59b5d からソースを入手し
自分でビルドしても特に変わりなし
Google先生でも特に解決策は出てこない様子・・・いじってみるしかないかな^^

結論:
VMware上で操作しているubuntu10.04でアイオーデータのUSB-RSAQ2は
特にドライバ等入れなくても/dev/ttyUSB0で使用できることを確認
VMwareのホストOSとして使用しているWindows7でUSB-RSAQ2が使用できないのでかなり重宝。

FreeBSDに手をだしてみたもののダルマさん状態

組み込み系マイコンのユーザーはLinuxよりもFreeBSDを好む傾向があるそうで、私もFreeBSDを使ってみようとチャレンジしてみました。

ghs4gj room

結果はダルマさん状態・・・

何かするたびにエラーで終了
ソフトのインストール → エラー
ファイルのアップデート → エラー

何かの操作が足りてないとは思いますが、全くうまくいきません^^;;;

やはりFreeBSDは敷居が高いのかな!?

これは誰か詳しい人にレクチャーを受けながら作業しないと時間が無駄になりそう・・・・・・

目標はFreeBSD + Eclipse or NetBeans でGNU GCC環境  HEWの使いやすさを改めて実感(^^)

詳しい方・・・ コーヒーでも飲みながらレクチャーお願いします。(笑)

PC-UNIX初心者の私はやはりubuntuが好きかも (*^_^*)

ubuntu linuxを常用環境にするためのメモ

ubuntu linuxを常用環境にするためのメモ

linuxに慣れるため、ubuntuを常用環境にするために環境を整えるためのメモ

●必修項目
日本語環境有効化
ubuntuのシステムメニューで「システム」-「システム管理」-「言語サポート」で日本語環境を整える
ubuntuインストール時にオンライン状態でインストールすれば自動で日本語環境がインストールされる

●動作確認
USTREAM, YouTube, ニコニコ動画, radiko → 動作OK

●ubuntu(10.10)ソフトウェアセンタからインストール
NetBeans IDE 6.9 → 日本語環境でインストールOK。
HexEditor → 日本語環境でインストールOK。
kdesvn+kdiff3 → 日本語環境でインストールOK。→ インストールは問題無いがkdesvnは使いにくい
Bluefish2 → 日本語環境でインストールOK。
GIMP画像エディタ → 日本語環境でインストールOK。
Thunderbirdメール → ubuntuのシステム設定で言語サポートが日本語対応なら日本語化OK
FileZiller → 日本語環境でインストールOK。
Qucs 日本語版に変更可能「File」-「Application Settings」でLanguageをJapanese(jp)に変更
gEDA回路図エディタ → 日本語環境でインストールOK。
gEDA回路図→PCBプロジェクト 英語版

Windowsエミュレータ
wine microsoft winsows compatibility Layer → 日本語環境でインストールOK。インストール中に特にエラーなし
windowsアプリの起動は端末からwine ウィンドウズアプリファイル名(.exe) でOK

●apt-getでのインストール

apt-get install gpointing-device-settings マウスユーティリティ(TrackPoint関係縦スクロール時に使用)
apt-get install rapidsvn GUI SVNクライアント

●その他からインストール
skype → skypeのHPからUbuntu10.04(32)debパッケージをDL→ubuntuソフトウェアセンタ
VirtualBox-3.2 → VirtualBoxのHPから10.04debパッケージをDL →ubuntuソフトウェアセンタ
VMPlayer3 → VMWareのサイトからバンドル版をDL
→ sudo sh DLファイル名 でインストールOK 英語版、「File」-「Player Preferences」で「Download All Components Now」しておく

●wineで動作させるwindowsアプリ
wineでのwindowsアプリケーション動作はフォントがいまいち、Takaoゴシック、Takao明朝,梅ゴシックのサイズを選んで指定したほうが良さそう。
shellファイルを作ってリンクを作成し起動させるのが便利そう
#!/bin/sh
wine ~/jww/jw_win.exe  ←フルパスで書いておかないとリンクを移動すると起動しなくなった
jwcad 7.04, T98-NEXT, DF, 縮専, sakura editor → 動作ok

●taskselからのインストール
tasksel install lamp-server ← lampを対話形式でインストールできる
但しlamppではないようで、/optの下に/lamppとしてまとめて入っている訳ではなく個別のパッケージを順次入れたようなスタイルっぽい。
(ドキュメントルートも/var/wwwになってる) バックアップ等でいい面、悪い面がありそう


●アプリその他

Firefoxの日本語化
Firefoxのサイトで日本語化のアドオンをインストール→ https://addons.mozilla.org/ja/firefox/ から Japanese Language Pack
設定メニューの「Preferencec」で設定メニューを開き「Content」を選択し「Languages」の「Choose…」ボタンを押す
Languagesフォームで「Select a lungage toa…」プルダウンから「Japanese[ja]」を選択し「Add」ボタンをクリック
上部のリストボックスで「Japanese[ja]」が一番上になるように設定して「OK」

●WindowsからLinux(ubuntu)に変更して不便なこと
追々、解決策も探していきます。
・アメブロでのコピペができない
http://ameblo.jp/ghs4gj/entry-10969795590.html

・ThinkPadでTrackPoint縦スクロールができない。
http://ameblo.jp/ghs4gj/entry-10973132007.html

・ISOファイルのマウント
1) isoイメージのあるディレクトリに移動
2) mkdir /mnt/iso でマウントされるディレクトリを作成
3) mount -t iso9660 -o loop ISOイメージ名.iso /mnt/iso でマウント
・ショートカットの作成
ubuntuではリンクの作成(K)になっている。機能はだいたい同じ

・Zipファイルの解凍と圧縮
解凍: unzip zipファイル名.zip (End-ofcentral-directory sign….. とエラーが出る場合解凍後のパスが長すぎる可能性あり)
圧縮:
zip 圧縮するファイル名.zip 圧縮するファイル名.拡張子
zip -r 圧縮するファイル名.zip 圧縮するディレクトリ名

・プリントアウトとスキャナ
●その他環境整備メモ
ubuntu10.01の日本語環境整備メモ http://ameblo.jp/ghs4gj/entry-10974220964.html
ubuntu10.10にNetbeans6.9 PHP開発環境整備メモ http://ameblo.jp/ghs4gj/entry-10972476135.html

Linux基本

ターミナル(端末)の使い方 (ショートカット:CTRL+ALT+T)

●プロンプトの種類
$ = 一般ユーザのとき
# = スーパーユーザのとき

ルートユーザーのパスワードを作成する場合
(ubuntuでは最初ユーザOSを立上げその後rootのパスワードを設定する手順っぽい)
sudo passwd root
プロンプトの形式 ユーザー名@ホスト名: ~プロンプト ( ~はホームディレクトリ)
unixの一般的な慣例として利用者の権限で操作できる範囲はできるだけスーパーユーザにはならないらしい。
configureやmakeも極力スーパーユーザで行わないのが慣例らしい
ubuntu12.04ではrootのパスワードを設定してもデスクトップにrootを選ぶ余地がなくrootでログインできないのでログイン画面LightDMの設定変更が必要
nano /etc/lightdm/lightdm.conf でlightDMの設定を開き
[SeatDefaults] セクションに
greeter-show-manual-login=true  ←を追加するとユーザ名入力欄が表示される
allow-guest=false  ← を追加するとゲストセッションを表示しない
(再起動が必要)

●sshでのターミナル利用
sudo apt-get install ssh ← apt-getでSSHをインストール
ssh対応の端末で接続する
login as: ログインユーザー名
ログインユーザー名@IPアドレス(ホスト名)
password: ログインパスワード でログイン可能
apt-getでインストール後自動起動設定は完了している。
PuTTY端末の文字コード変換はUTF-8 Auto Detect/Japaneseで2バイト文字OK

普段使いそうなコマンドリファレンス
[ ]内はMS-DOS/Windowsに相当するコマンド、{ }内は使用例

adduser = ユーザーを作成する
{adduser ユーザー名}
{既設のユーザにsudo等のadmin実行権限を追加する場合 adduser 既設のユーザー名 admin }
登録ユーザの一覧は /etc/passwd を参照

su = スーパーユーザーに変更する
{su ユーザー名 ユーザー名を指定しない場合はrootユーザ rootユーザのパスワードを入力後切替}

sudo
= スーパーユーザーでコマンドを実行
{sudo /opt/lampp/lampp start}

nautilus = GUIでスーパーユーザ権限で操作
[sudo nautilus]

ls
[DIR] = ファイルやディレクトリの情報表示
{ls -al /opt lsの後 -オプション -aは全て表示 -lは詳細表示 その後ディレクトリ名(相対可)

cd
[CD] = ディレクトリの移動
{cd ディレクトリ名、cd /opt  ..親dirや.現dirも可 ディレクトリを省略するとホームに移動}

mkdir [MKDIR] = ディレクトリ作成
{mkdir (オプション) ディレクトリパス mkdir -mode +w /image/tube 書込権限を付加する場合}

rmdir
[RMDIR] = ディレクトリ削除
{rmdir (オプション) ディレクトリパス rmdir -p /image/tube 親ディレクトも空なら削除 }

rm
[DEL] = ファイルやディレクトリの削除
空でないディレクトリの削除はrm -rf ディレクトリ名

mv
[MOVE] = ファイルやディレクトリの移動・名前変更(リネーム)
{mv オプション 移動元ディレクトリ名 i移動先ディレクトリ名 mv -i }
{mv オプション 変更前ファイル名 変更後ファイル名 mv tube1 tube2 }
リネーム: mv 変更前ファイル名 変更後ファイル名
-f = 無条件上書き  -v = 経過表示

cp
[COPY] = ファイルやディレクトリのコピー
主なオプション
-a 属性やディレクトリ構造保持  -b 上書きや削除でbak作成  -f 確認せず上書
-i 上書確認あり  -p 属性を保持  -r 再帰的にコピーする
{cp -apr コピー元ファイル コピー先ファイル}
コピー元にディレクトリを指定したい場合カレントディレクトリにあるサブディレクトリはディレクトリ名だけで指定可能

tar
= ファイルの圧縮、展開

date
[DATE] = 日付、時間設定・表示

pwd
= 現在のディレクトリを表示

chgrp
= ファイルやディレクトリのグループを変更
{chgrp グループ名 ファイル/ディレクトリ名}

chmod
= ファイルやディレクトリのアクセス権を変更
{chmod -オプション ファイル/ディレクトリ名}
-R = 下位の全てに適用

chown
= ファイルやディレクトリの所有者を変更
{chown ftpuser /var/www/で/var/www/はftpuserの所有}

grep
= ファイル内から正規表現でパターンマッチした部分を出力する。(複数のファイルを対象にすることも可能)
grep (オプション) ’検索文字列’ ファイル名
・オプション
-n = 行番号表示 -i = 大文字小文字を区別しない  -r = 再帰オン  -s = エラー非表示
・検索文字列は’’でくくって正規表現で記述。正規表現していない文字列の場合は文字列を含むで検索される
{ grep -n ‘6BM8’ tubelist.txt | grep ‘cv9167’ などパイプして使ってもOK 後ろのgrepに-nを入れると抽出結果の中の行番号になるのでファイル内行番号とずれる}

find
= ファイルやディレクトリの検索
find ディレクトリ (オプション)
・ディレクトリ
. 以下全て /usr 以下全てなど絶対パスで記述
・オプション
-name = ファイル名又はDir名  -type = 種類(f=file/d=dir/l=シンボリックリンク) -user = 所有者  -grouo = 所有グループ  -ls = 詳細を出力
{find . -name “*.txt “-type f -ls  ← ルートディレクトリ以下の*.txtを詳細形式で一覧表示}
{find . -name “bin” -type d -n -ls ← ディレクトリ名にbinが付くディレクトリを詳細表示で一覧表示し連番を入れる }

dd
= ファイルのイメージダンプ、コピー
dd if=入力デバイス of=出力デバイス
{dd if=/dev/sda | gzip -c > buimg.dump.gz  ← 圧縮する場合はgzip -cオプションを追加}
確認中cmd: dd if=/dev/sda1 | gzip > /media/dump_vol/bu1205/sda1.dump.gz

vmstat
= CPU負荷やメモリ使用量を表示
vmstat 更新時間 でCPUやメモリ情報を表示
vmstat -d 更新時間でディスクI/Iの情報を表示

top = システムの情報表示

uptime = システム運転時間とロードアベレージ表示

df
= ディスク情報の表示

stat
= ファイルの詳細表示

cat /etc/issue = システム名表示

scp = sshを使ってコンピュータ間でファイルコピー
-r は再帰オプション
scp ローカルのファイル名 コピー先ディレクトリ ex) scp lampp.tar.gz 192.168.0.200:/home/hoge
scp -r ローカルのディレクトリ名 コピー先ディレクトリ ex) scp -r /opt/lampp 192.168.0.200:/home/hoge

apt-ge
t = パッケージのインストール・更新
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ○○○
sudo apt-get -f install ←不要パッケージ検索
sudo apt-get autoremove ←不要パッケージ削除
情報は /var/cache/apt/archives にある。

ping
[PING] = ピング

ifconfig
[IPCONFIG] = ネットワーク情報表示、設定、起動停止

iwconfig
= 無線ネットワーク情報表示、設定、起動停止

who
= ログインユーザを表示

id
= 所属idを表示
tail = ファイルの内容表示
-n = 最後から何行表示


—– グループ関係 ——————————————————————-
groupadd = グループを作成する
ggroupadd グループ名
{ groupadd webcreater }
追加されたグループIDは/etc/groupに書かれているので確認可能

groupmod
= グループ情報を変更する。
-g = GIDの変更
{ groupmod -g 変更したいGID 変更したいグループ名 groupmod -g 1002 webcreater }
-n = グループ名の変更
{ groupmod -n 変更前のグループ名 変更後のグループ名 groupmod -n weboprater webcreater }
ユーザのグループ設定はgroupmodの-Gでできるようだが、元々属していたグループもその度指定しないといけないようなので、直接/etc/groupに書くのがよさそう。書き換えたら要再起動
{ webcreater:x:1001:fe }

groupdel = グループ削除
{ groupdel グループ名 groupdel webcreater }

groups
= 登録グループ一覧又は所属グループ表示
{ groups hoge }
groupのリストはgetent group または /usr/group ファイルを直接参照する。
groupmod で グループを変更した際に、これまで登録されていたグループを再指定するのを忘れるとそのユーザでsudoができなくなったりする。
その場合/etc/sudoersを開き #User privilege specification項にユーザ名を追加する
{hoge ALL=(ALL) ALL}

ps = 実行中プロセスを表示

pstree = 実行中プロセスのツリー表示

passwd = パスワード設定
passwd ユーザー名 でパスワードの設定、変更が可能
rootで入れば各ユーザーのパスワードも古いパスワード不要で強制的に変更可能(パスワード忘れ時に便利)

free
[MEM] = メモリ情報表示

usermod
= ユーザ設定

fdisk
= パティション管理 起動時にオプションを付けるのではなく、fdisk /dev/デバイス で起動しコマンドで作業。起動のコマンドは-lで一覧を見る程度!?
shutdown -h 0 = シャットダウン suでなければ操作できない
-r 0 で再起動
reboot = 再起動
●便利そうなコマンド
lsmod = ロードされているモジュール一覧
lsusb = USBに認識されている機器一覧
insmod = モジュールを登録するblkid = 記憶メディアのUUID表示
scsi機器の接続状況表示 = # cat /proc/scsi/scsi
ネットワーク再起動 = # /etc/init.d/networking restart
フロッピーのフォーマット = fdformat /dev/fd0
空ファイルの作成 echo -n > ファイル名.拡張子
●トラブルシューティング
・固定IPにしたらインターネットに接続できなくなった場合
 /etc/resolv.conf のnameserver 192.168.1.1 を nameserver ルータのIPアドレス に変更でOKだった

●GUI

gedit = GUI用テキストエディタ
sudo gedit ファイル名
正規表現検索を使用可能にする方法 参考 → http://eunheui.cocolog-nifty.com/ubuntu/2008/08/gedit_db78.html
ダウンロードしたファイルを解凍し、gedit用の設定ファイルディレクトリに入れる
/home/ユーザー名/.gnome2/gedit/plugins/ 以下に解凍されたファイルとディレクトリを入れる。
gedit起動後「編集」-「設定」-「プラグイン」で「Regex Search and Replace」にチェックしgeditを再起動
使うときは「検索」-「Regular expression…」から
●パイプとリダイレクト
| = パイプ(MS-DOS等と同様 次のコマンドの入力として渡せる)
> = 上書き
>> = 追記
< = 入力
<< = 入力の終端文字列を定義
more(SPACE=次) や less(SPACE=ページ送り/q=終了) が使える

ディレクトリやファイルのパーミッション(許可属性)

パーミッションの変更 chmod [option] モード ディレクトリ・ファイル名
option: -R =サブディレクトリを含む 所有 パーミッション
所有
u = ユーザ
g = グループ
o = その他ユーザ
a = 全てのユーザ
演算子
+ = 追加
= 取外し
パーミッション
r = 読込権限
w = 書込権限
x = 実行権限
例 chmod -R g+rwx userdir ← userdir以下の全てのファイル・Dirのグループ権限をrwxにする
optionは数値3桁で直接指定もできる
r = 4  w = 2  x = 1 ディレクトリのsgidによるグループ設定
グループを設定してそのディレクトリにアクセスできるようにする場合 グループを作成 # groupadd ftpuser
ユーザにグループを追加 # usermod -G ftpuser taro
ディレクトリの所有グループを変更する chown :ftpuser /var/www
ディレクトリの所有グループに許可を与える chmod g+rwx /var/www
ID/GROUPの確認法 $ id ユーザ名

ファイル・ディレクトリの許可属性詳細の見方

[権限]-[dir数]-[所有者]-[グループ]-[サイズ]-[タイムスタンプ]-[名前]
drwxrwxrwx 1 root root 1000 2010-01-01 image1 ←ディレクトリ
-r–r–r– 1 user1 user1 2000 2010-01-01 6bm8  ←ファイル 権限の内容
drwxrwxrwx ( r = 読込 / w = 書込 / x = 実行 )
A987654321
A : d=ディレクトリ -=ファイル
9~7 : ファイルの所有者
6~4 : 所有者と同じグループ
3~1 : その他のユーザ

主なディレクトリ構成(FHS)

home = ユーザ用のホームディレクトリ
etc = 設定ファイル群
bin = 一般権限で実行できるコマンド群(基本コマンド)
sbin = システム管理用コマンド群
var = ログやtmpファイル群
opt = パッケージ管理システムが管理しているアプリ郡
lib = binやsbin用のライブラリ群
dev = デバイスファイル群(ディスクやプリンタ等も)
/dev/sr0 = CD/DVD /dev/lp0 = プリンタ /dev/eth0 = LAN /dev/hda = HDD 等
usr = 各種プログラム(ユーザソフトは/usr/local下に入れるのが一般的)
var = 変更されるデータ類
tmp = 作業用ディレクトリ(勝手に整理されることがある)

圧縮と解凍 ( tar.gz / tar.bz2 等 gz = gzipで圧縮 / bz2 = bzip2で圧縮)

tar = 複数のファイルを書庫にまとめる。書庫は圧縮されていないのでgzip等で圧縮する
gzip = gz形式で圧縮・-d解凍(普段はtarと組み合わせで使う)
bzip2 = bz2形式で圧縮・-d解凍(これも普段はtarと組み合わせで使う)
gzipやbzipで圧縮・解凍(ファイル単位の扱い。ワイルドカード等で複数のファイルも扱える)
圧縮 gzip ファイル名 / bzip 2 ファイル名 解凍 gzip(gunzip) -d ファイル名.gz / bzip2(bunzip2) -d ファイル名.bz2 tarで圧縮・解凍(ディレクトリ単位などファイルをまとめて扱える) 書式 書庫作成: tar -オプション アーカイブ名.tar destディレクトリ名
・使用例
書庫作成: tar cvf image.tar image ← imageディレクトリをtarで書庫にする(圧縮されていない)
書庫表示: tar tvf image.tar
書庫展開: tar xvf image.tar -C ../picture ← -C ディレクトリを指定し展開先を指定できる 圧縮・解凍をする場合は上記に z or j オプションを付け拡張子をtar.gz or tar bz2を付けるのみ
・よく使うオプション
c = アーカイブを新規作成 = Create
x = アーカイブからファイルを展開 = eXpand
t = アーカイブの中身を表示
z = gzipで処理(gz)
j = bzip2で処理(bz2)
v = 詳細を表示 = View
f = ファイル名指定 = File -C = ディレクトリ指定 (指定しない場合はカレントディレクトリ扱い)
tarボールとは tarでファイルやディレクトリを1ファイルにまとめてgzip等でさらに圧縮した状態のファイルのこと。
一般的にはtar.gzやtar.bz2のファイルをターボールというらしい。

ファイルの種類(拡張子) ELF形式

.ko = カーネルのモジュール
.so = 共有ライブラリー (WindowsのDLLに相当)
.a = 静的なライブラリ

システムの設定

自動起動の設定 /etc/rc.localの設定[AUTOEXEC.BAT相当] ←但しこちらはユーザのログインが必要
ログイン不要の自動起動はsysv-rc-confをインストールしこちらで行う
マウントの設定 /etc/fstabの設定。
ブート時にマウントする設定。 10.04ではネットワークドライブのマウントはfstabで設定できない模様「/etc/network/if-up.d」以下にシェルスクリプトを作成しマウントする。
Windowsのネットワークドライブの場合はsmbfsが必要
Windowsとのネットワーク共有 ubuntu 10.04LTSの場合「windowsネットワーク共有サービス」をインストールでWindowsとの共有が可能
geditエディタのカスタマイズエディタのフォント:Liberation Monoの11pt がかっこいい
ubuntuではdeb形式のインストーラを入手すればパッケージインストーラでインストール可能

shell(シェルスクリプト)

MS-DOSのバッチファイルのようなもの 使用上のルール ファイルの先頭に#!/binshを付ける以下の行から処理を書く
拡張子はshで、ファイル名.sh のように付ける
実行はsh ファイル名.sh シェルスクリプトのファイルに実行権限がある場合はカレントディレクトリで ./ファイル名.shで実行できる

簡易エディタ nano の使い方
CTRL + O = 保存
CTRL + X = 終了
CTRL + W = 文字列検索
CTRL + C = カーソル位置情報

本格的エディタ vimの使い方
起動 vim ファイル名

コマンドモードに戻る = [ESC] →: →[CR]
編集モードに移行
i = カーソルの左から入力
a = カーソルの右から入力
I = 行頭から入力
A = 行末から入力

保存と終了
:wq = ファイルに保存して終了
:n,nn w = n行目からnn行目までを保存
:q = 終了
:q! = 保存せずに終了

編集中
DEL = [x]キー
BS = [X]キー
1行DEL = [d][d]キー
COPY = [y][y]キー
PASTE = [p]キー
UNDO = [u]キー
検索 = :/キーワード/[CR] 次を検索[n]キー 前を検索[N]キー
置換 = :s/置換前文字列/置換後文字列/
指定行に移動 = 行番号[G]
バッファ一覧 = :buffers
次のバッファに移動 = :bn
バッファの削除 = :bd
ハイライト参考 → http://krakenbeal.blogspot.jp/2011/02/vi.html

画面を水平分割してファイルを読込 = :sp ファイルパス
水平に画面 = CTRL+W→s, CTRL+W→v
次の画面に移動 = CTRL+W→w
カーソルのない画面を閉じる = CTRL+W→o