もりねずみーのやつ

インターネット上でしか生きられません

Arduino Pro Miniでプログラムを書き込む方法

最初、FTDI-USB変換を使ってArduinoIDEからアップロードして普通に書き込めはずなんだけど、2回目以降(これが意味あるかどうかはわからないけど)、書き込みが出来なかったので、調べていたら分かったのでメモ。


Arduino pro mini uploading problem - YouTube

同じように悩んでる方がいて、それに対する解決方法がコメントされていた。

  1. Arduino Pro Mini側のリセットボタンを押しながら、
  2. Arduino IDEのアップロードを実行し、
  3. FTDI-USB変換ボードのTXが光った瞬間に、
  4. Arduino Pro Mini側のリセットボタンを離す。

なんか隠しコマンドか裏ワザ臭漂うやり方なんだけど…、 これでArduino Pro Miniでプログラムの書き込みが行われる。

Arduino IDEを使わない方法 Emacs+Ino

Arduino

最近Arduinoとかラズパイとか触ってる。 超楽しい。

可変抵抗器をつないで自由にサーボモータ動かしたり、 PWM出力から音を出してシンセサイズしたり、 こんなことがこんな簡単に出来るんだと、感動してる。

Arduinoと可変抵抗器1つでサーボモータ動かす


Arduino + Adafruit Motor Shield + Analog input0 ...

Audionoサンプルを動かす(1)


Auduino in Arduino - YouTube

Audionoサンプルを動かす(2)


Auduino in Arduino (2) - YouTube

Arduino IDE

Arduinoソースコードコンパイルして、Arduino実機にアップロードするために、 Arduino IDEというのが用意されています。

ちょろっと書いてちょろっと動かすっていう程度には、 とてもシンプルで楽でいいと思う。

ただ、フォントの種類やサイズ、背景色などのカラースキームが設定できないなど、 普段EmacsVimに脳をやられてしまっている人達には、禁断症状的なものが 出てきてしまい、なかなかつらいものがある。

Ino

Arduino IDEの機能をコマンドラインから操作できるようにするためのツール。 http://inotool.org/

さっくりと紹介

$ mkdir beep  <-- Arduinoプロジェクトディレクトリを作成して
$ cd beep  <-- そこに移動しておく
$ ino init -t beep <-- inoを使って、Arduinoプロジェクト用にlibとsrcディレクトリを生成出来る
$ ino init -t empty <-- -tオプションはテンプレートを使用する意味で、emptyを指定すると空のプロジェクトが生成される
$ ino build <-- Arduinoプロジェクトをビルド
$ ino upload <-- Arduinoプロジェクトを実機にアップロード

基本的には、USBやシリアル接続先、ArduinoIDEのライブラリなどは、 自動的に引っ張って設定してくれる。 接続先を指定するには.iniファイルで設定も出来る。

素晴らしい機能や使い方等は、公式を参考にするといいとして、 少しハマってしまったので、わざわざブログにした次第でして。 結果から先に言うと、今のところ、inotool.orgのInoはArduino IDE 1.5.xでは使えない。

今現在、Arduino IDEには1.0.xと1.5.x(Beta)のニ種類がある。 で、Betaである1.5.xでは、オリジナルのInoでは動作しない報告が出てる。 https://github.com/amperka/ino/issues/119

ていうか実際、ino buildが動作しなかった。

os-MacBook-Air:beep morinezumiiii$ ino build
Searching for Board description file (boards.txt) ... found multiple:
  - /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/boards.txt
  - /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam/boards.txt
  - /usr/local/share/arduino/hardware/arduino/boards.txt
Searching for Arduino lib version file (version.txt) ... /Applications/Arduino.app/Contents/Resources/Java/lib/version.txt
Detecting Arduino software version ...  1.5.6 (1.5.6-r2)
Searching for Arduino core library ... /usr/local/share/arduino/hardware/arduino/cores/arduino
Searching for Arduino variants directory ... /usr/local/share/arduino/hardware/arduino/variants
Searching for Arduino standard libraries ... /Applications/Arduino.app/Contents/Resources/Java/libraries
Searching for make ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/make
Searching for avr-gcc ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-gcc
Searching for avr-g++ ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-g++
Searching for avr-ar ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-ar
Searching for avr-objcopy ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-objcopy
src/sketch.ino
Searching for Arduino lib version file (version.txt) ... /Applications/Arduino.app/Contents/Resources/Java/lib/version.txt
Detecting Arduino software version ...  1.5.6 (1.5.6-r2)
make: execvp: /bin/sh: Argument list too long
make: *** [.build/uno/src/sketch.d] Error 127
Make failed with code 2

で、上記のissueを見ると、 「amperka/inoからForkしてjustonia/inoを作ったよーこっち使ってねー。」 っていうコメントがあって、そっちからgit cloneしてmake installしたら、 問題なくInoが使えた。 https://github.com/justonia/ino/tree/ide1.5x

このamperkaさんとjustoniaさんがこの後やりとりしてるかどうかは 調べてないからわからないけど、多分そのうちどっちかにMergeされるんじゃないかな、と。

とりあえずこれで、コマンドラインでのArduinoプロジェクトを操作できるようになった。

Emacs

エディタは別になんでも良いです(震え声 とりあえずエディタからターミナル使えるものがあれば、Inoの機能を呼び出せるね。 Emacsの場合は、arduino-mode.elがelpaに登録されているので、以下でインストール出来る。

-- M-x
package-install [Enter]
arduino-mode [Enter]

これだけ。

Emacs+InoでArduinoのLEDをチカチカ

環境整った。素敵。

f:id:aburos:20140504184938j:plain

どうでもいい余談

Auduino、思った以上にすごくエグイ音が出た。 SharmanのFilterbankに負けないくらいのもの作れるんじゃねっていうくらい。 某メーカの某おもちゃよりよっぽどry

Arch Linuxのデスクトップ環境(もりねずみー編)

どうも、さっきOracleインストールとかどうでもいい記事をぶん投げました、もりねずみーです。

それよか、最近とても素敵なデスクトップ環境に出会ったので、今まで使ったものも含めて紹介したいと思います。

LXDE

f:id:aburos:20140330175048p:plain

http://lxde.org/

https://wiki.archlinux.org/index.php/LXDE

定番ですね。軽量デスクトップ環境。 この中に入っているLXTerminalが気に入ってて、他のデスクトップ環境にしてても割と使ってます。

Xfce

f:id:aburos:20140330175034p:plain

http://www.xfce.org/

https://wiki.archlinux.org/index.php/Xfce

これも超定番。ねずみ。 ナズーリンかわいい。

確か、ノートPCとかのマルチメディアキー(バックライト輝度や音量とか)が最初から対応してた(うろ覚え) ナズーリン好きすぎてつらい。

Xmonad

f:id:aburos:20140330174213j:plain

http://xmonad.org/

https://wiki.archlinux.org/index.php/XMonad

みんな大好きHaskellで書かれたタイル型ウインドウマネージャ。

Superキーと組み合わせたショートカットでウインドウを入れ替えたり広げたりターミナル立ち上げたりアプリケーション起動したり仮想デスクトップを切り替えたりと、慣れるととにかく楽。

設定ファイルもHaskellで書かれてるからほーらあなたも知らないうちにHaskeller。 ※ただ、Xmobarの設定ファイルは書きづらい。

作業効率はズバ抜けて高いと思う。

Unity for Arch

f:id:aburos:20140330174314p:plain

https://unity.ubuntu.com/

https://wiki.archlinux.org/index.php/Unity

Ubuntu御用達素敵なデスクトップ環境です。 試しに、Arch Linuxに入れてはみたものの、ログアウト出来なくなったり、思ったよりも動作が重かったり、機能スカスカだったり、インストールされるパッケージ群に○○-ubuntuとか書かれてたりと、これはUbuntuだからこそ真価を発揮するんだなぁと再認識しました。Archでも使いたいなぁ。

Enlightenment

f:id:aburos:20140330175016j:plain

f:id:aburos:20140330174720p:plain

https://www.enlightenment.org/

https://wiki.archlinux.org/index.php/Enlightenment

で、Unityっぽいデスクトップ環境他に無いかなぁと思って探して見つけたのがこれ。 Bodhi(菩提) Linuxという、Linuxの宗教染みたアレもとうとうここまで来たかと言わんばかりのディストリで標準採用しているデスクトップ環境なんだけど、これがめちゃくちゃカッコいい。

おフランス製らしい。

XfceでいうPanelは1つ固定で上下左右に配置可能。 Compizっぽいエフェクトがかかりまくりなんだけど、ウインドウから炎が出たりとなんでもかんでも派手にした感じじゃなく、仮想デスクトップの切り替えやポップアップ、フェードイン/アウトをスッキリとカッコよく、なんとも文章では表現できないカッコよさがある。 なんていうか、弐寺とか音ゲーマー好きそう。

それと、Alt+EscでEverythingというランチャーが立ち上がり、そこにアプリケーション名やファイル名を入れてEnterで開くことが出来る。LXDEでいうSuper+Rな感じ。

ちなみに、Arch LinuxのPackagesに含まれるEnlightenmentはバージョンが古く、割と更新の早いグラフィックドライバ等との相性が合わないため、まともに動かないので、AURから落として入れるほうが吉。

あと、Enlightenmentと組み合わせて使うとなお良いEntranceというログインマネージャがあるけど、そっちは自分の環境でやったらバックライトが点灯せず、仕方なくMacbook AirのリンゴからiPhoneのフラッシュライトを焚いて頑張ったり、入力したコマンドと結果を脳内補完するステルスモードを強いられたりと、いろいろ問題があった。 ひょっとしたら一度Packagesの古いバージョンのEntranceを入れて消してAURから最新のもの入れて消してと余計なものが残っちゃってるのかもしれないし、今は別の理由でArch Linuxを再インストールしたので、またEntranceは挑戦してみようかと思う。

おわりに

OSXWindows 8など、あっちは割とモダンな感じのUIとなっている中、Linuxはまだまだ素敵な感じのUIにならないなーと思ってたところ、Enlightenmentに出会ったのはすごく衝撃的だった。特に、Linux界のデザインセンスと言ったら昔からひどいもので(僕も人のこと言えないけど…)、結局コンソール最高とか思っちゃたりもしてた。 EnlightenmentがEFLというライブラリのもと、Ubuntuのようにちゃっかりモバイル向けも用意されてたりと、Androidも含め今後のスマートフォンへの展開する流れも、面白くなるんじゃないかな。

ArchLinuxにOracle Database 11gR2 Express Editionをインストール

どうも、もりねずみーです。 1ヶ月ほどハードボイルドな街に放り込まれ、銃弾や車の突進を避けつつなんとか生きて帰りました。

ちょっとお仕事でOracleを触る機会があったので、誰得感満載ではあるけど、Arch Linuxに入れてみようかと。

Oracleは11gR2のExpressEdition(以降XE)で、無償評価的な位置付けのもの。

インストール

インストール方法は毎度おなじみ、便利なAUR。

ただ、残念なことに、この記事を書いている時点のAURパッケージは、ソースダウンロード元のリンクが切れているっぽいので、少し手を加えてやればうまくPacmanでインストールできる。

まず、AURからoracle-xeをダウンロード。

次に、Oracle Technorogy NetworkからLinux向けOracleXEをダウンロードし、 そのZIPファイルをDropboxかどっかに置いておく。

PKGBUILDのsource=()の部分にOracleXEのダウンロード先のURLが書いてあるので、そこにさっきのDropbox等のダウンロードURLに書き換える。

で、

$ makepkg -s
$ sudo packman -U oracle-xe-11.2.0_1.0-2-x86_64.pkg.tar.xz

初期設定/起動

インストールが終わったら、以下のコマンドで立ち上げてみよう。

$ sudo usermod -G dba morinezumiiii
$ sudo /etc/rc.d/oracle-xe configure

You must be root user to run the configure script.  Login as root user and 
then run the configure script.
[morinezumiiii@morinezumiiii-arch oracle-xe]$ sudo /etc/rc.d/oracle-xe configure 

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express 
Edition.  The following questions will determine whether the database should 
be starting upon system boot, the ports it will use, and the passwords that 
will be used for database accounts.  Press <Enter> to accept the defaults. 
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:(APEXのポート番号)

Specify a port that will be used for the database listener [1521]:(TNSリスナーのポート番号)

Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of 
different passwords for each database account.  This can be done after 
initial configuration:(SYSパスワード)
Confirm the password:(SYSパスワード)

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:(ブート時にOracleを起動させるかどうか)

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.

これで立ち上がったはずなので、Oracle SQL DeveloperやSQL*Plusなどで確認してみましょう。

接続

SQL*Plusの場合

conn sys as sysdba

起動と停止

$ sudo /etc/rc.d/oracle-xe start
$ sudo /etc/rc.d/oracle-xe stop

おわりに

今更Oracleとかホント誰得な記事でした。ありがとうございました。

ChromiumでMozcを使った日本語入力が出来ない件

Arch Linux(多分ディストリ関係ない)で、Chromiumから日本語入力出来なくてハマった。

結論から言うと、ただ単にChromiumで使用するインプットメソッドが、Xのものに合わせてなかっただけだった。

環境

やったこと(問題解決につながらなかったもの)

  • 環境変数LANGをen_US.UTF-8からja_JP.UTF-8に変えてみた。
  • Chromiumの言語設定を日本語を最優先にしてみた。
  • Mozcのキー設定でIME切り替えするものを別のキー割り当てに変更してみた。
  • デスクトップ環境をLXDEからXMonadに変えてみた。
  • 東方に現実逃避してみた。

解決策(暫定)

Chromiumの文字入力欄(アドレスバー含む)で使用するインプットメソッドを変更

  1. 文字入力欄(アドレスバー)右クリックでコンテキストメニューを表示
  2. Input Methodsの中のSystem(iBus(Intelligent Input Bus))からX Input Methodに変更

こんだけだった。

でも、これだけだとアドレスバーやテキスト入力する度に変更しなきゃならないので、なんか上手い方法あったら教えてください(´・ω・`)

他のアプリケーションは問題なくMozcから日本語入力できるんだけど、なんでChromiumFirefoxだけダメなんだろうなぁ…。

ArchLinuxとVMwareで東方する環境を作る

ArchLinuxとVMwareで東方する環境を作る

MacbookAirはまぁいいとして、OSXに疲れてきたので、 そろそろArchLinuxをメインに使っていこうと思います。

環境

MacbookAir 11インチ(Late 2011) ArchLinux x86_64 VMware Player Linux ※MacbookAirへのArchLinuxインストールについてはここでは説明しません。Arch Wikiに全て書いてあります。むしろArch Linuxのインストールを楽しんでください。

目的

Arch Linux上でVMwareを動かし、その中にWindowsをインストールすることではありません。 東方シリーズを遊べる環境にするのが目的です。

手順

基本的にはArch Wikiに書いてある通りなので、 要点と、ちょっと頑張らないと出来なかった部分だけ。

Installing VMware in Arch Linux https://wiki.archlinux.org/index.php/VMware

結論から先に言ってしまうと、Arch Wikiの手順通りにVMwareをインストールしても、VMwarePlayer起動時にVMCIが有効でないとかなんとかで、エラーになったり、Direct3Dが有効にならなかったりで、東方は動きません。もちろん、その対処法もTroubleshootingの項に書いてあったり、ググれば出てくるので、それを念頭においた上で進めるとスムーズに行くと思います。 なので、本家とは若干異なる手順で書いていきます。

事前準備

東方はDirect3Dが動作する環境が必須です。 なので、MacbookAirに搭載されるグラフィックドライバ(xf86-video-intel)とmesaを入れておきます。

xorgの設定をして、Intelドライバが適切に動作するようにします。

/etc/X11/xorg.conf.d/20-intel.confを作成します。

Section "Device"
    Identifier    "Intel Graphics"
    Driver        "intel"
    Option        "AccelMethod" "sna"
EndSection

恐らく、同じMacbookAirならSNAを使っても問題ない。

linux-headersのインストール

Arch Linuxを使っている人達は、当然のように常に最新のカーネルを使っているかと思います。 で、この記事を書いている時点で、Kernelバージョンは3.13です。 なので、Arch Wikiに書いてある通り、vmnatモジュールのビルド時に失敗するのを防ぐため、vmware-netfilter.patchを当ててやります。

その前に、その作業の中で使われるvmware-modconfigではLinuxカーネルのソース一式がインストールされていることを前提としているので、linux-headersを公式リポジトリからインストールしておきます。

$ sudo pacman -S linux-headers

VMware Playerのインストール

先のArch Wikiの通り、本家VMware公式からVMware Player and VMware Player Plus for Linux 64-bitをダウンロードし、Arch LinuxVMware Playerをインストールします。

$ chmod +x VMware-6.0.1-1379776.x86_64.bundle
# ./VMware-6.0.1-1379776.x86_64.bundle --console

コンソールモードでインストールを進めます。

規約に同意します。2回。ちゃんと読みましょうね。

その後、"No rc*.d syle init script directories"とメッセージが表示され、何か入力を求めてくるかと思います。

残念ながら、その時、僕はラム酒を飲んでいて「ん?rc.d?systemdだろ。」と、/etc/systemdを指定してしまったような記憶があります。 正直、ここはよく覚えていませんが、その後色々ハマったこともあり、間違っていたような気もするし、間違ってなかったのかもしれません。 でもVMCI絡みでいじったファイルが/etc/init.d/vmwareなので、ここでは何も変更しなかったのかも。。 気になる人は調べてください。

インストール自体はこれで終わりです。

VMware Playerの設定

次にVMware Playerが正しく動作するように設定をしていきます。

まず、事前準備のところで触れた、3.13カーネルで動作するように、vmware-netfilter.patchを当てます。 Arch Wikiと同じです。

2014/04/16 追記です。

カーネルのバージョン3.13と3.14では手順も当てるパッチも変わるっぽい。なので、Arch Wikiを確認してください。 まぁ、この辺が頻繁に更新されて振り回されるのが大好きでドMなArchユーザなら当然ですよね! https://wiki.archlinux.org/index.php/VMware#VMware_module_patches_and_installation

$ curl http://pastie.org/pastes/8672356/download -o /tmp/vmware-netfilter.patch
$ cd /usr/lib/vmware/modules/source
# tar -xvf vmnet.tar
# patch -p0 -i /tmp/vmware-netfilter.patch
# tar -cf vmnet.tar vmnet-only
# rm -r vmnet-only
# vmware-modconfig --console --install-all

Systemdにサービスを登録

/etc/systemd/system/vmware.serviceを作成します。

[Unit]
Description=VMware daemon

[Service]
ExecStart=/etc/init.d/vmware start
ExecStop=/etc/init.d/vmware stop
PIDFile=/var/lock/subsys/vmware
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

これで、systemctlを使ってサービスを起動できますが、まだやることがあるので、もうちょっと待ってください。

vmciモジュールをロード出来るようにする

これも先に触れた通り、そのままVMware Playerを起動しても「/dev/vmciなんてディレクトリ無いよ」とかなんちゃらでエラーになります。 で、これもArch WikiのTroubleshootingの通り、/etc/init.d/vmwareを編集してあげます。

スクリプト内の以下の箇所を変更します。

関数名:vmwareStartVmci()

vmwareLoadModule "$mod"
↓
vmwareLoadModule "$vmci"

関数名:vmwareStartVsock()

vmwareLoadModule "$mod"
↓
vmwareLoadModule "$vsock"

関数名:vmwareStopVmci()

vmwareUnloadModule "${mod}"
↓
vmwareUnloadModule "${vmci}"

関数名:vmwareStopVsock()

vmwareUnloadModule "$mod"
↓
vmwareUnloadModule "$vsock"

/etc/init.d/vmwareを修正したら、vmware.serviceを起動してみます。

$ sudo systemctl start vmware.service

エラーにならなければOKです。

次はUSBゲームパッドVMwareゲストOSで認識できるように設定します。

# vmware-usbarbitrator
# systemctl restart vmware

これだけです。

ここまでで、VMware Playerは起動できるようになっているはずです。 試しにvmplayerを起動してみてもいいかもしれませんが、まだ設定は終わっていません。

今回は、既にVMwareゲストOSがVMXファイルで存在していることを前提とします。 もし、まだVMwarePlayerにWindowsをインストールしていなければ、先にゲストOSとしてインストールしてください。

そして、最後(多分)に、ゲストOSのVMXファイルを編集します。 ~/VirtualMachines/WindowsXP.vmwarevm/WindowsXP.vmxに以下を追記します。 ※ここのパスは人それぞれです。

mks.gl.allowBlacklistedDrivers = "TRUE"

これは、VMwareゲストOSからホスト上のグラフィックドライバの3Dアクセラレータを使用するみたいなオプションです(適当

さぁ、これでひと通りVMwareの設定が終わりました。 Windowsを立ち上げてUSBゲームパッドを挿して東方を起動してみましょう。

f:id:aburos:20140227225500j:plain

動きました!!!

しかもOSX+VMwareFusionで動かした東方とは比べ物にならないほどヌルヌル動いている気が。 つーかMavericks重いんじゃ。Lion以降重いんじゃ。

まとめ

今回は、Arch LinuxVMware Playerをインストールし、 VMwarePlayerにWindowsをインストールし、なおかつWindows側でDirect3Dが使えるようにし、USBゲームパッドが認識出来るところまで設定をしました。

これでArch Linux使いの人は心置きなくOSXを捨てることが出来ますね!

あとがき

ナズーリンに惚れまくっててほんとつらい

ファイルを実行する時のUNIX/Linux各コマンドの違い

  1. <ファイル名>
  2. exec <ファイル名>
  3. ./<ファイル名>
  4. . <ファイル名>

ふと疑問に思ったので調べた。

<実行ファイル名>と exec <実行ファイル名>の違い

まず、Linuxなどで実行可能な形式にコンパイルされたファイルを実行する場合、2通りの実行方法がある。 ひとつは、そのファイル名を打ち込んでEnter。 もうひとつはexecコマンドを使用する方法。

違いは、子プロセスを使用するかどうかにある。(というか今知った その違いを確かめるのによく使われるのが、以下のコマンド。

exec ls

通常、lsコマンドを打つとカレントディレクトリのファイルやディレクトリが一覧表示される。 で、exec ls と打つとlsコマンドが実行された後、開いていたシェルが閉じられる。 なので、execコマンドは「新規プロセスを作成せずに実行」っていうことがわかる。

〜↓ここからは僕自身が勘違いしていたので覚え直しに〜

./<実行ファイル名>

よく、./configure とかで見かける"./"。 Linuxで使いたいソフトウェアとかインターネット上で見つけては拾ってきて自分でmakeするときとか。 恥ずかしながら、ここで僕は大きな勘違いをしていました。

configureファイルって実行ファイルかと思ってたんですが、make用のスクリプトファイルだったんですね(´・ω・`)

ちなみに、Linux向けのIntelliJを公式からダウンロードして使う場合も、./<intellij.sh> みたいにシェルスクリプトを実行して起動します。 で、”./”はシェルスクリプトを実行するときのコマンドなのかな、と思いきや、ただカレントディレクトリのパスを指定しているだけのようでした。 パスに関係しないシェルスクリプトを実行するだけなら"./"を使わなくても良かったんですね。

逆に、対象となるスクリプト内にパスを通す必要があれば./<スクリプトファイル名>で実行。

exec <実行ファイル名>と. <実行ファイル名>の違い

次に、execコマンドと.(ドットコマンド)。 これも自分が勘違いして実行ファイルを実行するためのコマンドだと思ってたんですが、

. ./<スクリプトファイル>

と、コマンドを打つと、「カレントディレクトリの<スクリプトファイル>内の関数/変数をシェルに読み込む」でした。

普段何気なく使っているコマンドも、いざ調べてみると初歩的なことを見落としていたことに気付かされました(´・ω・`)

参考にしたサイト:

UNIX入門

『UNIX & Linux コマンド・シェルスクリプト リファレンス』by SUNONE