Linuxコマンドを自作しながら学ぶ


Linuxコマンドとは、上のようなコマンドラインインターフェース(Command Line Interface : CLI)でコンピュータを操作する時に使用する命令文です。

※詳しい説明はRasbperry Pi OS Lite(デスクトップなしDebian)からデスクトップ環境を構築してみるをご覧ください。


今回は簡単なコマンドを自作しながら、コマンドについて慣れることを趣旨としていますが、その前にいくつか頻繁に使用するコマンドについて触れておきます。




コマンドを実行する為に、ターミナルを起動します。



ラズベリーパイであれば、画面左上の矢印で示した箇所のアイコンをクリックし、



ターミナル(LXTerminal)を起動します。


最初に現在いる場所(ディレクトリ)を調べます。

下記のコマンドを入力して、エンターキー(enter)を押してください。

$ pwd

※最初の$マークはコマンドを入力することを意味していまして、実際には$の入力は不要です。

pwd - Wikipedia


/home/pi

のような値が出力されます。


この値が現在いる場所(ディレクトリ)になります。




ディレクトリとは何か?ですが、



デスクトップ環境であれば、上のキャプチャのようにフォルダを開けば、そのフォルダ内のフォルダやファイルを確認することができます。


CLIの環境ではデスクトップ環境のフォルダのことをディレクトリを呼びます。


ターミナルを起動した時、通常はホームディレクトリと呼ばれるディレクトリから開始します。




ホームディレクトリに含まれるディレクトリとファイルを確認するコマンドを実行してみます。

$ ls

を実行すると、

Desktop  workspace     テンプレート  ドキュメント  音楽  公開
pi-apps  ダウンロード  デスクトップ  ビデオ        画像

が出力されました。


一つ上のデスクトップ環境のフォルダのキャプチャと同じ構成の値が出力されました。

ls (UNIX) - Wikipedia




コマンドでディレクトリの移動をしてみます。


デスクトップ環境であれば、



フォルダのアイコンをクリックして、



フォルダを開く動作と同じです。


今回はworkspaceディレクトリに移動するとして、下記のコマンドを実行します。

$ cd workspace

移動できたか?を確認するために、下記のコマンドを実行してみます。

$ ls

project01  project02

のような感じで、一つ前にlsを実行した時と異なる値が出力されれば、ディレクトリの移動が正常に実行されたことになります。

cd (UNIX) - Wikipedia


今回触れました ls や cd には更に細かい使用方法がありますが、それはこの場では触れないことにしますので、詳しく記載されているサイト等を確認してみましょう。




コマンドを自作してみます。

今回はGoという言語でコマンドを自作することにします。

The Go Programming Language


ターミナルを開き、

sudo apt install golang

を実行します。


ターミナルに再び入力できるようになりました、下記のコマンドでgoのインストールが終了したことを確認します。


$ go version
go version go1.19.8 linux/arm64

のような内容が出力されれば良いです。


これでGoでコードを書く準備ができました。

※sudo等の所見の書き方は後術します。




今回はsayというコマンドを自作します。


最初に使用中のマシンにsayというコマンドがないことを確認します。

$ which say

を実行して、何も出力されなければ、使用中のマシンにsayというコマンドはありません。

コマンドの場所を調べるには - ITmedia


sayコマンドはホームディレクトリ(今回であれば、/home/pi/以下)で作成します。


/home/pi/say.goファイルを作成して、

package main

import "fmt"

func main() {
	fmt.Println("hello")
}

のコードを保存します。


下記のコマンドで実行ファイルを生成します。

$ go build say.go

実行したディレクトリにsayという実行ファイルが生成されますので、

$ ./say

でファイルを実行してみます。


hello

と出力されることを確認できましたら、


$ mv say /usr/local/bin/

で/usr/local/bin/say となるようにファイルを移動します。


/usr/local/bin/以下に実行ファイルを配置すると、何処のディレクトリにいても、sayのみで実行できるようになります。


ファイルの移動はmvコマンドを使用します。

mv 移動したいファイル 移動先のパス

で指定します。

mv (UNIX) - Wikipedia


mvを実行した時に

mv: cannot move 'say' to '/usr/local/bin/say': Permission denied

のようにPermission denied(ファイルの移動の権限がない)が出力されましたら、

$ sudo mv say /usr/local/bin/

を実行します。


sudoは以後のコマンドをルート権限(すべての操作が許可されているアカウント)で実行することになります。

sudo - Wikipedia


sayコマンドが使用できるようになったか?を確認するために

$ say

を実行してみます。


hello

が出力されることを確認しましょう。


$ which say

でsayコマンドがあるか?も確認しておきます。


/usr/local/bin/say

が出力されるはずです。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。