GNUとUnixのコマンド

コマンドラインの操作

シェル

入力されたコマンドを受け付け、対応するプログラムを実行しているプログラムをシェルといいます。

シェル変数

変数を設定したシェル上でのみ有効な変数です。

exportコマンド

シェル変数を環境変数に変更します。

操作シェル変数環境変数
設定変数名=値export 変数名
export 変数名=値
declare -x 変数名=値
表示setenv
削除unset 変数名unset 変数名

環境変数

シェル上に加えてそのシェル上で起動した子プロセス(アプリケーション、コマンド)でも有効です。

シェルの種類やコマンド検索のパス等、動作に影響する設定値です。

HISTFILEコマンド履歴保存ファイルのパス
HISTSIZE現在のシェルでのコマンドの保存数
HOMEログインしているユーザのホームディレクトリ
PATHコマンドやプログラムを検索するディレクトリのリスト
PWDカレントディレクトリのパス

引用符

「’」シングルクォーテーション

文字列と解釈

「”」ダブルルクォーテーション

文字列と解釈し、変数を展開します。

またバッククォーテーションが使われている場合、その中も展開されます。

「\」バックスラッシュ

バックスラッシュ直後の文字は文字列と解釈され、展開されません。

バックスラッシュは文字とよばれます。

「`」バッククォーテーション

コマンドは実行結果が展開されます。

メタキャラクタ

シェルによって特別に解釈される文字をメタキャラクタといいます。

メタキャラクタ
*0文字以上の文字列
?任意の1文字
[][~] 内の任意の1文字
[!~] 以外の任意の1文字

フィルタを使ったテキストストリームの処理

cat

ファイルの内容を標準出力に出力します。concatenate ( つなぐ、連結する )

-n –number各行の左に番号を付与

od

バイナリーファイルを8進数や16進数で表示します。(デフォルトは8進数)

-t -format 出力ファイル出力するフォーマットを指定
出力タイプ
cASCⅡ文字
o8進数(デフォルト)
t16進数

paste

1つ以上のファイルを読み込み、行ごとに水平方向に連結します。

区切り文字はデフォルトでタブ

-d 区切り文字区切り文字を指定(デフォルトはタブ)

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

join

2つのファイルを読み込んで、共通のフィールドを持つ行どうし連結します。

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

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

fmt

テキストを1行あたり決められた桁数に整形します。

-w 1行の文字数を指定

ストリーム、パイプ、リダイレクトの使用

リダイレクト

通常コマンドの実行結果は画面上に表示されますが、リダイレクトは実行結果をファイルに保存したり、用意しておいたファイルに使用する場合に使います。

コマンド>ファイルコマンドの標準出力をファイルに書き込む
コマンド<ファイルファイルの内容をコマンドの標準入力に送る
コマンド>>ファイルコマンドの標準出力をファイルに追記
コマンド<<終了文字終了文字が現れるまで標準入力へ送る
コマンド1|teeファイル|コマンド2コマンド1の出力結果をコマンド2の標準入力に渡し、併せてファイルに書き込む

tee

teeコマンドは標準入力の内容を、Tの字のように、標準出力先とファイルの両方に出力するコマンドです。

通常、|(パイプ)と使用します。コマンドの標準出力をteeコマンドの標準入力に渡します。

コマンド | tee ファイル

xargs

あるコマンドの出力を、別のコマンドの引数として実行します。

正規表現を使用したテキストファイルの検索

正規表現

.任意の1文字
*直前の文字列の0回以上の繰り返し
[][]内の1文字、-は範囲指定、^は後続の文字列以外
^行頭
$行末
\次の文字をエスケープ(通常の文字として処理)
+直前の文字を1回以上繰り返し
?直前の文字を0、1回の繰り返し(拡張正規表現)
|左右どちらかの文字列(拡張正規表現)

grep

検索文字列があるかどうか調べます。

-c –countマッチした行数を表示
-f –file検索パターンをファイルから読み込む
-i –ignore-case大文字小文字区別しない
-n –line-number併せて行番号も取得
-v –invert-matchマッチしない行を表示
-E –extended-regexp拡張正規表現を使用(egrepと同様)
-F固定文字列とする(fgrepと同様)

sed

stream editor

オプション
-f ファイルコマンドに書かれたスクリプトファイルを指定
-i処理した内容でファイルを上書き
-e編集コマンドを指定(1つの場合省略可能)
sed オプション -e 編集コマンド1 -e 編集コマンド2 ファイル名
sコマンド(置換)
s/文字列1/文字列2/各行の最初に現れる文字列1を文字列2に置換
s/文字列1/文字列2/gすべての文字列1置換
s/文字列1/&を含む文字列2/&に文字列1を再利用
dコマンド(置換)
/文字列/d文字列が含まれる行を削除
行番号1,行番号2d行番号1から行番号2までの行を削除

エディタを使った基本的なファイル編集の実行

viエディタ

テキストファイルを編集するときに使います。

viの起動直後はコマンドモードになっています。

vi [-R] [ファイル名]
-Rオプションは読み取りモード、ファイル名を指定しなければ空の新規ファイルを作成します。

入力モード

iカーソルのある位置の左から入力 insert
aカーソルのある位置の右から入力 append
Iカーソルのある行の先頭から入力
Aカーソルのある行の末尾から入力
0カーソルのある行の上に空白行を挿入し、その行で文字を入力します。
oカーソルのある行の下に空白行を挿入し、その行で文字を入力 open line

カーソル操作

h
l
k
j
O行の先頭へ移動
$行の末尾へ移動
H画面の一番上の行頭へ移動
L画面の一番下の行頭へ移動
ggファイルの先頭行へ移動
Gファイルの最終行へ移動
nG
:n
ファイルのn行目に移動

編集コマンド

yy Y (yank)行をバッファにコピーします。コマンドの直前に数字を付けると、その回数分viコマンドが繰り返されます。
yw(word)カーソル位置の単語をコピーします。
ddカーソル位置の行を削除し、バッファにコピー
dw(dlelete word)カーソル位置から次の単語までを削除し、バッファにコピー
xカーソル位置の文字を削除し、バッファにコピー
Xカーソル位置の左の文字を削除し、バッファにコピー
p(paste)バッファの内容を挿入します。文字はカーソルの右、行はカーソルの下に挿入されます。
Pバッファの内容を挿入します。文字はカーソルの左、行はカーソルの上に挿入されます。
u直前の操作をキャンセル

:r 指定したファイルの内容をカレント行の後に読み込んで挿入する

viエディタの終了、保存

:q(quit)viを終了します、内容が変更されている場合警告が表示されます。
:q!強制終了します。
:w編集内容を保存
:wq 😡 ZZ編集内容を保存し、終了
:wq!編集内容を保存し、強制終了
:e ファイル名viを終了せず、現在のファイルを閉じて別ファイルを開く
内容が変更されている場合はファイルを開くことができない
:e! ファイル名viを終了せず、現在のファイルを閉じて別ファイルを開く

ファイル名を省略した場合、最後に保存した状態に戻す

cat

od

sed

head

tail

cut

paste