読者です 読者をやめる 読者になる 読者になる

Engineer of the lawyer

I was able to pass the Network Specialist. Next target is the Project Manager.

第3章 GNU&UNIXコマンド 2

#でサーチするとコマンドや重要なキーワードが検索できます。

 

【パイプとリダイレクト】

パイプとは、

コマンドやプログラムの出力結果を別のコマンドやプログラムの入力に渡すことができる。

(例)

[hogehoge@localhost ~]$ cat test.txt

test

test2

test3

test4

test5

test6

※test.txtファイルを作成し、適当な文字列を入力したものをテスト用に作成しています。

 

[hogehoge@localhost ~]$ cat test.txt | grep test6

test6

 

 

catでtest.txtファイルを表示した結果のうち、grepで"test6"が含まれる個所を表示できました。

 

 

コマンドの実行結果をファイルに保存するとともに、画面上に表示したい場合パイプだけでは解決できないので以下のコマンドを使う。

#tee

tee [オプション] ファイル名

オプション

-a ファイルに上書きするのではなく追記する

(例)

 

[hogehoge@localhost ~]$ ls -l | tee text.txt

合計 8

drwxrwxr-x. 2 hogehoge hogehoge 4096  6月  1 05:49 2013 test

-rw-rw-r--. 1 hogehoge hogehoge   35  6月  3 14:34 2013 test.txt

-rw-rw-r--. 1 hogehoge hogehoge    0  6月  3 14:42 2013 text.txt

 

 

 リダイレクト

コマンドの実行結果を画面に表示するのではなく、ファイルに保存したい場合

#>

(例)

[hogehoge@localhost ~]$ ls -l > text.txt

[hogehoge@localhost ~]$

↑ls -l の実行結果が画面に表示されていない。ファイルに上書きするので注意。また、ファイルが存在しない場合は新規にファイルを作成する。

 

ファイルを上書きしないで末尾(マツビ)に追記する場合。

#>>

 

 [hogehoge@localhost ~]$ ls -l >> text.txt

[hogehoge@localhost ~]$ cat text.txt

合計 8

drwxrwxr-x. 2 hogehoge hogehoge 4096  6月  1 05:49 2013 test

-rw-rw-r--. 1 hogehoge hogehoge   35  6月  3 14:34 2013 test.txt

-rw-rw-r--. 1 hogehoge hogehoge    0  6月  3 14:46 2013 text.txt

合計 12

 

drwxrwxr-x. 2 hogehoge hogehoge 4096  6月  1 05:49 2013 test

-rw-rw-r--. 1 hogehoge hogehoge   35  6月  3 14:34 2013 test.txt

-rw-rw-r--. 1 hogehoge hogehoge  203  6月  3 14:46 2013 text.txt 

[hogehoge@localhost ~]$

 

 

【テキスト処理フィルタ】

ファイルを表示する。

#cat 

オプション

-n 各行の左端に行番号を付加する

 

テキストファイルに行番号をつけて表示する

#nl

オプション

-b 形式 指定した形式で本文に行番号を付加する

-h 形式 指定した形式でヘッダに行番号を付加する

-f 形式 指定した形式でフッタに行番号を付加する

形式

a すべての行

t 空白以外の行

n 行番号の付加を中止

 

バイナリファイルの内容を8進数や16進数で表示する。デフォルトでは8進数

#od

od [オプション] ファイル名

オプション

⁻t [出力タイプ] 出力するフォーマットを指定する

出力タイプ

c ASCII文字

o 8進数(デフォルト)

x 16進数

 

ファイルの先頭部分を表示。デフォルトでは10行

#head

head [オプション] ファイル名

オプション

-n 行数 先頭から指定された行数分だけ表示する

-c バイト数 出力するバイト数を表示する

 

ファイルの末尾を表示する。デフォルトでは10行

#tail

tail [オプション] ファイル名

-n [行数] 末尾から指定された行数分だけ表示する

-c [バイト数] 末尾から指定されたバイト数だけ表示する

-f ファイルの末尾に追加された行を表示し続ける

 

ファイルの各行から指定した部分を取り出す

#cut

cut [オプション] ファイル名

-c [文字数] 取り出す文字位置を指定する

-d [区切り文字] フィールドの区切り文字を指定する

-f [フィールド] 取り出すフィールドを指定する

 

(例)

[hogehoge@localhost ~]$ cat /etc/hosts

127.0.0.1   hogehoge localhost.localdomain localhost4 localhost4.localdomain4

::1         hogehoge localhost.localdomain localhost6 localhost6.localdomain6

[hogehoge@localhost ~]$ cut -c 3 /etc/hosts

7

1

※/etc/hosts の3文字目を取り出した。

 

 

2つのファイルを読み込んで共通のフィールドを持つ行を連結

#join

join [オプション] ファイル名1 ファイル名2

オプション

-j [フィールド] 連結するフィールドを指定する

 

1つ以上のファイルを読み込んで、それぞれで一致する行を水平方向に連結する。デフォルトの区切り文字はタブ

#paste

paste [オプション] ファイル名1 ファイル名2

-d [区切り文字] 区切り文字を指定する

 

※joinとpasteの違いについては異なるファイルを連結することは共通するが、連結する際に区切り文字を含むか含まないか?(すいません、勉強不足です)

 

標準入力から読み込まれた文字列を変換、削除できる

#tr

paste [オプション] [文字列1 [文字列2]]

オプション

-d 文字列1でマッチした文字列を削除する

-s 連続するパターン文字列を1文字として処理する

※クラスについては省略

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230906/

 

行単位でファイルの内容をソートする。デフォルトでは昇順。

#sort

オプション

-b 行頭の空白は無視する

-f 大文字小文字の区別を無視する

-r 降順にソートする(リバース?)

-n 数字を文字ではなく数値として処理する

 

指定されたサイズでファイルを分割。デフォルトでは1000行ごと

#split

split [オプション] [入力ファイル名 [出力ファイル名]]

オプション

-[行数] 入力ファイルを指定された行ごとに分割する

 

重複する行をまとめて表示する

#uniq

オプション

-d 重複している行のみ出力する

-u 重複している行は1行にまとめて表示する

 

ファイルの書式を整える。印刷する前の整形に利用される。

#pr

pr [オプション] ファイル名

オプション

+開始ページ:終了ページ 開始ページや終了ページを指定する

-hヘッダ文字列 ヘッダに表示されるファイル名を指定した文字に変更する

-lページ長 ヘッダとフッタを含めたページの長さを行数で指定する。デフォルトは66行

 

決められた桁に整形

#fmt  (フォーマット)

fmt [オプション] ファイル名

-w文字幅 1行の幅を設定する

 

テキストファイルの中にあるタブをスペースに変換

#expand

expand [オプション] ファイル名

-i 行頭のタブのみ変換する

-tタブ幅 タブ幅を設定する(デフォルトは8桁)

 

行頭にある連続した空白をタブに変換する

#unexpand

-a 行頭以外の空白も変換する

-tタブ幅 タブ幅を設定する(デフォルトは8桁)

 

ファイルの行数、単語数、文字数を表示

#wc

wc [オプション] ファイル名

-c 文字数を表示

-l 行数を表示

-w 単語数を表示

※オプション省略で行数、単語数、文字数を表示する

 

(例)

hogehoge@localhost ~]$ wc text.txt

  8  64 407 text.txt

 

 

[hogehoge@localhost ~]$ ls -l | wc -l

7

 

 

標準入力から受け取った文字列を引数に指定して、与えられたコマンドを実行する。

#xargs

複雑なので参考ページ参照

http://x68000.q-e-d.net/~68user/unix/pickup?xargs