Linuxゲリラ戦記を読んでLinuxのことを知る #26〜#37
Linuxゲリラ戦記を読んで理解する。長い・・・。
26.touchコマンド
空のファイルの作成する。
$ touch ファイル名
ファイル名にすでに存在するファイル名を指定した場合は、ファイルの日付だけを更新することができる。
おまけ ワイルドカード
例えばlsコマンドを使うときにテキストファイル(拡張子が.text)だけを表示したいことがある。こういう場合「.text」の前のファイル名は何でもいい。 そういうときにはワイルドカードという特別は「*」を指定する。ワイルドカードは、OSのシェルが提供する特殊な意味を持つアスタリスクである。
以下のように指定してlsコマンドを実行すると、拡張子が.textのファイルだけを表示できる。
$ ls *.text
27.テキストエディタ「nano」
Linuxで有名なテキストエディタといえばEmacsとVimだが、この2つはコマンド操作を使いこなす必要があり、必ずしも初心者向けではない。 nanoはそういう意味で初心者向けのテキストエディタ。OSに最初からインストールされていることが多い。
※基本的にVimを覚えるつもりなのでサラッと触って終了。
28.alias
コマンドに別名をつけること。
今回はbash*1の設定ファイルである「.bashrc」に記述を追加して、cdコマンドのエイリアス「osakana」を作成してみる。
.bashrcは隠しファイルなのでls -l
で実行するとファイルを確認できる。ちなみに隠しファイルを作成するにはファイル名の先頭に.をつければいいだけ。
まず.bashrcファイルを開く。
$vim .bashrc
「cdコマンドのエイリアスosakanaを指定」する設定を追加
alias osakana=‘cd'
実行結果。「osakana」と打ってディレクトリを移動できるようになった。
ちなみにスペースとか入れたらだめらしい。最初alias osakana = ‘cd'
のように「=」 の間にスペース入れたら認識されなかった。
29.chmodコマンド
ファイルのアクセス権限を変更するコマンド。 あるユーザーに対しそのファイルを「読める」「書き込める」「実行できる」の3種類の権利を許可または拒否の設定をする。
一番左
一番左 | 説明 |
---|---|
- | ファイル |
d | ディレクトリ |
rwx
rwx | 説明 |
---|---|
r | ファイルを見る権利 |
w | ファイルに書き込む権利 |
x | ファイルを実行する権利 |
人やグループごとの設定
人やグループ設定 | 説明 |
---|---|
左3つ | そのファイルを所有している人の権限 |
真ん中3つ | そのファイルを所有しているグループの権限 |
右3つ | その他の人の権限 |
所有者とグループ
左側がそのファイルの所有者名。右側がそのファイルの所有グループ名
アクセス権限の変更
以下のように記述する。
$ chmod u+x ファイル名(またはディレクトリ名)
オプションの意味は以下の通り。
オプション | 説明 |
---|---|
u | そのファイルの所有者 |
g | そのファイルの所有グループ |
o | その他の人 |
w | 書き込み権限 |
r | 読み取り権限 |
x | 実行権限 |
+ | 権限を与える |
- | 権限を拒否する |
30.echoコマンドとexprコマンド
echoコマンド
exprコマンド
シェル画面上で計算をするためのコマンド。 足し算(+) 引き算(-)掛け算( *)*2割り算(/)余りを求める(%)の計算ができる。 数字と記号の間にはスペースを入れること。
$ expr 3 + 5
31.シェルスクリプトでプログラミング
シェルスクリプトとは、複数のコマンドを組み合わせてひとつのプログラムにしたもの。 シェルスクリプトのファイルを作成する場合、拡張子は「.sh」にする。
1から10まで表示するシェルスクリプト
#!/bin/sh a=1 while [ $a -le 10 ] do echo $a a=`expr $a + 1` done
- 1行目 シバン。 シェルスクリプトを書くときのおまじない。
- 3行目 変数a に1を代入。*3
- 4行目 「変数aが10よりも小さいか等しい間、
do 〜 done
間の処理を繰り返す」という条件が書かれている。 - 5行目 変数aの中身を標準出力(画面)に出力。
- 6行目 右辺「変数aに1を加算」した結果を左辺の変数aに代入。ここで変数aの値は2になる。 計算結果を変数に代入する場合``(バッククォート)で囲む。
6行目まで終わると4行目のwhile文に戻り、whileの条件に当てはまる間do 〜 done
の処理を繰り返す。
do 〜 done
のループ処理のように、処理を入れ子にする場合Tabでインデントを下げること(可読性の向上)。
実行結果
Ctrl+C
無限ループしたらCtrl+Cで強制終了。
32.diffコマンド
2つのファイルを比較するコマンド。
$ diff moto.txt count.sh
33.lwp-requestコマンドと/dev/null
lwp-requestコマンド
Webサーバにリクエストメッセージを送りその応答を表示する。
(と、ここでlwp-requestがインストールされていなかったので「libwww-perl」パッケージをインストールした。)
$ lwp-request http://www.garunimo.com/program/linux/sample/counter.php
実行結果。サーバーからHTMLが返されているのがわかる。
/dev/null
次に> /dev/null
を追加して実行する。
$ lwp-request http://www.garunimo.com/program/linux/sample/counter.php > /dev/null
実行結果には何も表示されない。
これはサーバーから返される実行結果をリダイレクトして/dev/nullに送り込んでいるためだ。
「>」がリダイレクト。パイプの仲間のようなもので、パイプ「|」はその結果を別のコマンドの入力として渡したいときに使用するのに対し、リダイレクト「>」はあるコマンドの出力結果を別のファイルに書き込むときに使用する。
今回の場合、リダイレクトで出力結果を書き込む先が「/dev/null」になっている。
この「/dev/null」はUNIXやUnix系オペレーティングシステム (OS) におけるスペシャルファイルの1つで、そこに書き込まれたデータを全て捨てて読み出してもどんなプロセスに対してもデータを返さない特別なファイル。ブラックホールのような存在。
つまり実行結果をリダイレクトでブラックホールに送り込んでいるため、lwp-request
コマンドは実行されているにもかかわらず画面には実行結果が表示されないのである。
34.nslookupコマンドとwhoisコマンドとifconfigコマンド
nslookupコマンド
DNSサーバーに問い合わせてホスト名からIPアドレスを取得する。または逆にIPアドレスからホスト名の取得も可能。 IPアドレスやホスト名を調べる他、DNSサーバが正常に動作しているのかを調べる際にも使用したりする。
$ nslookup IPアドレス(またはドメイン名)
whoisコマンド
whoisコマンドはドメイン名、またはIPアドレスからドメインの情報を取得する。
$ whois ドメイン名またはIPアドレス
ifconfigコマンド
(ifconfigコマンドの説明の前に)ifconfigを実行しようと思ったら入ってなかったので「net-tools」パッケージをインストール。
ところが、インストール後$ ifconfig
を実行 しても「Command not found」と言われてしまう。なんでなんだ・・・。
ここで調べたところ、net-tools は/sbinの下にインストールされるが、そのパスが通っていないらしい。 試しに
$ /sbin/ifconfig
と打ったら実行できたのでPATHが通っていないことに間違いなさそう。パスの通し方は ここ参照。
インストールパスの確認方法はこれでいける。
$ dpkg -L net-tools | grep ifconfig
あらためてifconfigのコマンド。
$ ifconfig
35.pingコマンドとtracerouteコマンド
pingは、ネットワーク疎通を確認したいホストに対してIPパケットを発行し、そのパケットが正しく届いて返答が行われるかを確認するためのコマンド
$ ping www.yahoo.co.jp
tracerouteは、あるホストから別のホストまでのネットワーク経路をリスト表示するコマンド。ここでいう経路とは、ホスト間を接続するルーター(ゲートウェイ)のこと。tracerouteにより、経路上にどのようなルーターが位置しているかを表示する。
$ traceroute www.yahoo.co.jp
主な用途としては、pingで相手ホストから正常な応答がなかった場合などに、ホスト自身や経路上のルーターのルーティング設定が正しいかどうかを確認するために用いられる。
順番的にはpingしてからtracerouteする感じ。
36.findコマンド、locateコマンド
findコマンド
$ find 検索を開始するディレクトリ -name ファイル名
locateコマンド
$ locate 検索キーワード
findコマンドでは直接ファイルやディレクトリを探す。
対して、locateコマンドは、あらかじめ検索しておいたファイルやディレクトリのデータベースを検索することで高速な検索を行うことができる。
37.設定ファイルをいじる
設定ファイルの変更は.bashrcファイルの変更のときにやったし、nanoを使用していないので割愛。