ガクセイハッカソン

Unixコマンド チュートリアル

2023-11-15 公開

Unixコマンドとは

Unixコマンドは、多くのIT技術者が利用しているツールで、活用することでファイル管理、システム操作、プログラミングなどのタスクを効率的に進めるのに役立ちます。

Unixコマンドは、テキストベースのインターフェース、すなわちCUI(Character User Interface)で利用されます。CUIを用いると、グラフィカルな要素を使用せず、テキストコマンドの入力でコンピュータと対話することができます。これは特に、Unix系のオペレーティングシステム(OS)であるLinuxで一般的です。Linuxは、Unixに類似した構造を持つフリーかつオープンソースのOSで、特にサーバー用途で広く利用されています。

Linuxについてもっと知りたい人は、こちらの解説動画もぜひご視聴ください。

実際の開発の現場でも、多くのIT技術者が業務でUnixコマンドを使用しており、またUnixコマンドが前提となっているタスクの自動化ツールや開発ツールも数多くあります。

今回は、Unixコマンドの基本的な使い方を解説していきます。

Unixコマンドを使う場面

Unixコマンドは以下のような場面で使用されます。

  • システム管理: システムの設定や管理、ユーザーの追加や削除など。
  • プログラミング: プログラムのコンパイルや実行、デバッグ。
  • ファイル操作: ファイルやディレクトリの作成、削除、移動、コピー。

マウスなどで操作するGUI(Graphica User Interface)アプリケーションは直感的で視覚的ですが、コマンドを使うメリットもあります。例えば、GUIアプリケーションでは、ファイルをドラッグ&ドロップして移動することができますが、コマンドでは、ファイルをコピーする際にも同じコマンドを使うことができます。また、コマンドは、複数のファイルを一度に処理することができます。これは、GUIアプリケーションでは、ファイルを一つずつ処理する必要があるため、非常に効率的です。

他にも、コマンドの使用はGUIアプリケーションよりも、軽量で高速です。また、コマンドの連続実行や定期実行など、自動化も可能です。これらの特性は、システム管理やプログラミングなど、多くの場面で有用です。

ターミナルの開き方

Unixコマンドは、一般的にターミナルと呼ばれるアプリケーションから利用します。

ターミナルでコマンドを実行する様子。

Unix系OSのLinuxやMacOSでは、デフォルトでターミナルがインストールされています。またサードパーティのターミナルを追加でインストールこともできます。

サードパーティのターミナルソフト

  • iTerms2
    • macOS用の豊富な機能が追加されたターミナル
  • Hyper™
    • Web技術で開発されたマルチプラットフォーム対応のターミナル

Windowsの場合は、CygwinやWSL(Windows Subsystem for Linux)といったツールを使うことで、Unixコマンドが利用できます。どちらが良いかはユースケースと好みに依りますが、Web開発では完全に近いLinux環境を構築できるWSLが人気です。

WSLの環境構築方法は、こちらの記事で解説しています。
(Windowsユーザー向け)WSL環境構築

CUIを利用する際によく使われる用語

次にUnixコマンドをはじめCUIを利用する際によく使われる用語を説明します。

  • プロンプト
    • ターミナルがコマンドの入力を待っている時、画面に表示される文字や記号のことを指します。多くの場合、$> がプロンプトとして用いられます。
  • コマンド
    • ターミナルに入力する命令のことです。例えば、lsコマンドは、現在のディレクトリの内容を表示します。
  • オプション
    • コマンドの動作を変更するために用いられる特殊なパラメータのことです。オプションは、通常、ハイフン-に続いて一文字、または二重ハイフン--に続いて複数の文字で表記されます。例:ls -lls --all
  • 引数
    • コマンドが作用する対象のことです。例えば、cd Documentsコマンドでは、Documentsが引数で、cdコマンドによってDocumentsディレクトリに移動します。

基本的なUnixコマンド

最も基本的で頻繁に使用されるUnixコマンドの一部を紹介します。($マークはプロンプトを表すため、入力する必要はありません。)

  • pwd(Print Working Directory)

    • 現在のディレクトリのフルパスを表示します。

    • 例:

      $ pwd
      /home/username
      
  • ls(List)

    • ディレクトリの内容を一覧表示します。

    • 例:

      $ ls
      Documents  Downloads  Music  Pictures
      
    • オプション-lを使用すると、詳細なフォーマットで表示します。

      $ ls -l
      drwxr-xr-x 2 username username 4096 Sep 26 18:32 Documents
      drwxr-xr-x 2 username username 4096 Sep 26 18:32 Downloads
      drwxr-xr-x 2 username username 4096 Sep 26 18:32 Music
      drwxr-xr-x 2 username username 4096 Sep 26 18:32 Pictures
      
  • cd(Change Directory)

    • 現在のディレクトリを変更します。

    • 例:

      cd Documents
      
  • mkdir(Make Directory)

    • 新しいディレクトリを作成します。

    • 例:

      mkdir NewFolder
      
  • touch

    • 新しい空のファイルを作成します。

    • 例:

      touch newfile.txt
      
  • rm(Remove)

    • ファイルまたはディレクトリを削除します。

    • 例:

      rm newfile.txt
      
  • cp(Copy)

    • ファイルまたはディレクトリをコピーします。

    • 例:

      cp oldfile.txt newfile.txt
      
  • mv(Move)

    • ファイルまたはディレクトリを移動、または名前を変更します。

    • 例:

      mv oldname.txt newname.txt
      
  • cat(Concatenate and Display)

    • ファイルの内容を表示します。

    • 例:

      $ cat filename.txt
      This is the content of the file.
      
  • echo

    • 引数として与えられた文字列を出力します。

    • 例:

      $ echo "Hello, World!"
      Hello, World!
      
  • man(Manual)

    • コマンドのマニュアルを表示します。ここではlsコマンドのマニュアルを表示する例です。

    • 例:

      man ls
      

これらのコマンドとその使用例を理解することで、Unixベースのシステムで基本的な作業を行うことができます。

さらに知る

UNIXコマンドの応用を知りたい人向けに、トピック別で参考サイトを紹介します。

シェルスクリプト

Unixコマンドの応用であるシェルスクリプトを学ぶことで、複数のコマンドを一つのファイルにまとめて実行することができ、作業の自動化が可能となります。例えば、バックアップの取得や、ログファイルの分析など、繰り返し行う作業を自動化する際に役立ちます。
【Bash】シェルスクリプト入門【初心者】

テキスト処理コマンド

テキスト処理コマンドの中で、awksedgrepなどは、テキストデータの処理や分析に利用されます。これらのコマンドは、ログの分析や、特定のパターンを含む行の抽出など、テキストファイルの内容を解析する場面で重宝します。
【sed / awk / grep】文字列の置換・抽出・検索と正規表現 | Linux Cheat Sheet - Qiita

パーミッションとオーナーシップ

ファイルやディレクトリのパーミッションやオーナーシップの管理を学ぶことで、システムのセキュリティを向上させることができます。正しいパーミッションの設定によって、不正アクセスやデータ漏洩のリスクを減少させることができます。
chmod? chown? よくわからんって人のための、ファイル権限系まとめ - Qiita

システム管理コマンド

システム管理コマンドには、top、ps、dfなどがあり、これらを利用することで、システムの状態やリソースの使用状況を確認できます。これらのコマンドは、システムのパフォーマンスモニタリングや、問題の診断に役立ちます。
Linux | プロセス, CPU/メモリー利用率, ディスク容量確認(ps, free, vmstat, df, du) - わくわくBank

ネットワーキングコマンド

システム管理コマンドには、top、ps、dfなどがあり、これらを利用することで、システムの状態やリソースの使用状況を確認できます。これらのコマンドは、システムのパフォーマンスモニタリングや、問題の診断に役立ちます。
Linux | ネットワークの状態確認(ping, ifconfig, netstatなど) - わくわくBank

関連記事