コマンドラインの基礎

参考書籍 : 実践bashによるサイバーセキュリティ対策



Windows Subsystem for Linux
↓が詳しい
シェルスクリプトに挑戦しよう(2)Windows 10のbashを試す! (1/2):“応用力”をつけるためのLinux再入門(22) - @IT



コマンドラインの基礎
$command args でプログラムを実行する
$mkdir -p /tmp/scratch/garble のように、1つ目の引数はオプションの場合が多い



・ファイル、組み込みコマンド、予約語
実行できるコマンドは、ファイル、組み込みコマンド、予約語、のいずれか
①ファイル : コンパイルされたバイナリか、スクリプトファイル。バイナリの大半は/bin/lsに存在する。
②組み込みコマンド : シェルに組み込まれているコマンド、実行するファイルは存在しない
予約語 : if など特殊な意味を持つもの
ファイル、組み込みコマンド、予約語は、組み込みコマンドtypeで判別できる

$type -t if
keyword

 


・標準入力、標準出力、標準エラー出力 / リダイレクトとパイプ
標準入力はデフォルトでキーボードだが、リダイレクトでファイルから入力できる

$ handywork < data.in

標準出力はデフォルトでウィンドウだが、標準出力もリダイレクトでファイルへ出力できる

$ handywork < data.in > result.out  # data.inが入力でhandyworkが実行、result.outに出力

標準エラー出力のデフォルトは標準出力と同じだが、こちらもリダイレクトで変更可能

$ handywork 2> err.msgs

標準出力と標準エラー出力を同じファイルに送るには、以下のようにする

$ handywork > results.out 2>&1
$ handywork &> results.out # ↑の簡略記法

パイプでコマンドやスクリプトの出力を、別のコマンドの入力にできる

$ ps aux | grep username

teeコマンドでウィンドウとファイルに同時出力できる

$ handywork < data.in | tee results.out

ファイル出力を上書きでなく追記にするには、>>を使う

$ handywork < data.in >> result.out
$ handywork < data.in &>> result.out  # 標準エラー出力も同時に追記

 


・コマンドのバックグラウンド実行
コマンドの末尾に&をつけることで、コマンドをバックラインで実行できる

$ ping 192.168.100.101 &> ping.log &

jobsコマンドで、実行中のタスクを一覧表示でき、fgでバックグラウンドタスクをフォアグラウンドに戻すことができる
フォアグラウンドで実行中のタスクはCtrl-Zで中断、Crtl-Cで終了できる



コマンドラインからスクリプト
シェルスクリプトを作成し、bash scriptfileか./scriptfileでシェルスクリプトを実行できる
シェルスクリプトには、chmod 755 scriptfileなどで実行権を付与しておく
OSに対して、使用するスクリプト言語を指定するために、↓のような行をスクリプトの先頭行に入れておくことが多い

#! /bin/bash -
#! /usr/bin/env bash