101−3GNUとUNIXコマンド

補完機能

  ・入力途中でTabキーを押すと残り部分が自動入力される。 
  ・該当が複数ある場合は、tabキーを2回押すと候補が表示される。

シェル

  ・ユーザからコマンドを受け付け必要なプログラムを実行
  ・代表的なシェル

BourneUNIXの標準的なシェル
BashBourneシェルを改良したもの。Linuxの標準シェル
Cシェル(csh)C言語に似たスクリプトが利用できる
tcshcshを改良したもの
Kornシェル(ksh)Bourneを拡張したもの
zshkshにbashやtcshの機能を取り入れたもの

ログインシェル

  ・システムログイン直後に起動されるシェル
  ・ログイン後、シェルは「$」や「#」等のプロンプトを表示
  ・一般ユーザとrootではプロンプトが異なる
     ・シェルのプロンプト表示形式は環境変数、PS1で設定可能。
  ・ログイン後、シェルは「$」や「#」等のプロンプトを表示

シェルのオプション機能

  ・setコマンドで有効・無効を設定、環境変数を表示する
  ・引数を指定しない場合は全てのシェル変数と環境変数を表示
  ・printenvenvは環境変数を表示するコマンドでオプションを設定する機能はない

コマンドラインの基本操作

コマンド説明
Ctl + Aカーソル行頭に移動する
Ctl + Eカーソル行末に移動する
Ctl + Dカーソル部分の1文字削除
Ctl + Hカーソル左側の1文字削除
Ctl + L画面をクリアしカレント行を再表示する
Ctl + C処理中断
Ctl + Z処理を一時停止

ディレクトリの指定

コマンド説明
ホームディレクトリ
.カレントディレクトリ
..一つ上のディレクトリ
  ・カレントディレクトリのパスを表示する
     ・pwd(Print Working Directory
     ・echo $PWD   $PWD(カレントディレクトリのパスが格納される環境変数)

シェル変数と環境変数

  ・有効範囲の違い
    ・シェル変数:変数を定義したシェルプロセス
    ・環境変数 :変数を定義したシェル。そのシェルで実行されるプロセス
  ・主な環境変数

変数説明
EDTIORデフォルトエディタのパス
HISTFILEコマンド履歴格納ファイル
HISTFILESIZEHISTFILEに保存する履歴数
HISTSIZEコマンド履歴の最大値
HOMEカレントユーザのホームディレクトリ
HOSTNAMEホスト名
LANG言語
LONGNAMEログインシェルのユーザ名
PATHコマンドやプログラムを検索するディレクトリリスト
PS1プロンプトの表示文字列
PS2複数行に渡る入力時のプロンプト
PWDカレントディレクトリ
TERM端末の種類
USER現在のユーザ

  ・変数の設定方法
    ・シェル変数 : 変数名=値
    ・環境変数  : exportコマンドで設定
              シェル変数設定後:   VAR=lpic と設定後  export VAR 
              シェル変数と同時設定: export VAR=lpic
  ・変数の表示
    ・echo [文字列または$変数名]
              VAR=lpic
              ecoh $VAR ー>  lpicと表示される

  ・変数の解除 
    ・unset [変数名]を使う -> unset VAR

環境変数PATH

  ・コマンドの種類
    ・内部コマンド : シェルに組み込まれているもの
    ・外部コマンド : 独立したプログラムが存在するもの
  ・環境変数PATH
     外部コマンドを実行する場合、シェルはそのコマンドがどこに保存されて
     いるのか環境変数PATHに指定された順番で調べて実行する。
  ・パスを通す
     コマンドが保存されたディレクトリを環境変数PATHに追加すること
  ・パスの追加方法
  ・コマンドの種類
    ・内部コマンド : シェルに組み込まれているもの
    ・外部コマンド : 独立したプログラムが存在するもの
  ・環境変数PATH
     外部コマンドを実行する場合、シェルはそのコマンドがどこに保存されて
     いるのか環境変数PATHに指定された順番で調べて実行する。
  ・パスを通す
     コマンドが保存されたディレクトリを環境変数PATHに追加すること
  ・パスの追加方法
    ・~/.bash_profileなどの環境設定ファイルを修正する
    ・PATH=$PATH:追加するディレクトリ名
          例:/opt/binを末尾に追加する場合 ー> PATH=$PATH:/opt/bin
            $PATHの部分が現在設定されている値
            PATH=/opt/bin とすると、/opt/bin以外のpathが無くなる。

コマンドの実行

  ・基本書式 コマンド オプション 引数
  ・コマンドは1行に複数を並べて実行できる

コマンド説明
コマンド1;コマンド21に続いて2が実行される
コマンド1&&コマンド2コマンド1が正常に終了すると2が実行される
コマンド||コマンド2コマンド1が正常に終了しなかった場合にコマンド2を実行する
(コマンド1;コマンド2)コマンド1とコマンド2を、ひとかたまりのグループで実行する
{コマンド1;コマンド2;}現在のシェル内でコマンド1とコマンド2を実行する

引用符

  ・「’」 単一引用符
     ・全て文字列になる
     ・変数はそのまま表示される。※値は表示できない
        $echo DATE
        7月7日
        $echo ‘$DATE’
        &DATE
  ・「”」 二重引用符
     ・変数の値を表示した文字列になる
     ・変数はそのまま表示される。※値は表示できない
     ・変数をエスケープ(表示しない場合)は先頭に「\」バックスラッシュをつける。
        [root@localhost ~]# echo $HOME
        /root
        [root@localhost ~]# echo “変数\$HOMEの内容は「$HOME」です”
        変数$HOMEの内容は「/root」です
  ・「`」 バッククォーテーション
     ・バッククォーテーション内にコマンドがあれば実行結果を表示する
     ・変数の場合は変数に格納されているコマンド実行結果が展開される

history

  ・コマンド実行履歴を参照する。コマンド実行例
        $history
        1 ls
        2 cat .profile
        3 pwd
        4 cd ..
        5 date
  ・”![履歴番号]”を入力するとそのコマンドが実行される
        $ !5
        date
        2021年7月15日 23:22:12 JST
  ・bash履歴機能

コマンド説明
↑(Ctrl + P)1つ前のコマンドを表示する
↓(Ctrl + N)1つ次のコマンドを表示する
!文字列実行したコマンドで、指定した文字列から始まるコマンドを実行する
!?文字列実行したコマンドで、指定した文字列を含むコマンドを実行する
!!直前に実行したコマンドを実行する
!履歴番号履歴番号のコマンドを実行する
  ・コマンド実行例: ![履歴番号] (履歴番号指定)
        $ !5
        date
        2021年7月15日 23:22:12 JST

マニュアルの参照

  ・LINUXはオンラインマニュアルページを標準で装備ー> manコマンド
  ・マニュアルを構成するファイルは/usr/share/man に保存。
  ・検索ディレクトリは環境変数MANPATH。MANPATHに何も指定されていない場合
     ・ /etc/manconfig または
     ・ 指定されたデフォルトファイルを使用
  ・manコマンド 
     ・man [オプション] [セクション] コマンド名 or キーワード

オプション説明
-a全セクションのマニュアルを表示
-f指定キーワード(完全一致)でドキュメントを表示
-k指定キーワード(部分一致)でドキュメントを表示
-wマニュアルがあるディレクトリを表示

    ・マニュアルは見出し区切られている

見出し説明
NAME(名前)コマンドやファイルの名前と簡易説明
SYNOPSIS(書式)書式
DESCRIPTION(説明)詳細説明
OPTIONS(オプション)指定できるオプション説明
FILES(ファイル)設定ファイルなど関連するファイル
ENVIRONMENT(環境変数)関連する環境変数
NOTES(注意)その他注意事項
BUGS(バグ)既知の不具合
SEE ALSO(関連項目)関連項目
AUTHOR(著者)プログラムやドキュメントの著者

    ・ページャ(lessコマンド)の説明

キー操作説明
k、↑上クロール
k、↓、Enter下スクロール
スペース、f下に1画面スクロール
b上に1画面スクロール
/検索文字列下方向に文字列を検索する
?検索文字列上方向に文字列を検索する
hヘルプを表示する

    ・セクション : 同一の名前で異なる内容を調べる

セクション説明
1ユーザコマンド
2システムコール
3ライブラリ
4デバイスファイル
5設定ファイル
6ゲーム
7その他
8システム管理コマンド
9Linux独自カーネルのドキュメント

ファイル操作コマンド

    ・ls [オプション] [ファイルまたはディレクトリ……]  :  ファイルを一覧表示する

オプション意味
-aドットファイルも表示する
-Aドットファイルも表示する、ただし「.(カレント)」と「..(親)」を除く
-l詳細情報を表示
-dディレクトリの内容ではなく、ディレクトリそのものの情報を表示する
(シンボリックリンクもたどらない)
-Hコマンドラインで指定したファイルやディレクトリがシンボリックリンクの場合は、
リンク先の情報で表示(「-F」「-d」「-l」と一緒に使う。例えば、「/bin」が「/usr/bin」
へのシンボリックリンクの場合、「ls -l /bin」ではシンボリックリンクの情報が表示されるが、
「ls -lH /etc」では「ls -l /usr/bin」と同じ結果になる)
-Lディレクトリ内のファイルも含めて、全てをシンボリックリンクのリンク先の情報で表示する
-Rディレクトリを指定した場合、再帰的に表示する

    ・cp [オプション]  コピー元 コピー先     ファイルをコピーする

オプション意味
-f, –forceコピー先に同じ名前のファイルがあれば、確認なしで上書きします。
-i, –interactive上書きされるファイルがあれば、その可否を確認します。
-P, –parents元のファイルの属性(タイムスタンプ等)を可能な限り保持します。
-R, –recursiveディレクトリを再帰的にコピーする。ディレクトリを中身ごとコピーします。
-d, シンボリックリンクをシンボリックリンクとしてコピーする
-a, –archive元のファイルの属性とディレクトリ構成を可能な限り保持します。

    ・mv[オプション]  移動元 移動先     ファイルを移動する

オプション意味
-f移動先に同じ名前のファイルがあれば、確認なしで上書きします。
-i上書きされるファイルがあれば、その可否を確認します。

    ・mkdir[オプション]  ディレクトリ名    ディレクトリの作成

オプション意味
-m指定したアクセス権でディレクトリを作成する
-p必要なら親ディレクトリを同時に作成する

    ・rm[オプション]  ファイル名        ファイルの削除

オプション意味
-fユーザーへの確認無しに削除する
-i削除する前にユーザーに確認する
-r, -Rサブディレクトリを含め再帰的にディレクトリ全体を削除する

    ・rmdir ディレクトリ名        空のディレクトリを削除

オプション意味
-p複数階層の空ディレクトリを削除する。

    ・touch[オプション] ファイル    ファイルのタイムスタンプを更新する

-aアクセス時刻のみを変更します。
-c指定したファイル名が存在しない場合でも、空のファイルを作成しません。
-m最終更新時刻のみを変更します。
-r ファイル指定した時刻の代わりに指定したファイルの時刻に変更します。
-t 時刻現在時刻の代わりに指定した時刻に変更します。時刻の形式 → [[CC]YY]MMDDhhmm[.ss]

    ・fileファイル             ファイル形式を調べる

メタキャラクタ

*0文字以上の文字にマッチ。「a*」は「ab」「abc」など「a」にもマッチ。
?1文字にマッチ。「a?」は「ab」「aa」。「a」や「abc」にはマッチしない。
[]カッコ内のいずれかの文字にマッチ。a[bcd] は「ab」「ac」「ad」にマッチ。
[0-9] -> 0,1,2,3,4,5,6,7,8,9のどれか1文字にマッチ。[a-z] -> アルファベット小文字1文字にマッチ。
「!」を先頭に入れるとマッチしない文字を指定。a[!0-9] -> 「a0」や「a1」にはマッチしません。
{}カッコ内の「,」で区切られた文字列にマッチ。a{aa,bb}は、「aaa」と「abb」にマッチします。


パイプとリダイレクト

    ・標準入力、標準出力  

番号デフォルト
標準入力キーボード
標準出力端末画面
標準エラー出力端末画面

    ・パイプ
       ・コマンドやプログラムの出力結果を次のコマンドやプログラムに渡す。
       ・記号 ” | “ を使う

    ・tee
       ・コマンドの実行結果をファイル保存しながら画面表示
       ・書式:tee [オプション] ファイル名

オプション意味
-aファイルに追記する。

    ・リダイレクト
       ・コマンドへの入力元や出力先をコントロールする。
       ・記号 ” > “、 ”>>” を使う。
       ・上書: コマンド 出力ファイル名。
       ・追記: コマンド >> 出力ファイル名。

項目名説明
コマンド > ファイルファイル書き込み
コマンド < ファイルファイル内容をコマンド入力に送る
コマンド >> ファイルファイルに追記する
コマンド 2> ファイル標準エラーを書き込む
コマンド 2>> ファイル標準エラーを追記する
コマンド > ファイル2 >&1実行結果とエラーを書き込む
コマンド >> ファイル2 >&1実行結果とエラーを追記する
コマンド << 終了文字終了文字が現れるまで標準入力へ送る

テキスト処理

    ・cat [ ファイル名]       ファイルの内容を表示

オプション意味
-n各行の左端に行番号を付ける。
-b空白行を飛ばして行番号を表示する
-s連続した空白行を1行にする

    ・nl[オプション][ ファイル名]  テキストファイルを行番号付きで出力する

オプション意味
-b 形式本文の行番号のスタイルを指定する
-h 形式ヘッダの行番号のスタイルを指定する
-f 形式フッタの行番号のスタイルを指定する
形式        説明
a全ての行に対して行番号を付ける
t空行以外に対して行番号を付ける
n空行に対して行番号を付ける
pパターンパターン(基本正規表現)に一致する行に対して行番号を付ける

    ・od[オプション][ ファイル名]    バイナリファイルを8進または16進で表示

オプション意味
-t出力するフォーマットを指定する
出力タイプ説明
d10進数(decimal)
oデフォルト:8進数(octal)
x16進数(hexadecimal)
ASCII文字
n非表示(none)

  ・head[オプション][ ファイル名]   ファイルの先頭を表示10行表示。行数やバイト数は指定可

-c バイト数先頭から表示するバイト数を指定します。
-n 行数
– 行数
先頭から表示する行数を指定します。
指定しない場合は、先頭 10行が表示されます。

  ・tail[オプション][ ファイル名]   ファイルの末尾を10行表示する。行数やバイト数は指定可

-c バイト数末尾から表示するバイト数を指定します。
-n 行数
– 行数
末尾から表示する行数を指定します。
指定しない場合は、先頭 10行が表示されます。
-fファイルの末尾に追加された行を表示し続ける。

  ・cutオプション][ ファイル名]    ファイルの各行から指定した一部分を切り出し標準出力に表示する

-c 文字数切り出す文字数を指定します。
-d 文字区切り文字を指定します。デフォルトの区切り文字はタブです。
-f フィールド数切り出すフィールド数を指定します。

  ・past[オプション][ ファイル名1] [ ファイル名2]  ファイルを行単位連結。

オプション意味
-d 区切り文字区切り文字(デリミタ)を指定する。デフォルトはタブ。

  ・tr[オプション][ 文字列1] [ 文字列名2]  
              文字を置き換えるためのコマンド。標準入力と標準出力を使用。
              ファイルを処理したい場合は「cat」コマンドなどを使用するかリダイレクト

オプション意味
-d[文字セット1]に含まれる文字があったら削除する
-s[文字セット1]に含まれる文字が連続していたら1つにまとめる
[:alnum:]アルファベットと数字
[:alpha:]アルファベット
[:blank:]スペースや水平タブ
[:cntrl:]コントロール文字
[:digit:]数字
[:graph:]スペースを含まない表示可能な文字
[:lower:]小文字アルファベット
[:print:]スペースを含む表示可能な文字
[:punct:]句読点
[:space:]スペースや水平タブ,垂直タブ
[:upper:]大文字アルファベット
[:xdigit:]16進数文字

  ・sort[オプション][+開始位置[ー終了位置] ][ファイル名]   行単位ソート。

オプション説明
-nデータを文字ではなく、数値として並び変える
-r降順にデータを並び変える
-f大文字と小文字を区別なく並び変える
-b先頭に挿入されている空白を無視して並び変える

  ・split[オプション][入力ファイル名[出力ファイル名]]   指定されたサイズでファイルを分割。

オプション説明
-行数指定された行毎に分割。デフォルトは1000行

  ・uniqe[オプション][入力ファイル名[出力ファイル名]]   重複した行を1行にまとめて出力。

オプション説明
-d重複している行のみを出力
-u重複していない行のみを出力

  ・wc[オプション][ファイル名]   テキストファイルの行数や単語数、文字数を数えるコマンド。

オプション意味
-cバイト数を表示する
-m文字数を表示する(マルチバイト文字に対応)
-l改行の数を表示する
-w単語数を表示する

  ・xargs[オプション]コマンド[コマンドの引数]   前のコマンドの実行結果を標準入力から受け取って、
                             次のコマンドの引き数に渡して実行

  ・正規表現  任意の文字列パターンを表す表記方法

正規表現       説明
* 直前の文字の0回以上の繰り返し
 例 : 1*3.txt は、13.txt、113.txt などを表す。
. 任意の1文字の文字列
 例 : 1..4.txt は、1234.txt、1ab4.txt などを表す。
[ ] [ ] 内の任意の1文字の文字列
 例 : 1[23]4.txt は、124.txt または 134.txt を表す。
^ 行頭  例 : ^1 は、行頭にある 1 を表す。
$ 行末  例 : 1$ は、行末にある 1 を表す。
\ 次に来る文字をメタキャラクタではなく通常の文字として処理

  ・拡張正規表現  

拡張正規表現説明
+ 直前の文字の1回以上の繰り返し
? 直前の文字の0回、もしくは1回の繰り返し
| 前後のいずれかの文字列
{n} 直前の文字のn回の繰り返し
{n、m} 直前の文字のn回からm回の繰り返し

 ・メタキャラクタと正規表現の違い 

表現方法説明
メタキャラクタ シェルにおいて、特別な意味を持つ記号のこと。
正規表現 文字列のパターンを表す時に利用される表現方法

  ・grep[オプション]検索パターン[ファイル名]   指定した文字列を含む行を出力するコマンド。

オプション説明
-c パターンがマッチした行の行数だけを表示
-f ファイルから検索パターンを読み込む
-i 大文字小文字を区別せずに検索
-n 検索結果と合わせて行番号も表示
-v パターンがマッチしない行の表示
-E 拡張正規表現の使用。
 egrepコマンドを使用する場合と同じ。
-F 検索文字列を正規表現ではなく固定文字列として認識。
 fgrepコマンドを使用する場合と同じ。

  ・egrep[オプション]検索パターン[ファイル名]   拡張正規表現を使用する際に使用するコマンド
  ・fgrep[オプション]検索パターン[ファイル名]   正規表現を使用せず、固定文字列として検索

  ・sed[オプション] -f スクリプト [ ファイル ]   テキストストリームに対して編集を行うコマンド

オプション説明
-f ファイル コマンドが書かれたスクリプトファイルを指定
-i  処理した内容でファイルの上書き

  ・sed[オプション] コマンド [ ファイル ]   指定したファイルに対して実行
  ・sed[オプション] -eコマンド1 −eコマンド2 [ ファイル ]  コマンドの列挙

オプション説明
d マッチした行の削除。「 “開始行,終了行d” 」 と指定することで削除を行う。
s パターンに基づいた置換。「 s/検索パターン/置換パターン 」 と指定することで置換を行う。
y 文字の変換。「 y/検索文字/置換文字 」 と指定することで置換を行う。

VIエディタ

    ・構文 : vi [ -R ] [ ファイル名 ]   -Rを指定することで読み取り専用として開く
    ・操作モード

モード説明
入力モード 文字入力を行う場合のモード
コマンドモード vi エディタのコマンドと解釈するモード。削除、移動、コピー、保存などの操作

    ・操作モードの切り替え
       ・コマンドモードから入力モードへ

入力キー説明
a カーソル位置の後に文字を入力できるように、入力モードへ切り替え
A カーソル位置の行末に文字を入力できるように、入力モードへ切り替え
i カーソル位置に文字を入力できるように、入力モードへ切り替え
I カーソル位置の行頭に文字を入力できるように、入力モードへ切り替え
o カーソル位置の行の下に空白行を挿入して、そこに入力できるように、入力モードへ切り替え
O カーソル位置の行の上に空白行を挿入して、そこに入力できるように、入力モードへ切り替え

       ・入力モードからコマンドモードへ

入力キー説明
Esc 入力モードからコマンドモードへ切り替え

    ・コマンドモードでのカーソル移動

入力キー説明
h 左矢印(←)キーと同じ意味であり、カーソル位置を1文字、左へ移動
l 右矢印(⇒)キーと同じ意味であり、カーソル位置を1文字、右へ移動
k 上矢印(↑)キーと同じ意味であり、カーソル位置を1文字、上へ移動
j 下矢印(↓)キーと同じ意味であり、カーソル位置を1文字、下へ移動
0 行頭へ移動( カーソルのある行の左端へ移動 )
$ 行末へ移動( カーソルのある行の右端へ移動 )
H 画面の一番上の行頭へ移動
L 画面の一番下の行末へ移動
gg ファイルの先頭行へ移動
G ファイルの最終行へ移動
nG ファイルのn行目へ移動 ( :n でも同じ )

    ・コマンドモードでの vi 編集と vi 検索

入力キー説明
x deleteと同じ意味であり、カーソル位置の文字の削除
X Backspaceと同じ意味であり、カーソル位置の前の文字の削除
dd カーソル位置の現在の行を削除
dw カーソル位置から次の単語までを削除
yy カレント行のコピー
p (小文字) カーソル位置の後(右側)にコピーしたものを貼り付け
P (大文字) カーソル位置の前(左側)にコピーしたものを貼り付け
r カーソル位置の1文字を置換
入力キー説明
/文字列 カーソル位置からファイル末尾に向かって、指定した文字列の検索
?文字列 カーソル位置からファイル先頭に向かって、指定した文字列の検索
n 上記の検索 ( /文字列、?文字列 ) による次の文字列の検索
N 上記の検索 ( /文字列、?文字列 ) による次の文字列の検索 ( 逆方向 )

    ・コマンドモードでの viの終了

入力キー説明
 :q 編集データを保存せずに終了 ( 保存するかどうかの確認がある )
 :q ! 編集データを保存せずに強制終了
 :w 編集データの内容でファイルを上書き保存 ( エディタは終了しない )
 :w! 編集データの内容でファイルを強制的に上書き保存 ( エディタは終了しない )
 :wq 編集データを保存して終了
 :wq ! 編集データの内容でファイルを強制的に上書き保存 ( エディタは終了 )
 ZZ 編集データを保存して終了 ( :wq と同じ )
 :e! 最後に保存した内容に復帰
 :r ファイル名 ファイルの内容を現在の行以降に読み込み
 :! コマンド vi を終了せずにシェルコマンドを実行
 :r! コマンド シェルコマンドの実行結果の挿入