(教材)01【Unixでのコマンド入力の基本】
◆コマンド入力を試してみよう
コンソール(端末)を開くと,「$」記号が表示され,■が点滅しているところがある.これをプロンプトという( システムによって違うが,通常プロンプトの文字には '$' や '%' など使われる ).
プロンプトが表示されている状態は,Unixがあなたからの指示を待っている状態である.では,何かUnixに話しかけてみよう.次のように文字を入力してみる.
( 注:▼はエンターキーを押すことを表す.▼記号は画面には表示されない.)
abc▼
ところが,どうしたことか.画面に変なメッセージが表示される.
code:▼はEnter/■はプロンプト
$ abc▼
$ bash: abc: command not found
$ ■
または
code:▼はEnter/■はプロンプト
$ abc▼
コマンド 'abc' が見つかりません。もしかして:
command 'ac' from deb acct (6.6.4-2)
command 'aec' from deb libaec-tools (1.0.4-1)
…………(複数行)…………
次を試してみてください: sudo apt install <deb name>
$ ■
実は,あなたとUnixの間には「シェル」という名前の通訳がいるのである(シェルについての詳細はここではしない).表示されたメッセージの意味は「abcというコマンドは見つからない」であり,シェルがabcという文字をどのように翻訳してUnixに伝えたらよいのか分からなかった(abcというコマンドは知らない),ということなのである.
今度は,次のように文字を入力してみよう.
cal 10 2009▼ ← 空白は半角
code:▼はEnter/■はプロンプト
$ cal 10 2009▼
10月 2009
日 月 火 水 木 金 土
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
$ ■
おや,今度はカレンダーが画面に表示された.
どうやら,"cal" という文字を,シェルが翻訳してUnixに何をしたらよいのか指示が伝わったようである.
※"cal not found"というエラーがでた人は,次のコマンドでインストールしてください.
$ sudo apt install ncal -y
cal はUnixのコマンド(命令)である.コマンドはシェルが翻訳し,Unixに指示を伝えることができる文字列である.コマンドの文字列はあらかじめ決められているが,Unixではシェルを使って,新しいコマンドを作ったり,コマンドの名前を変えたりすることもできる.
◆コマンドの入力方法
シェルがコマンドを理解できるようにするには,次の書式でコマンドを入力する.
コマンド名 引数 引数 ・・・ 引数
※引数は必要に応じて指定.コマンド・引数の間は「半角スペース」.
引数(ひきすう)は必要に応じて,コマンドのオプションの指定や対象となるファイル名などを書く.
コマンドを実行するためには,次のようにコマンドの後で必ずエンターキーを押す.(▼がEnterキーという意味)
コマンド名 引数 引数 ・・・ 引数▼
通常,オプションの指定は「-」(マイナス記号)をつける.文字列は多くの場合はそのまま指定可能だが,文字列中に空白を含む場合は必ず,「'」(シングルクオーテーション)で囲む.ファイル名はそのまま書く.
例 grep -n mojiretsu file
※ここではまだ意味は説明しない
例 echo 'My Document'
MyとDocumentの間に空白があるので ' ' が必要
コマンドの目的によって引数を指定しない場合もあるし,複数の引数を指定する場合もある.
また,コマンド名,オプション,ファイル名などの間は必ずスペースキーを押して半角スペース(空白)を1文字以上入れる.
次にコマンドの入力例を示す.例として「ls」(エルエス)コマンドを使っている.
※試しに入力してもよい( エラーメッセージが表示されるが今は気にしなくて良い )
●引数を書かない場合
ls (注:lsは「エルエス」)
●ファイル名を指定した場合
ls dir01/file01
●オプション機能を1つ指定した場合
ls -l (注:-lは「マイナスエル」)
●オプション機能を2つ指定した場合
ls -lt
◆コマンドで計算をしよう(bc)
Unixを使って簡単な計算をしてみよう.ここでは,電卓のように使えるbcコマンドを使ってみる.次のようにコマンドを入力する.
code:▼はEnter
bc▼
これだけでは何も表示されないが,これで計算ができる状態になる.
※ここでも"command not found"といわれたら,cal同様にbcをインストールする.
$ sudo apt install bc -y
試しに,簡単な計算をしてみよう.次のように入力する.
code:▼はEnter
1+2+3▼
エンターキーを押すと画面上に計算結果が表示される.
code:▼はEnter
$ bc▼
1+2+3▼
6
■ 3
bcコマンドの状態から抜けるにはCtrl+D(コントロールキーを押しながらDを押す).プロンプトが表示され,Unixのコマンドが入力できる状態に戻る.
bcコマンドで使うことができる算術演算子には次のものがある(下記は全角で表記しているが,実際には半角で入力すること).
+ ・・・ 加算 % ・・・ 余りを求める
- ・・・ 減算 ^ ・・・ べき乗
/ ・・・ 除算(÷) = ・・・ 代入
* ・・・ 乗算(×)
ここで「代入」というのは,値に名前を付けるということである.たとえば,xに3を代入するとは,3という数値に,xという名前をつけるということである.xに3を代入すると,xの値は3になりx+4は7になる.このxのようなものを変数という.変数に値を代入するには,x=3のようにする.次の例を見れば,この意味が分かるであろう.
code:▼はEnter
$ bc▼
x=3▼
x+4▼
7
x▼
3
■
Ctrl+Dで一度bcコマンドを終了させよう.
bcコマンドで小数点以下の値を計算する場合は次のようにscaleに小数点以下の有効桁数を代入して使う(初期状態ではscale=0).以下のことを確かめてみよう.
code:▼はEnter
$ bc▼
1/3▼
0
scale=5
1/3▼
.33333
scale=2
1/3▼
.33
■
このようなキャラクターベースの計算機には違和感があるかもしれないが,慣れればGUIの計算機を使ってマウスで数字ボタンを押すよりも遥かに効率がいい.
なお,bcコマンドを拡張し16進演算や逆ポーランド記法での計算ができる"dc"コマンドも存在する.
※Ctrl+Dに注意※ コマンドへの文字入力の終了を伝えるのにCtrl+Dを使うが,実はシェルに対してもコマンドの終了,つまりシェルそのものの終了を伝える意味がある.したがって,bcコマンドを終了した後,シェルプロンプトに戻っている状態でCtrl+Dを押すと,シェルが終了し,ターミナルウィンドウも消えてしまうので,注意が必要である.(そうならないようなシェルの設定は可能.興味があれば調べてみよう)
★参考:bcはプログラムできる★ ← オプションです
bcコマンドはただ手入力で計算するだけでなく,C言語に似たプログラミング言語を持っている.
例:階乗計算のプログラム
1. 以下のコードをコピーして'kaijo.b'として保存する.(ピンクのタイトルをクリックでコピー可能)
code:kaijo.b
/* Make factorial of a number. */
define fact(n){
if( n<=1 ){
return 1;
}else{
return n*fact(n-1);
}
}
print "\ntyping 'fact(N)' will print factorial of N. *N is a natural number. \n"
2. bcコマンドにkaijo.bを読み込ませる.
code:kaijo.bを実行-▼はEnter
$ bc -q kaijo.b
typing 'fact(N)' will print factorial of N. *N is a natural number. ← 使い方表示
fact(10)▼ ← これを入力する.数字はいろいろ試してみてよい.
3628800
quit▼ ← 終了
$ ■
◆スペルをチェックしよう(ispell)
英語のスペル(つづり)を調べるispellというコマンドを使ってみよう.まず,次のようにコマンドを入力する.
code:▼はEnter
ispell -l▼ (注:-lは「マイナスエル」)
するとプロンプトも何も出ないで,入力待ちの状態になる.そこで,次のような英語の文を入力してみる.
code:▼はEnter
This is a pon.▼
そして,Ctrl+Dを入力する.これは入力が終わったことをispellに伝えるためであり,ispellのコマンドも終了する.すると,文中のスペルの正しくない単語(厳密には,ispellの辞書にない単語)だけ(ここではpon)が表示される.
以上の操作により,次のように画面に表示される.
code:▼はEnter
$ ispell -l▼
This is a pon.▼ [エンターキーの後でCtrl+D]
pon
$ ■ 4
文を入力する際,途中でエンターキーを押して改行しても構わない.また,辞書にない単語が複数ある場合は,複数の行に表示される.以下の例を入力し,確認してみよう.
code:▼はEnter
$ ispell -l▼
This is a pen.▼
This is a pon.▼
This is a ban.▼
This is a bon.▼ [エンターキーの後でCtrl+D]
pon
bon
$ ■
この例は,ponとbonという単語が辞書にないということを示している.
◆単位を変換しよう(units)
単位を変換するunitsというコマンドを使ってみよう.以下は,インチ(inch)をセンチメートル(cm)に変換する例である.次のように入力してみよう.
code:▼はEnter
$ units▼
Currency exchange rates from FloatRates (USD base) on 2019-05-31
3460 units, 109 prefixes, 109 nonlinear units
You have: inch▼
You want: cm▼
* 2.54
/ 0.39370079
You have: [Ctrl+D]
$ ■
最初の"You have:"は何を変換するのかを尋ねているので,インチを指定している.次に何に変換するのかを尋ねているので,センチメートルを指定している.そして,変換結果が表示されている.この表示は,1インチが2.54センチメートルで,1センチメートルが0.39370079インチであることを意味している.unitsは他のコマンドと同様,Ctrl+Dによって終了することができる.
具体的な数量を変換することもできる.たとえば,コンピュータのモニタが21インチというのは,何センチメートルになるか調べることができる.次のように入力してみよう.
code:▼はEnter
$ units▼
2445 units, 71 prefixes, 33 nonlinear units
You have: 21 inch▼
You want: cm▼
* 53.34
/ 0.018747657
You have: [Ctrl+D]
$ ■ 5
この例は,21インチが53.34センチメートルであることを示している.
単位の表記には,省略形(例:meterならm)も使用できる.また,米英どちらのつづりでもよい(例:meterとmetreどちらも可).複数形を入れる必要はない.
unitsでは,bcコマンドと同様,除算(/)やべき乗(^)の記号を用いることができるので,速度や面積・体積の単位の変換も可能である.
なお,物理単位以外に通貨単位も変換できるが,為替レートが最新のものではないので,実際には役に立たない.試しに1ユーロ(euro)が何円(yen)であるか調べてみよう.
◆マニュアルを使おう(man)
Unixでは,コマンドの使い方を示すマニュアルが用意されている.それはmanコマンドで呼び出す.manとはmanualの意味である.manコマンドで呼び出されるマニュアルを"man page"と呼ぶ.たとえば,次のように入力してみよう.
code:▼はEnter
man date▼
DATE(1) User Commands DATE(1)
NAME
date - print or set the system date and time
SYNOPSIS
DESCRIPTION
Display the current time in the given FORMAT, or set the system date.
.............
dateコマンドの使い方が表示される.マニュアルは文字のみで,イラストや画面のコピーなどはない.
読み進めるにはエンターキーを押せば1行ずつ進む.終了するにはqを押せばよい.
man pageでは非常に多くの情報が表示されるが,分厚いマニュアルや辞典をすべて読む必要がないのと同様,その中から自分に必要な情報を見つけ出せばよい(慣れが必要).
こうしたman pageはUnix標準のコマンドについてはすべて用意されているが,標準でないコマンドについては用意されていない場合もある.また,すべてが日本語化されているとは限らず,英語のマニュアルの場合もある.だが,man pageで使われる英語はさほど難しくはないので,コマンドの基本的な使い方やオプションの意味など,最低限必要な情報を読み取れるようにしよう.
ちなみに,manコマンド自体もUnix標準コマンドなので,当然man pageを持っている.次のように入力してみよう.
code:▼はEnter
man man▼
他にも,上記で出てきたコマンド(cal,bc,ispell,units)のman pageを見てみよう.
code:▼はEnter
man cal▼
man bc▼
man isell▼
man units▼
以上.
2023/6/14