コース内容#
シェル&ターミナル&コンソール#
- シェル:ユーザーにインターフェースを提供するソフトウェア
- コンソール:コンソール、ワークステーション
- ターミナル:対話デバイス
- 本質的にはファイルです
- stdin、stdout、stderr はそれぞれ 0、1、2 番のファイルに対応しています
- 0、1、2 はファイルディスクリプタであり、どのプロセスを開いてもこれらの 3 つのファイルが開かれます
- echo $0:-zsh を出力すると、入力元が zsh であることを示します
- stdout、stderr の出力リダイレクト:1 > ファイル、2 > ファイル
コンソールとターミナルの概念は、メインフレームから派生しています。一般的には、拡張の意味で使用され、通常は混在して使用できます。
Linux ヘルプシステム#
- 2 つのオンラインドキュメント:man(一般的)および info
- man マニュアルモジュール
| コード | 意味 | 例 |
|:----|:----|:----|:----|:----|
|1 | シェルコマンドまたは実行可能ファイル | man 1 ls|
|2 | カーネルが提供する関数とツール | man 2 reboot|
|3 | ライブラリ関数 [ほとんどの C の関数ライブラリ、C++、Python なし...]|man 3 readdir|
|4 | デバイスファイルの説明 [通常は /dev]|man 4 null|
|5 | 設定ファイルまたはファイル形式 [例:/etc/passwd]|man 5 interfaces|
|6 | ゲーム | man 6 lol|
|7 | 慣習とプロトコル [例:Linux ファイルシステム、ネットワークプロトコル]|man 7 tcp|
|8 | システム管理者コマンド [通常は root が使用する]|man 8 reboot|
|9 | カーネルルーチン [非標準ルーチン]| |
|o | 古いドキュメント | |
|n | 新しいドキュメント | |
|l | ローカルドキュメント | |
- man マニュアルの提供する Example を見ることを学ぶ👉ベストプラクティス
- ❗ ヒント:コマンドが複数のモジュールに存在する場合
- キーワード検索:man -k reboot
- 正確な検索:man -f reboot
zsh#
ワイルドカード#
- ? 任意の 1 文字
- * 任意の複数の文字
- []、{}
ワイルドカード | 意味 |
---|---|
[123] | 123 のいずれかの文字に一致 |
[1-3] | 1 から 3 のいずれかの文字に一致 |
[0-9a-zA-Z] | 数字、大文字、小文字のいずれかの文字に一致 |
[!(1-3)] | 1 から 3 以外のいずれかの文字に一致(bash では括弧を省略できます) |
{"a","ab",...} | "a" または "ab"(またはそれ以上)のいずれかの文字列に一致します。スペースは含めることはできず、少なくとも 2 つの要素が必要です |
タスク管理#
- & コマンドの後に使用すると、バックグラウンドで実行されます
- 終了する方法は?
- ① fg→ctrl + c
- ② kill タスク ID(実行中に表示されます)
- ③ pkill マッチング名(権限が高すぎると誤って削除される可能性があるため注意)
- kill を入力すると、ターミナルの入力と出力が混在しているように見えますが、実際には異なるファイルから来ています:#0、#1
- 終了する方法は?
- ; コマンドの間に置いて、順番に実行します
- && 論理 AND、ショートサーキットの原則に注意してください
- || 論理 OR、ロングサーキットの原則に注意してください
- ` ` コマンド置換記号(注意:このキーは esc の下にあります)
- まずその中のコマンドを実行し、その結果を親コマンドに渡します
- ctrl + z タスクを一時停止し、CPU リソースを解放します
- メモリの解放:下層のスワップ方法によるが、通常はメモリが不足するとスワップ領域にスワップアウトされます
- sleep コマンドとほぼ同じです
- bg、fg、jobs:詳細は「Linux 入門と使用」のノートのまとめ - 3.Linux 基礎知識 - プロセス関連を参照してください
リダイレクト#
- [コマンド] >/>> [ファイル]
- 注意:>> は内容をファイルの末尾に追加しますが、> は内容を元のファイルに上書きします
- [コマンド] < [ファイル]
- ファイルの内容をコマンドの入力として使用します
- <<
- 入力時にファイルの終わりを指定するために使用されます
-
- ここでの EOF と 000 は単なる文字列であり、特別な意味はありません
-
- 入力時にファイルの終わりを指定するために使用されます
エスケープ文字#
- ハードエスケープ
- シングルクォートで囲む ' '
- どの文字でもそのまま表示されます
- 【注意】クォート内にはシングルクォートを含めることはできません
- ソフトエスケープ
- ダブルクォートで囲む " "
- 特定のシェルメタキャラクタ(変数値の置換に使用される $、コマンド置換に使用される `、単一の文字をエスケープするための \)以外は、そのまま表示されます
- バックスラッシュ
- エスケープし、後続するメタキャラクタまたはワイルドカードの特殊な意味を除去します
追加の知識#
- 変数の呼び出し:$Var は ${Var} と同じです
- ただし、後者の方が標準的であり、$ の範囲を明示し、変数名に特殊文字が含まれている場合に問題が発生する可能性を回避できます
ヒント#
- ls --time=[atime、ctime] -l でアクセス時間 atime またはパーミッション変更時間 ctime を表示できます。デフォルトで表示される変更時間ではありません
- 注意:-l と一緒に使用する
- スペースを含むファイル名の場合、zsh は誤解を招く場合があります。次のようになります:
-
- ここでシングルクォートはスペースを囲むためのものであり、実際には存在しません!
- 一括削除するには、sudo rm -i *\ * を使用します
- ここで -i は確認モードを有効にしています。この * と \ は怖いです
-