目次
必要な行だけを取り出して表示しよう
grepコマンドを使う
[log.log]ファイルから「wantan」の文字列を含む行を抽出する。
grep "wantan" log.log
grepコマンドで特定行を除く
[log.log]ファイルから「wantan」を含まない行を抽出する。
grep "wantan" log.log
パイプラインでコマンドをつなぐ
↑の結果をlessコマンドで表示する。
grep "wantan" log.log | less
コマンドとコマンドをパイプライン( | )でつなぐ。
前方コマンドの標準出力を後方コマンドの標準入力として渡している。
ファイルに追加された行から特定の文字列を含む行だけを抽出する
ログファイルを見るのとかでよく使うあれ
昔職場で習ったけど意味も分からず使ってた思い出。。
tail -F log2.log | grep "wantan"
「tail -F log2.log」で追加された行を抽出し標準入力として後半のコマンドに渡す。
grepコマンドで"wantan"を含む行のみを抽出する。
簡単に試してみる。
tmuxで2窓開く。
片方の窓で「top」コマンドのログを出力する。
これでlog2.logファイルに随時行が追加される。
top >> log2.log
tmuxのもう片方の窓で「log2.log」ファイルから上記の条件で行を抽出する。
tail -F log2.log | grep "wantan"
↓しばらくすると↓
満足したら「Ctrl + C」で終了!!
シェルスクリプトを使ってみよう
シェルスクリプトとは
シェルスクリプト (英語: shell script) は、オペレーティングシステムのシェルまたはコマンドラインインタプリタ向けに書かれたスクリプト言語である。狭義では、Unixシェルで用いられるスクリプト言語を指す。シェルスクリプトは他のツールを組み合わせるためのグルー型のドメイン固有言語とみなされることもある[1]。シェルスクリプトで書かれる典型的処理としては、ファイル操作、プログラム実行、テキストの印刷などがある。
引用元:シェルスクリプト - Wikipedia
Linuxコマンドを予めテキスト形式で記述しておき実行する。
Linux環境でのコマンドを使った一連の作業を自動化することに効力を発揮すると思っている。
実際に書いてみよう
シェルスクリプトは一般に「.sh」識別子でファイルを作成する。
vimなどで作成する。
vim testShell.sh
さっそく書いてみる。
シェルスクリプトは先頭行にジバンと言われる以下を記述する。
#!/bin/bash
とりあえず適当に書いてみて実行してみる。
内容は以下の通り。
#!/bin/bash cd / #ルートディレクトリに移動 ls -l > /home/wantan/work/sampleDir/shell.log #実行結果をログファイルに書き出す cd /home/wantan/work/sampleDir/ #作業ディレクトリに移動 ls -l >> /home/wantan/work/sampleDir/shell.log #実行結果をログファイルに追記
実行してみよう
実行の際の注意としてvimで作成すると作成ユーザの実行権限がついていないはず
パーミッションは以下の通りの仕組みになっている。
実行権限の「X」がついていないことがわかる。なので実行権限を付与する。
chmod 775 testShell.sh
xが付与されてることを実行したら実行!
./testShell.sh
カレントディレクトリなら「./」でOK
別のディレクトにシェルスクリプトが存在するならそこを指定する。
無事にルートディレクトリと作業ディレクトリの「ls」の実行結果がログに残っていたのでOK!