- 内部コマンド
- シェル自体に組み込まれているコマンド。
- 外部コマンド
- 独立したプログラムとして存在するコマンド。
- 環境変数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」が表示される