5次元のカオス

南の島の学生がつらつらと日々を書き連ねます

Linuxコマンド健忘録

何回も忘れては調べ直してを繰り返してる気がするので、健忘録としてメモ.

随時、追加していけたらいいなあとか思ったり.

ワイルドカードの展開

$ mv test.{txt,md}

→ mv test.txt test.md というふうに展開される

find コマンドのワイルドカード展開

シェルはワイルドカードを展開してからスクリプトを実行する.

例えば下記の例.

カレントのディレクトリにあるtest.txtにマッチし、それが展開されたfindコマンドが実行される.

$ sudo find / -name *.txt
$ touch test.txt
$ sudo find / -name *.txt

これを抑制するためには、 -name オプションの文字列をシングルクォーテーションで囲む必要がある.

[技術][unix][未解決] スクリプトに渡す引数でワイルドカードが展開 - 読書子の日記 http://d.hatena.ne.jp/risingsun/20050217

diff, patchコマンドでファイルの変更を別のファイルへ適用する

$ diff -u 変更前のファイル 変更後のファイル > パッチファイル名

ファイルにpatchを当てる際にバックアップを作成する text1.origみたいな感じの拡張子を持ったファイルができる

su, su - の違い

環境変数を引き継ぐかどうかの違い. 通常は - をつけた方が良い.

環境変数を引き継がない場合は, 直接コマンドのパスを指定すれば良い.

ネットワーク系のコマンド

dig コマンド

dig コマンドは DNS の名前解決の状況確認やトラブルシューティングといったネームサーバーの管理用途に利用する。

例えば、 yahoo.co.jp のアドレスを DNS に問合せた結果。

$ dig yahoo.co.jp

; <<>> DiG 9.8.3-P1 <<>> yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13182
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;yahoo.co.jp.           IN  A

;; ANSWER SECTION:
yahoo.co.jp.        159 IN  A   183.79.135.206
yahoo.co.jp.        159 IN  A   182.22.59.229

;; Query time: 9 msec
;; SERVER: 61.207.11.153#53(61.207.11.153)
;; WHEN: Mon Dec 14 01:55:51 2015
;; MSG SIZE  rcvd: 61

ルートサーバーを運用している組織は世界中で12組織あり、 VeriSign 社が二つのサーバを運用しているため、全部で13のサーバがルートサーバーとしてDNSに登録されてる。

Root Server Technical Operations Assn というサイトでルートサーバーのある場所と名称を確認できる。

ちなみに日本には WIDE プロジェクト が運用する M Root DNS Server があるらしい。

DNS を指定してアドレスを問い合わせるためには @ に続いて DNS サーバーを記述する。

$ dig @m.root-servers.net yahoo.co.jp

; <<>> DiG 9.8.3-P1 <<>> @m.root-servers.net yahoo.co.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63865
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 13
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;yahoo.co.jp.           IN  A

;; AUTHORITY SECTION:
jp.         172800  IN  NS  d.dns.jp.
jp.         172800  IN  NS  e.dns.jp.
jp.         172800  IN  NS  f.dns.jp.
jp.         172800  IN  NS  c.dns.jp.
jp.         172800  IN  NS  b.dns.jp.
jp.         172800  IN  NS  a.dns.jp.
jp.         172800  IN  NS  g.dns.jp.

;; ADDITIONAL SECTION:
a.dns.jp.       172800  IN  A   203.119.1.1
b.dns.jp.       172800  IN  A   202.12.30.131
c.dns.jp.       172800  IN  A   156.154.100.5
d.dns.jp.       172800  IN  A   210.138.175.244
e.dns.jp.       172800  IN  A   192.50.43.53
f.dns.jp.       172800  IN  A   150.100.6.8
g.dns.jp.       172800  IN  A   203.119.40.1
a.dns.jp.       172800  IN  AAAA    2001:dc4::1
b.dns.jp.       172800  IN  AAAA    2001:dc2::1
c.dns.jp.       172800  IN  AAAA    2001:502:ad09::5
d.dns.jp.       172800  IN  AAAA    2001:240::53
e.dns.jp.       172800  IN  AAAA    2001:200:c000::35
f.dns.jp.       172800  IN  AAAA    2001:2f8:0:100::153

;; Query time: 30 msec
;; SERVER: 202.12.27.33#53(202.12.27.33)
;; WHEN: Tue Dec 15 02:01:15 2015
;; MSG SIZE  rcvd: 425

nslookup コマンド

dig コマンドと似たコマンドとして nslookup コマンドがある。

$  nslookup yahoo.co.jp
Server:     61.207.11.153
Address:    61.207.11.153#53

Non-authoritative answer:
Name:   yahoo.co.jp
Address: 183.79.135.206
Name:   yahoo.co.jp
Address: 182.22.59.229

2つのコマンドの違いについては @IT:DNS Tips:digコマンドとnslookupコマンドの違いとは を見る限りだと、DNS の挙動を見たいときは dig コマンド、 純粋に IP アドレスとの ドメイン名の対応を見たい時は nslookup コマンドはというように見える。