- Linux コマンドの小さなセットは、日常の作業のほとんどをカバーします:
ls、cd、cp、mv、rm、cat、およびgrep。 - パイプ (
|) は、難しい質問に答えるための単純なツールを接続します。 rmにはごみ箱がないため、Enter キーを押す前に再確認してください。- オプションを忘れた場合は、
manまたは--helpを使用してください。
ほとんどのサーバー、コンテナー、クラウド マシンは Linux を実行しており、通常はグラフィカル デスクトップを備えていません。 Linux コマンドを学ぶことが、開発者にとってもテスターにとっても同様に非常に役立つスキルであるのはこのためです。何百も覚える必要はありません。数十個あれば遠くまで運べます。
同じコア ツールを提供する Windows 上の Git Bash でファイル、検索、パイプの例をテストし、その実行から出力が得られます。権限、サービス、パッケージ、およびリモート アクセスのコマンドは実際の Linux システムに依存するため、実行しませんでした。詳細はディストリビューションによって異なる場合があるため、ご使用のシステムのドキュメントを確認してください。
安全に始める
練習するために Linux をインストールする必要はありません。良い選択肢は次のとおりです。
- Windows: Windows Subsystem for Linux (WSL)、または基本的な場合は Git Bash。
- macOS: 組み込みターミナル。コマンドは非常に似ていますが、一部のオプションが異なります。
- 任意のシステム: コンテナ。 初心者向けの Docker チュートリアルでは、Docker の開始方法を説明しています。
使い捨てフォルダーで練習してください。Linux ではすべて大文字と小文字が区別されることを覚えておいてください。Notes.txt と notes.txt は別のファイルです。
コマンドの構造
ls -l /var/log
^ ^ ^
| | argument: what to act on
| option: how to behave
command: what to run
通常、短いオプションは組み合わせることができるため、ls -l -aとls -laは同じです。 --help のように、長いオプションでは 2 つのダッシュを使用します。ヘルプが必要な場合は、完全なマニュアルについては man ls を実行するか、概要については ls --help を実行してください。 q を押してマニュアルページを終了します。
ファイルシステム内を移動する
| コマンド | 何をするのか |
|---|---|
障害者 |
現在のフォルダーを印刷します |
ls |
ファイルをリストします |
ls -la |
隠しファイルを含むすべてのファイルを詳細とともにリストします。 |
CDフォルダー |
フォルダ内に移動します |
CD.. |
1 つ上のレベルに移動します |
CD〜 |
ホームフォルダーに移動します |
CD - |
前のフォルダーに戻ります |
Tab を押すとファイル名が自動補完され、上矢印を押すと以前のコマンドに戻ります。これら 2 つの習慣は、ここで紹介する他のどのヒントよりも時間を節約します。 .envのようにドットで始まるファイル名は非表示となり、lsは-aのみ表示されます。
ファイルとフォルダーを管理する
| コマンド | 何をするのか |
|---|---|
mkdir -p プロジェクト/ログ |
親を含むフォルダーを作成します |
タッチノート.txt |
空のファイルを作成します |
cp a.txt b.txt |
ファイルをコピーします |
cp -r src/バックアップ/ |
フォルダーをコピーします |
MV a.txt b.txt |
ファイルの名前変更または移動 |
rm a.txt |
ファイルを削除します |
rm -r フォルダー/ |
フォルダーとその中のすべてを削除します |
以下は私たちの実行時の短いセッションです。
$ mkdir -p project/logs
$ cd project
$ touch notes.txt
$ ls
logs notes.txt
$ cp notes.txt backup.txt
$ mv backup.txt old.txt
$ ls
logs notes.txt old.txt
$ rm old.txt
$ ls
logs notes.txt
ヒント: rm はごみ箱を使用しないため、削除されたファイルは通常は失われます。 rm -r とワイルドカードには特に注意してください。最初に同じパターンで ls を実行して、一致するものを正確に確認し、ファイルごとにプロンプトが必要な場合は rm -i を使用します。
ファイルの内容を表示する
| コマンド | 何をするのか |
|---|---|
猫ファイル |
ファイル全体を印刷します |
ファイルが少なくなる |
長いファイルをスクロールします (q で終了します) |
head -n 5 ファイル |
最初の 5 行を表示します |
tail -n 5 ファイル |
最後の 5 行を表示します |
tail -f ファイル |
新しい行が書かれたままに続きます |
wc -l ファイル |
行数をカウントします |
次のいくつかの例では、小さなログ ファイルを作成しました。
$ cat logs/app.log
ERROR db down
INFO started
ERROR disk full
INFO stopped
$ head -n 1 logs/app.log
ERROR db down
$ tail -n 1 logs/app.log
INFO stopped
$ wc -l logs/app.log
4 logs/app.log
tail -f は、バグを再現しながらライブ アプリケーション ログを監視するための日常的なツールです。停止する場合はCtrl+Cを押してください。
grepで検索して見つけます
grep はファイル内を検索し、find はファイル自体を検索します。
$ grep ERROR logs/app.log
ERROR db down
ERROR disk full
$ grep -c ERROR logs/app.log
2
$ find . -name "*.log"
./logs/app.log
| オプション | 意味 |
|---|---|
grep -i |
大文字と小文字を区別しない |
grep -r |
フォルダーを再帰的に検索します |
grep -n |
行番号を表示します |
grep -v |
一致しない行を表示します |
grep -c |
一致する行をカウントします |
パイプとリダイレクト
これがコマンド ラインを非常に強力にする考え方です。各ツールは 1 つの小さな仕事を実行し、それらを接続します。
| シンボル | 何をするのか |
|---|---|
| |
1 つのコマンドの出力を次のコマンドに送信します |
> |
出力をファイルに書き込み、その内容を置換します |
>> |
出力をファイルに追加します |
2> |
エラーメッセージをファイルに書き込みます |
$ echo "hello" > greeting.txt
$ echo "world" >> greeting.txt
$ cat greeting.txt
hello
world
単一の > には注意してください。ファイル内に既に存在していた内容が黙って上書きされるからです。
実際の例: ログを要約する
ログには各タイプが何行ありますか? 4 つの単純なコマンドを組み合わせると、答えが得られます。
$ cut -d' ' -f1 logs/app.log | sort | uniq -c
2 ERROR
2 INFO
左から右に読む: cut は各行の最初のスペースで区切られた単語を取得し、sort は同じ単語をグループ化し、uniq -c は各グループをカウントします。 uniq は隣接する重複を折りたたむだけであるため、ソート手順は重要です。最も一般的なものを最初にリストするには、最後に | sort -nr を追加します。
この種のワンライナーは、障害を調査するときに非常に役立ちます。エラーが 2 回発生したか、2,000 回発生したかをすぐに知ることができます。これは、バグ レポートに記載するのに役立つ詳細です。
ファイル権限
ls -l を実行すると、次のような内容が表示されます。
-rwxr-xr-- 1 asha devs 512 Nov 1 10:00 deploy.sh
ファイルの種類を示す最初の文字の後には、所有者、グループ、その他全員の 3 文字からなるグループが 3 つあります。それぞれに r (読み取り)、w (書き込み)、x (実行) を指定できます。
| コマンド | 何をするのか |
|---|---|
chmod +x デプロイ.sh |
スクリプトを実行可能にします |
chmod 644 ファイル |
所有者は読み書き可能、他の人は読み取り可能 |
chmod 755 スクリプト.sh |
所有者は完全なアクセス権を持ち、他の人は読み取りと実行が可能です |
チャウン・アシャ・ファイル |
所有者を変更します |
sudoコマンド |
管理者としてコマンドを実行します |
数字を合計すると、読み取りは 4、書き込みは 2、実行は 1 になります。つまり、7 は 3 つすべてを意味し、5 は読み取りと実行を意味します。権限エラーの簡単な修正として、全員にフルアクセスを与える chmod 777 は避けてください。代わりに本当の原因を見つけてください。 sudo は、通常はシステムを保護する安全性チェックを削除するため、慎重に使用してください。
プロセスとシステム情報
| コマンド | 何をするのか |
|---|---|
ps 補助 |
実行中のプロセスをリストします |
topまたはhtop |
CPUとメモリのライブビューを表示します |
1234を殺す |
プロセス 1234 に停止を要求します |
df -h |
ディスクの空き容量を表示します |
du -sh フォルダー |
フォルダーのサイズを表示します |
無料 -h |
メモリ使用量を表示します |
systemctlステータスnginx |
サービスのステータスを表示します |
ジャーナルctl -u nginx |
サービスのログを表示します |
ソフトウェアをインストールするには、Debian と Ubuntu では sudo apt install curl、Fedora と RHEL では sudo dnf install curl など、ディストリビューションのパッケージ マネージャーを使用します。
アーカイブとリモートワーク
$ tar -czf logs.tar.gz logs
$ tar -tzf logs.tar.gz
logs/
logs/app.log
tar において、c は作成を意味し、z は gzip を意味し、f はファイルに名前を付け、t は内容をリストします。アーカイブを抽出するには、tar -xzf logs.tar.gz を使用します。他のマシンを操作するには、次の 3 つが必要です。
| コマンド | 何をするのか |
|---|---|
ssh ユーザー@サーバー |
リモートターミナルを開きます |
scp ファイル user@server:/path/ |
SSH経由でファイルをコピーします |
カール -I https://example.com |
URL の応答ヘッダーを表示します |
これらと同じコマンドは Dockerfiles および CI/CD パイプライン 内で使用されるため、この知識は DevOps 作業全体で役に立ちます。
よくある間違い
- 見ずに
rm -rfを使用します。まずpwdでフォルダーを確認し、パス内のスペースに注意してください。 >で上書きします。追加する場合は>>を使用してください。-
sudoですべてを実行します。 必要な場合にのみ使用してください。 - 理解できないコマンドを貼り付けます。 まず、コマンドを読んでください。特にダウンロードをシェルにパイプするものはすべてそうです。
- 引用符は忘れてください。
"my file.txt"のようにスペースを含むファイル名にはスペースが必要です。
まとめ
端末について読んでも学習できるわけではありません。シェルを開いて練習フォルダーを作成し、各セクションのコマンドを実行します。次に、ログにどのエラーが最も頻繁に表示されるかなど、パイプを使用して実際の質問に答えてみます。今週はナビゲーションとファイルから始めて、次に grep とパイプを追加します。残りは必要に応じて続きます。
よくある質問
最も基本的な Linux コマンドは何ですか?
pwd、ls、cd、mkdir、cp、mv、rm、cat、grep から始めます。これらは、日常の端末作業のほとんどを占める移動、ファイルの管理、検索をカバーします。
Windows 上で Linux コマンドを練習するにはどうすればよいですか?
完全な環境には Windows Subsystem for Linux を使用し、基本には Git Bash を使用します。 Docker を使用して Linux コンテナを実行することもうまく機能します。
Linux の > と >> の違いは何ですか?
単一の > は、ファイルの内容を出力に置き換えます。二重の >> は出力をファイルの末尾に追加し、既存の内容を保持します。
rm コマンドを元に戻すことはできますか?
rm はごみ箱を使用しないため、通常は不要です。回復ツールは役立つ場合もありますが、信頼できるものではないため、バックアップを保管し、最初に注意深く確認してください。
sudo とはどういう意味ですか?
sudo は管理者権限で単一のコマンドを実行します。ソフトウェアのインストールなどの作業に必要となるため、使用には注意が必要です。
学び続ける
テスト、WordPress、または SEO についてサポートが必要ですか?
私たちは、チームがより優れたソフトウェアを出荷し、サイトを成長させるのを支援します。あなたが取り組んでいることを教えてください。明確な次のステップを提案します。
詳しいガイドはこちら テスト、AI、最新の開発
この記事は気に入りましたか?トピックを選択して、最新のチュートリアルに直接アクセスしてください。
AI 幻覚の説明: 言語モデルが物事をでっち上げる理由とそれを軽減する方法
AI 幻覚について説明しました。幻覚とは何か、言語モデルが幻覚を生成する理由、一般的な種類、グラウンディングとプロンプトで幻覚を軽減する方法、そして私たちが実行した簡単なチェックです。
記事を読む →DevOps環境変数の説明: .env ファイル、シークレット、および設定が正しく行われている
実行した Python の例を使用して環境変数について説明します。環境変数の読み取りと設定、すべての値が文字列である理由、.env ファイル、プロセスの継承、シークレット、検証について説明します。
記事を読む →ソフトウェア開発API レート制限の説明: アルゴリズム、ヘッダー、および 429 エラーの処理
API レート制限については、実行したシミュレーションで説明します。トークン バケット、固定ウィンドウ、スライディング ウィンドウ、429 応答、レート制限ヘッダー、バックオフによる再試行、およびテスト制限です。
記事を読む →テスト自動化Python でのモッキング:unittest.mock、patch、およびテストを嘘にする間違い
Python でのunittest.mockによるモック、テスト済み: モックとreturn_value、side_effect、名前が使用されている場所のパッチ、仕様と自動仕様、日付のモック、およびよくある間違い。
記事を読む →ソフトウェアテストコードカバレッジの説明: 回線カバレッジとブランチカバレッジ、および 100% の実際の意味
実際のcoverage.pyの実行でコードカバレッジを説明: 行、分岐、条件のカバレッジ、レポートの読み取り、100%のカバレッジでもバグを見逃す可能性がある理由、および賢明なターゲット。
記事を読む →データベースとSQLSQL における DELETE、TRUNCATE、DROP: 違い、ロールバック、およびそれぞれをいつ使用するか
DELETE、TRUNCATE、DROP について、テスト済み SQL を使用して説明します。それぞれの削除内容、ロールバック、トリガー、ID リセット、速度、PostgreSQL、MySQL、SQL Server、SQLite の違いについて説明します。
記事を読む →データベースとSQLSQL ビューの説明: 作成、使用、落とし穴の回避、例を示します
SQL ビューについて、実行したクエリとともに説明しました。ビューの作成、ライブ結果、列の非表示、パフォーマンス、更新可能なビューと具体化されたビュー、壊れた依存関係、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発TypeScript インターフェイスと型: 実際の違い、コンパイラでテスト
TypeScript インターフェイスと型、実際のコンパイラでチェック: 両方でできること、片方だけでできること、宣言のマージ、拡張と交差、および従うべき簡単なルール。
記事を読む →ソフトウェア開発Python *args と **kwargs の説明: 柔軟な関数と明確な例
Python の *args と **kwargs について、実行したコードで説明しました。パッキングとアンパッキング、パラメーターの順序、キーワードのみの引数と位置のみの引数、デコレーター、一般的なエラーです。
記事を読む →ソフトウェア開発Python Lambda 関数: 構文、実際の用途、および使用すべきでない場合
Python のラムダ関数について、実行したコードとともに説明します。構文、キーによるソート、マップとフィルター、クロージャー、遅延バインディング トラップ、通常の def がより適切な選択である場合。
記事を読む →人工知能AIエージェントとは何ですか?シンプルなエージェント ループを実行できる仕組み
AIエージェントとは何ですか?エージェント ループ、ツール、メモリ、ガードレール、実行した小さな Python ループ、実際のリスク、およびシンプルなチャットボットがより良い選択である場合についてのわかりやすいガイドです。
記事を読む →DevOpsモニタリングと可観測性: ログ、メトリクス、トレースによる本当の違い
モニタリングと可観測性について説明: 既知および未知の障害、ログ、メトリクスとトレース、チェックアウト インシデントのウォークスルー、ゴールデン シグナル、OpenTelemetry、および便利なアラート。
記事を読む →DevOpsDocker ボリュームとバインド マウント: コンテナ データを正しい方法で保持する
Docker ボリュームとバインド マウントについて説明します。コンテナ データが消える理由、名前付きボリューム、バインド マウント、tmpfs、Compose の例、バックアップ、アクセス許可、およびそれぞれをいつ使用するかについて説明します。
記事を読む →テスト自動化TDD と BDD: 主な違い、1 つの機能が両方の方法で構築され、それぞれをいつ使用するか
TDD と BDD は、両方の方法で構築された 1 つの割引機能で説明されています。実行したコードによるレッド-グリーン-リファクタリング、Given-When-Then シナリオ、ツール、トレードオフ、およびそれぞれをいつ使用するかです。
記事を読む →ソフトウェアテストユーザー受け入れテスト (UAT): プロセス、チェックリスト、および実際の例
ユーザー受け入れテストの説明: 誰が実行するか、QA との違い、7 段階のプロセス、UAT テスト ケース テンプレート、チェックリスト、サインオフ基準、およびよくある間違い。
記事を読む →データベースとSQLSQL NULL 値の説明: IS NULL、COALESCE、NULLIF、および回避すべきトラップ
SQL の NULL 値について、実行したクエリで説明しました。3 つの値のロジック、IS NULL、COALESCE、NULLIF、集計、結合、並べ替えでの NULL の扱い方、およびそれが密かに引き起こすバグです。
記事を読む →データベースとSQLSQL CASE WHEN ステートメント: 構文、実際の例、およびよくある間違い
SQL CASE WHEN では、単純な検索フォーム、条件順序、SUM を使用したピボット、COUNT トリック、カスタム並べ替え、更新、回避すべき NULL トラップなど、実行したクエリを使用して説明しました。
記事を読む →ソフトウェア開発JWTとは何ですか? JSON Web トークンを実際の例で説明する
JWTとは何ですか? JSON Web トークンについて説明しました。3 つの部分、実行したコード内で構築および改ざんされたトークン、JWT とセッション、ストレージ、リフレッシュ トークン、およびセキュリティ上の間違いです。
記事を読む →ソフトウェア開発JavaScript イベントループの説明: コールスタック、マイクロタスク、タイマーと例
JavaScript イベント ループについて、実行したコードで説明しました。コール スタック、タスク キュー、マイクロタスク キュー、setTimeout 0 が即時ではない理由、ブロッキング、スターベーション、およびインタビュー クイズです。
記事を読む →ソフトウェア開発Python ジェネレーターと収量の説明: 実際の例でメモリを節約する
Python ジェネレーターと Yield について、実行したコードを使用して説明します。一時停止と再開の方法、メモリ節約の測定、パイプライン、無限シーケンス、Yield from、send、および一般的なトラップについて説明します。
記事を読む →人工知能埋め込みとは何ですか?ベクトルとコサインの類似度を簡単に説明
埋め込みとは何ですか?ベクトル、コサイン類似度、セマンティック検索に関する平易なガイド。私たちが実行した小さな例、一般的な使用法、モデルの選択、既知の制限が含まれています。
記事を読む →DevOpsBlue-Green デプロイメントと Canary デプロイメント: 違い、トレードオフ、および選択方法
ブルー グリーン デプロイメントとカナリア デプロイメントについて説明: それぞれの仕組み、コスト、リスクとロールバック、テストした安定したユーザー バケット化、データベース移行、ローリング アップデート、および選択方法。
記事を読む →テスト自動化不安定なテスト: 問題の原因とそれを永久に修正する方法
不安定なテストについては、私たちが実行したデモを使用して説明しました。主な原因、確認および診断する方法、タイミングの適切な修正、共有された状態と日付、隔離プロセスなどです。
記事を読む →ソフトウェアテスト負荷テストとストレス テスト: 違い、メトリクス、および k6 の例
ロード テストとストレス テストについて説明します。それぞれが何を証明するか、スパイク テストとソーク テスト、重要な指標、平均値が誤解を招く理由、K6 の例、テストの計画方法について説明します。
記事を読む →ソフトウェアテストテスト ケースとテスト シナリオ: 主な違い、例、およびそれぞれをいつ使用するか
テスト ケースとテスト シナリオの説明: 明確な定義、並べて表、シナリオからケースへの 1 つのパスワード リセット機能、テンプレート、およびそれぞれをいつ使用するか。
記事を読む →データベースとSQLSQL クエリの最適化: 実行プランを読み取り、タイミングを考慮して遅いクエリを修正
SQL クエリの最適化は 100 万行でテストされています。実行プランの読み取り、適切なインデックスの追加、検索対象外のフィルターの修正、複合インデックスとキーセットのページネーションの使用。
記事を読む →データベースとSQLSQL UNION と UNION ALL: 違い、例、テストされたパフォーマンス
SQL UNION と UNION ALL について、実行したクエリで説明しました。重複、両方に従うルール、実際のデータのバグ、測定されたパフォーマンス、INTERSECT と EXCEPT、およびそれぞれをいつ使用するかについて説明します。
記事を読む →ソフトウェア開発JavaScript Fetch API チュートリアル: GET、POST、エラー処理、タイムアウト
ローカル サーバーに対してテストされた JavaScript Fetch API チュートリアル: GET と POST、404 がスローされない理由、再利用可能なヘルパー、クエリ文字列、タイムアウト、CORS、およびよくある間違い。
記事を読む →ソフトウェア開発Python ファイル処理: 読み取り、書き込み、CSV、JSON、パスライブラリと例
Python のファイル処理について、実行したコードで説明します。オープン モード、大きいファイルの読み取り、CSV、JSON、パスライブラリ、バイナリ ファイル、安全な書き込み、エラー処理、およびよくある間違いについて説明します。
記事を読む →ソフトウェア開発Python のクラスとオブジェクト: 実際の例を含む OOP チュートリアル
Python のクラスとオブジェクトについて、実行したコードとともに説明します: __init__、メソッド、クラスとインスタンスの属性、継承、プロパティ、ダンダー メソッド、データクラス、およびよくある間違い。
記事を読む →人工知能大規模言語モデルとは何ですか? LLM の仕組みを誇大広告なしで説明
大規模言語モデルとは何ですか? LLM は、トークン、エンベディング、アテンション、トレーニング、温度およびコンテキスト ウィンドウ、小さな次の単語のデモ、実際の制限など、平易な言葉で説明されています。
記事を読む →DevOps初心者のための Linux コマンド: 例を含む基本ターミナル ガイド
初心者向けの Linux コマンド。ナビゲーション、ファイル、ログの表示、grep、パイプ、権限、プロセス、アーカイブなどのタスク別にグループ化されており、実用的なログ分析の例も含まれています。
記事を読む →テスト自動化Selenium と Playwright: 主な違い、コードの比較、どちらを選択するか
Selenium と Playwright の比較: アーキテクチャ、待機、ブラウザと言語のサポート、デバッグ、両方のツールでの同じテスト、移行のアドバイスと選択方法。
記事を読む →ソフトウェアテスト等価性分割: テスト設計手法を実際の例で説明
等価性パーティション化について説明しました。有効なパーティションと無効なパーティションを見つける方法、年齢、パスワード、クーポンに関する実際の例、実行したテスト、境界と組み合わせる理由。
記事を読む →ソフトウェアテストソフトウェアテストにおける重大度と優先度: 相違点、マトリックス、および実際の例
ソフトウェア テストにおける重大度と優先度について説明します。明確な定義、例を含む 4 方向のマトリックス、レベル スケール、それぞれの設定者、バグ トリアージの実行方法。
記事を読む →データベースとSQLSQL サブクエリのチュートリアル: 型、相関サブクエリ、および EXISTS と例
実行したクエリを含む SQL サブクエリのチュートリアル: スカラー、IN、FROM、SELECT サブクエリ、相関サブクエリ、EXISTS、NOT IN NULL トラップ、サブクエリ対 JOIN 対 CTE。
記事を読む →データベースとSQLSQL トランザクションと ACID の説明: COMMIT、ROLLBACK、分離レベル
SQL トランザクションと ACID について、実行した銀行振込で説明しました。COMMIT、ROLLBACK、セーブポイント、ロック、分離レベル、ダーティ リード、デッドロック、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発Git mergeとrebaseの違い:例と使い分け
Git mergeとrebaseの違いを、実際のログ出力、比較表、rebaseの黄金律、安全なチームワークフローで解説します。
記事を読む →ソフトウェア開発Pythonのリスト内包表記:構文・例・使うべきでない場面
Pythonのリスト内包表記を解説:構文、フィルタ、if-else、ネストしたループ、実測した処理時間、そして通常のforループの方が良い場面。
記事を読む →データベースとSQLSQL JOINを例で解説(Inner・Left・Right・Full)
サンプルのテーブルとクエリでSQL JOINを順に解説。INNER、LEFT、RIGHT、FULL、CROSS、SELFに加え、よくある間違いとパフォーマンスのコツも紹介します。
記事を読む →