> ## Documentation Index
> Fetch the complete documentation index at: https://support.labex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# LabEx VM ターミナルインターフェース

> LabEx ターミナルインターフェースは、TTYD を利用した軽量なブラウザベースのコマンドライン環境を提供します。Ubuntu 22.04 をベースに構築されており、コマンドライン操作とテキストベースのタスクのための合理化されたインターフェースを提供します。

## ターミナルのプレビュー

<img src="https://mintcdn.com/huhuhang/q4ekfuwM7mDVAiiH/images/terminal.png?fit=max&auto=format&n=q4ekfuwM7mDVAiiH&q=85&s=2ec4396dab3d6df8b4adce3498c1ad59" alt="Terminal Preview" width="1112" height="404" data-path="images/terminal.png" />

ターミナル環境は、特に以下の場合に役立ちます。

1. コマンドラインに焦点を当てたタスクと操作
2. サーバー管理とシステム構成
3. テキストベースのプログラミングとデバッグ
4. GUI が不要な場合の、リソース効率の高いリモートアクセス

## ターミナルへのアクセス

1. 教師が Lab でデフォルトでターミナル環境を使用することを推奨している場合、それを起動するとターミナル環境が表示されます。
2. インターフェース上部の + ボタンをクリックして、追加のターミナルセッションを作成できます。

<img src="https://mintcdn.com/huhuhang/lbTGZZG7azHYkwfT/images/screenshot-20241022-CsiJ0RAS@2x.png?fit=max&auto=format&n=lbTGZZG7azHYkwfT&q=85&s=58d906aab3488a173fc84b234470f348" alt="Terminal Tabs" width="1408" height="392" data-path="images/screenshot-20241022-CsiJ0RAS@2x.png" />

## 環境の機能

ターミナルインターフェースは、いくつかの主要な機能を提供します。

1. 複数のターミナルセッション：
   * * ボタンを使用して新しいセッションを作成する
   * タブを使用してセッションを切り替える
   * 必要に応じて、個別にセッションを閉じる

2. 完全な Ubuntu 環境：
   * Ubuntu 22.04 LTS に基づく
   * 標準の Ubuntu リポジトリへのアクセス
   * 一般的なコマンドラインツールとユーティリティのサポート

3. テキストベースのツール：
   * Vim/Nano テキストエディタ
   * コマンドラインコンパイラとインタプリタ
   * apt を介したパッケージ管理
   * バージョン管理用の Git

## TTYD の機能

ターミナルインターフェースは [TTYD](https://github.com/tsl0922/ttyd) (Terminal Over HTTP) を利用しており、いくつかの高度な機能を提供します。

**tmux コマンドの使用：**

```bash theme={null}
# スプリットの作成
tmux split-window -h     # 垂直に分割
tmux split-window -v     # 水平に分割
tmux split-window -hf    # 全高の垂直分割
tmux split-window -vf    # 全幅の水平分割

# ペイン間の移動
tmux select-pane -L      # 左ペインに移動
tmux select-pane -R      # 右ペインに移動
tmux select-pane -U      # 上ペインに移動
tmux select-pane -D      # 下ペインに移動

# ペインのサイズ変更
tmux resize-pane -L 10   # 左に 10 セルサイズ変更
tmux resize-pane -R 10   # 右に 10 セルサイズ変更
tmux resize-pane -U 5    # 上に 5 セルサイズ変更
tmux resize-pane -D 5    # 下に 5 セルサイズ変更

# その他の操作
tmux kill-pane          # 現在のペインを閉じる
tmux select-layout tiled # ペインサイズを調整
```

<img src="https://mintcdn.com/huhuhang/q4ekfuwM7mDVAiiH/images/screenshot-20241022-Re5eBNxa@2x.png?fit=max&auto=format&n=q4ekfuwM7mDVAiiH&q=85&s=2f701d9d389320407a15249bcd6a0010" alt="Terminal Split Screen" width="688" height="342" data-path="images/screenshot-20241022-Re5eBNxa@2x.png" />

### tmux でのスクロール

tmux では、**マウスホイールのスクロールと、通常のドラッグで範囲選択してコピーする操作は、同じモードでは両立しません**。ターミナルは、ホイールを tmux に渡して（スクロールバックを移動する）か、マウスイベントをブラウザに任せて（ハイライトとコピーする）かのどちらかで、同じ操作で両方はできません。

LabEx はデフォルトでマウスサポートを **オフ** にし、ブラウザ上でいつもどおり選択・コピーできるようにしています。マウスモードを **オン** にすると、ホイールは tmux 内でスクロールしますが、設定を変えるまで、クリックしながらドラッグする通常のコピー用選択は使えなくなります。

**マウススクロールを一時的に有効にする（現在のセッションのみ）：**

```bash theme={null}
tmux set -g mouse on
```

**マウススクロールを恒久的に有効にする（今後のすべてのセッション）：**

```bash theme={null}
echo 'set -g mouse on' >> ~/.tmux.conf && tmux source-file ~/.tmux.conf
```

**再びコピーしたいとき：**

* マウスモードをオフにする：`tmux set -g mouse off` を実行するか、`~/.tmux.conf` の `set -g mouse on` を削除またはコメントアウトしてから `tmux source-file ~/.tmux.conf` を実行します。
* 一部のクライアントでは、選択中に **Shift** を押すと tmux のマウス処理をバイパスできる場合があります。挙動はブラウザと TTYD に依存します。シンプルなコピーを確実に戻すには、マウスモードをオフにすることをおすすめします。

## 使用シナリオ

<AccordionGroup>
  <Accordion title="基本的なコマンドライン操作" icon="terminal">
    よく使用するターミナルコマンド：

    ```bash theme={null}
    # ファイルとディレクトリの操作
    ls -la           # 詳細付きですべてのファイルを一覧表示
    cd /path/to/dir  # ディレクトリの変更
    mkdir new-dir    # ディレクトリの作成
    rm -rf dir       # ディレクトリの削除

    # システム情報
    uname -a         # システム情報
    df -h            # ディスク使用量
    top              # プロセスモニター
    ```
  </Accordion>

  <Accordion title="テキスト編集" icon="square-pen">
    さまざまなテキストエディタを使用できます。

    1. Vim:

    ```bash theme={null}
    vim filename.txt  # Vim でファイルを開く/作成する
    ```

    2. Nano:

    ```bash theme={null}
    nano filename.txt # Nano でファイルを開く/作成する
    ```

    どちらのエディタもプリインストールされており、すぐに使用できます。
  </Accordion>

  <Accordion title="パッケージ管理" icon="box">
    ソフトウェアパッケージのインストールと管理：

    ```bash theme={null}
    # パッケージリストの更新
    sudo apt update

    # 新しいパッケージのインストール
    sudo apt install package-name

    # パッケージの削除
    sudo apt remove package-name

    # パッケージの検索
    apt search keyword
    ```
  </Accordion>
</AccordionGroup>

## よくある質問

<AccordionGroup>
  <Accordion title="テキストをコピーして貼り付けるにはどうすればよいですか？" icon="clipboard">
    TTYD は、コピー/ペーストのいくつかの方法をサポートしています。

    1. マウスの使用：
       * コピーするテキストを選択します
       * 右クリックして貼り付けます

    2. キーボードの使用：
       * コピー: Ctrl+Insert または Ctrl+Shift+C
       * 貼り付け：Shift+Insert または Ctrl+Shift+V

    注：実際のショートカットは、ブラウザとオペレーティングシステムによって異なる場合があります。
  </Accordion>

  <Accordion title="ローカルマシンからファイルにアクセスできますか？" icon="upload">
    はい、コマンドラインツールを使用してファイルを転送できます。

    1. テキストコンテンツの場合：
       * ターミナルに直接コピーして貼り付けます
       * テキストエディタを使用してファイルを作成および変更します

    2. バイナリファイルの場合：
       * ファイルのアップロード/ダウンロードには WebIDE インターフェースを使用します
       * ファイル管理操作については、WebIDE タブに切り替えます
             <img src="https://mintcdn.com/huhuhang/q4ekfuwM7mDVAiiH/images/screenshot-20241022-j7Pl3YZQ@2x.png?fit=max&auto=format&n=q4ekfuwM7mDVAiiH&q=85&s=ab2b59536671cb0184c1f57d3a981fec" alt="Upload Files" width="1412" height="1250" data-path="images/screenshot-20241022-j7Pl3YZQ@2x.png" />

    すべてのファイルは一時的であり、セッションが終了すると失われることに注意してください。
  </Accordion>

  <Accordion title="追加のソフトウェアをインストールするにはどうすればよいですか？" icon="wrench">
    apt を使用してソフトウェアをインストールできます。

    ```bash theme={null}
    # パッケージリストの更新
    sudo apt update

    # ソフトウェアのインストール
    sudo apt install package-name
    ```

    注意点：

    1. インストールは一時的であり、セッションが終了するとリセットされます
    2. パッケージ管理には完全な sudo 権限があります
    3. 現在のラボに必要なパッケージのみをインストールしてください
  </Accordion>

  <Accordion title="ターミナルインターフェースを選択する理由は何ですか？" icon="circle-question-mark">
    ターミナルインターフェースは、次のような場合に最適です。

    1. 迅速に読み込まれる軽量な環境が必要な場合
    2. タスクが主にコマンドラインベースである場合
    3. GUI の気を散らすことなく、ターミナルコマンドに集中したい場合
    4. 低帯域幅の接続で作業している場合
    5. グラフィカルインターフェースを必要としないラボを完了している場合

    GUI アプリケーションまたは高度な IDE 機能が必要な場合は、デスクトップまたは WebIDE インターフェースの使用を検討してください。
  </Accordion>

  <Accordion title="ターミナルセッションがフリーズした場合どうなりますか？" icon="wind">
    ターミナルが応答しなくなった場合：

    1. Ctrl+C を押して、現在のプロセスを中断してみてください
    2. * ボタンを使用して新しいターミナルセッションを作成します
    3. 必要に応じて、ブラウザページを更新してすべてのセッションをリセットします

    更新すると、現在のすべてのターミナルセッションが閉じられ、新しいセッションが開始されることに注意してください。
  </Accordion>
</AccordionGroup>
