その他

  • 内部コマンド
    • シェル自体に組み込まれているコマンド。
  • 外部コマンド
    • 独立したプログラムとして存在するコマンド。
    • 環境変数PATHに指定されたディレクトリを順に検索して見つけ出す。
    • 環境変数PATHに定義されていないコマンドを実行する場合、パスの指定が必要
  • プロンプト
    • $ : 一般ユーザ
    • # : スーパーユーザ(root)
  • 改行コードと代表的なOSの組み合わせ
    • Windows: CRLF(\r\n)
    • Unix OS(Linux): LF(\n)
      • -> WindowsのファイルをLinuxで扱う場合 \r (^Mとも表示) を削除する必要がある。
  • シェルでコマンドを続けて実行
    • && : command1が成功した場合のみcommand2を実行します。 command1 && command2
    • || : command1が失敗した場合のみcommand2を実行する。 command1 || command2
    • ; : command1の結果に関係無くommand2を実行する。 command1 ; command2
  • ファイルディスクリプタ
    • 0 : 標準入力 (stdin)
    • 1 : 標準出力 (stdout)
    • 2 : 標準エラー出力 (stderr)

リダイレクト

記号 説明
< 標準入力の入力元を指定(0<と同義)。標準入力元をキーボードからファイルに切り替える
<< 標準入力の入力元を指定し、終了文字まで入力(0<<と同義)
<<< 指定した文字列をコマンドの標準入力に送る
> 標準出力の出力先を指定(1>と同義)
>> 標準出力の出力先を指定し、出力先に追記(1>>と同義)
2> 標準エラー出力の出力先を指定
2>> 標準エラー出力の出力先を指定し、出力先に追記
>&2 標準出力の出力先を標準エラー出力の出力先と同じにする。(1>&2と同義)
2>&1 標準出力とエラー出力の出力先を標準出力の出力先と同じにする。
コマンド < ファイル       ファイルの内容をコマンドの標準入力に送る
コマンド << 終了文字      終了文字が現れるまでコマンドの標準入力に入力を送る
                          $ cat << world
                          > Hello world 1 ←キーボード(標準入力)からの入力
                          > Hello world 2 ←キーボード(標準入力)からの入力
                          > world  ←キーボード(標準入力)から終了文字の入力
                          Hello world 1 ←catコマンドの実行結果
                          Hello world 2 ←catコマンドの実行結果
コマンド <<< 文字列       文字列をコマンドの標準入力に送る
                          $ cat <<< 'Hello, World!' ->  Hello, World!
コマンド > ファイル       コマンドの標準出力をファイルに出力。ファイルが無ければ新規作成、すでに
                          ファイルがある場合は上書き( >> ファイルに追記)
コマンド 2> ファイル      コマンドの標準エラー出力をファイルに出力( 2>> であればファイルに追記)
コマンド 1>&2             コマンドの標準出力の出力先を、標準エラー出力の出力先と同じにする
                          コマンドの正常な実行結果もエラーメッセージとしてディスプレイに表示する)
コマンド > ファイル 2>&1  コマンドの標準エラー出力の出力先を、標準出力の出力先と同じにする
                          例ではまず「>」で標準出力の出力先をファイルに変更しているので、
                          標準エラー出力の出力先も同じファイルになる)

 (パイプ) -> コマンドの標準出力を次のコマンドに渡す
形式: <command>|<command> |…
    ps aux | grep <hoge> | sort -r

正規表現 -> 文字列のパターンを表す時に利用される表現方法。

正規表現 説明
* 直前の文字の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
[^…] 角括弧に含まれる文字以外にマッチ  
[^abc]  -> a, b, c 以外の文字
{n} 直前の文字の桁数を指定。 
a{3} -> aaa
^ 行頭
$ 行末
1$ -> 行末が 1 の文字列
+ 直前の文字の1回以上の繰り返し
? 直前の文字の0回、もしくは1回の繰り返し
| 前後のいずれかの文字列
\ 次の1文字をエスケープ

メタキャラクタ -> シェルによって特別に解釈される文字

メタキャラクタ
説明
* 0文字以上の文字。「a*」は「ab」「abc」などにマッチしますが「a」にもマッチします。
? 任意1文字。「a?」は「ab」「aa」などにマッチしますが、「a」や「abc」にはマッチしません
[ ] []内いずれか1文字
[a-z]はアルファベット小文字1文字
a[!0-9]は「aa」「ab」などにはマッチ。「a0」や「a1」にはマッチしません。
$ 変数
囲まれた部分を文字列と見なす。(メタキャラクタの意味を打ち消す)
囲まれた部分を文字列と見なす。($ ` ¥ ” 以外のメタキャラクタの意味を打ち消す)
` 囲まれた部分を文字列(変数の場合は格納さている値)をコマンドと見なし、その実行結果を文字列として返す
| 次の文字(メタキャラクタ)の意味を打ち消し通常の文字として扱う
  • ハードリンク
    • ファイルの実体を直接参照するリンクのこと。
    • 同じ実体を参照するハードリンクは同じinode番号を持ち、複数作成してもコピーのようにディスク容量を消費しません。
    • そのため、更新が無いファイルのバックアップ手段としてハードリンクが使用されることもあります。
    • また、ハードリンク先のファイルの中身を編集すると、元ファイルの中身も同じく変更されます。
    • ディレクトリのハードリンクは作成できない
    • 異なるファイルシステム(パーティション)にハードリンクを作成できない
  • シンボリックリンク
    • Windowsでのショートカットのようなもので、元ファイルの場所を指し示すリンクのことです。
    • 持っている情報は「元ファイル(ディレクトリ)がどこにあるのか」というパス情報のみです。
    • シンボリックリンクの元ファイルを削除すると(他に同じinode番号を持つハードリンクが無ければ)、ファイルの実体は削除されますが、リンクは残ります。ただその場合、シンボリックリンクにアクセスすると、リンクしている元ファイルが無いためエラーになります。
    • 異なったファイルシステム間でも作成可能
    • lsコマンドで確認するとパーミッションの先頭に「l」が表示される