Linuxコマンド (IT エンジニアの第一歩)

（本記事では、厳密さよりも「なんとなくこんなイメージ」を掴めるように執筆します！！）

## Linux コマンドとは

結論：

- Linux コマンド = PC との会話です。
- もう少し言うと、**PC の頭脳(LinuxOS)に Command(指示する)** 言葉
- つまり、これからPCを操っていくITエンジア1年生がはじめに学ぶとよいものです！

<br>
ITエンジニアは、PCを自由自在に操りながら、さまざまなものづくりをしています。

- SNS アプリ
- EC サイト
- 金融・会計システム

これらを動かしているのは、サーバーや PC です
<br>
では、IT エンジニアはどうやって PC を自在に操っているのでしょうか？
<br>
その答えが「Linux コマンド」です！（※他にもあり👨）

Linux コマンドとは、PC（特に LinuxOS がインストールされたコンピュータ）を操作するための命令のことです。これは、CLI(Command Line Interface)で命令します。
<br>
普段 PC やスマホなどで親しんでいるのは、GUI(マウスや指を使った画面操作)です。ユーザーは使いやすいですよね。
<br>
けれど、もっと自由自在にPCを操るには言葉の方が融通は効きます。そこで IT エンジニアは、以下のようなターミナルなどの(CLI)を通して言葉でPCに指示を出します。
![Screenshot 2025-05-18 at 11.11.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891330/5f707cc9-0c43-466c-895d-68ab1487ab13.png)


上記が、**Linux にCommand(指示する)** している例です。

---

## Linux コマンドはどこで学べる？

Linux コマンドを体系的に学びたいときに役立つのが、「**Linux 標準教科書**」です。Linux の基本から応用までを網羅しているのでオススメです。

以下の URL からアクセスできます：　<br>
[Linux 標準教科書](https://linuc.org/textbooks/linux/)

- 無料で利用可能
- kindleでもunlimitedで無料！

---

## 本記事でも最低限の Linux コマンドをまとめます

Linux コマンドを使いこなすために、まず覚えたい基本的なコマンドをまとめます。
<br>
本記事では、IT エンジニアが PC を操る際に必要なLinuxコマンドを以下のように、大きく2つに分けて整理します。

1. **PC 自体を操るコマンド** 💻
2. **ネットワークを操るコマンド（複数の PC を繋げて協力させるコマンド** ）💻💻💻💻

---

### 1. PC💻 自体を操るコマンド

Linux コマンドを使うことで、PC 内部のファイルやディレクトリを操作できます。以下は、よく使うコマンドの一覧です。

#### 基本的なコマンド一覧


1. **pwd**  
   現在のディレクトリ（作業している場所）を表示

   ```bash
   $ pwd
   /home/user
   ```

   ちなみに、pwd(print name of working directory)ですね。


2. **ls**  
   現在のディレクトリ内にあるファイルやディレクトリを一覧表示

   ```bash
   $ ls
   file1.txt file2.txt folder/
   ```

   ちなみに、ls(list)です。

3. **cd**  
   ディレクトリを移動

   ```bash
   $ cd folder
   ```

   ちなみに、cd(change directory)です。

4. **mkdir**  
   新しいディレクトリを作成

   ```bash
   $ mkdir new_folder
   ```

   ちなみに、mkdir(make directory)です。

5. **rmdir**  
   空のディレクトリを削除

   ```bash
   $ rmdir old_folder
   ```

   ちなみに、rmdir(remove directory)ですね。

6. **touch**  
   空のファイルを作成

   ```bash
   $ touch new_file.txt
   ```

   ちなみに、touch はファイルのタイムスタンプを更新する機能が本来の目的ですが、ファイルが存在しない場合は新規作成します。

7. **less**  
   ファイルを 1 画面ずつ表示（スクロール可能）

   ```bash
   $ less large_file.txt
   ```

   ちなみに、less は「less is more」という言葉遊びから来ており、more コマンドの改良版だそうです

8. **tail**  
   ファイルの末尾を表示（ログ監視などに便利でよく使う）

   ```bash
   $ tail -f log_file.txt
   ```

   ちなみに、tail(尾、末尾)という意味ですね。

9. **rm**  
   ファイルを削除

   ```bash
   $ rm unnecessary_file.txt
   ```

   ちなみに、rm(remove)です。

10. **mv**  
    ファイルやディレクトリを移動または名前変更

    ```bash
    $ mv file1.txt new_folder/
    ```

    ちなみに、mv(move)です。

11. **cp**  
    ファイルやディレクトリをコピー

    ```bash
    $ cp important_file.txt backup/
    ```

    ちなみに、cp(copy)です。

12. **ln**  
    ファイルへのリンクを作成

    ```bash
    $ ln -s original_file.txt link_to_file
    ```

    ちなみに、ln(link)です。

13. **find**  
    条件に合うファイルを検索

    ```bash
    $ find /home -name "*.txt"
    ```

    ちなみに、find(探す)という意味そのままです。

14. **chmod**  
    ファイルのアクセス権限を変更

    ```bash
    $ chmod 755 script.sh
    ```

    ちなみに、chmod(change mode)ですね。

15. **chown**  
    ファイルの所有者を変更

    ```bash
    $ chown user:group file.txt
    ```

    ちなみに、chown(change owner)ですね。

#### プロセス管理コマンド

16. **ps**  
    実行中のプロセスを表示(dockerとかでもよく使います)

    ```bash
    $ ps aux
    ```

    ちなみに、ps(process status)ですね。

17. **kill**  
    プロセスを終了

    ```bash
    $ kill 1234
    ```

    ちなみに、kill は文字通り「こ◯す」という意味で、プロセスを終了させるために使います。

### 2. 複数の PC💻💻💻💻 を繋げて力を合わせるコマンド（ネットワーク）

複数のコンピュータがネットワークで繋がることで、サーバーやデータベースなどの協力が可能になります。この操作にも Linux コマンドが役立ちます。

#### ネットワーク関連のコマンド一覧

1. **ping**  
   指定した IP アドレスやホスト名に対して通信が可能かを確認

   ```bash
   $ ping google.com
   PING google.com (172.217.160.110): 56 data bytes
   64 bytes from 172.217.160.110: icmp_seq=0 ttl=114 time=12.1 ms
   ```

   ちなみに、ping はもともと潜水艦のソナーが発する音（＝ping）に由来しています。ソナーが音波を発してその反響で障害物の有無や距離を測る仕組みと、pingコマンドがネットワーク上で応答を確認する仕組みが似ているため

2. **ifconfig**  
   ネットワークインターフェースの情報を確認。IP アドレスやネットワーク設定を確認・変更する際に使用

   ```bash
   $ ifconfig
   ```

   ちなみに、ifconfig(interface configuration)です。
   
3. **netstat**  
   ネットワークの接続状況を確認。現在どのポートが使用されているかなどを把握する

   ```bash
   $ netstat -an
   ```

   ちなみに、netstat(network statistics)です。

## まとめ

以上、Linux コマンド（IT エンジニアの第一歩）でした！

(おまけ、calコマンド)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891330/44af4320-ee88-401d-96bf-6b5aee665f8f.png)


# ひとこと
- コメントをいただけると嬉しいです。
- 繋がることでいいエネルギーの循環を創り出すことができると信じています。
- Think Straight, Talk Straight !!
- 今日も最高の1日に。