ロボット屋さんのためのUbuntuターミナル超入門
ROS Japan UG #59 研究教育におけるROSの活用にて、「ROSの初学者向けのコマンドのチートシートはありませんか?」→「思いつきません。作りましょう!」という質疑応答を見て、作ってみました。
ChatGPT(無料版)に下地を出していただいて、私なりに足したり引いたりしたものになります。あまり時間をかけず作ったものですので、「これはいるでしょ!」「これはいらないのでは?」みたいなご意見があればZennのコメントやXなどでいただけますと大変助かります。
Ubuntu ターミナル チートシート
🖥️ ターミナルの基本
コマンド | 説明 |
---|---|
Ctrl + Alt + T |
ターミナルを開く |
exit / Ctrl + D
|
ターミナルを終了 |
↑ / ↓ |
コマンド履歴の操作 |
Tab |
自動補完 |
Ctrl + C |
実行中のプログラムを止める |
Ctrl + Shift + C |
選択範囲をコピー |
Ctrl + Shift + V |
貼り付け |
Ctrl + L |
表示のクリア |
Ctrl + R |
履歴検索 |
📂 ファイル・ディレクトリ操作
コマンド | 説明 |
---|---|
ls / ls -l / ls -a
|
一覧 / 詳細 / 隠しファイルも表示(補足) |
cd <dir> |
ディレクトリに移動(補足) |
mkdir <dir> |
新しいディレクトリを作成(補足) |
cp <src> <dst> |
<src>(ファイルやディレクトリ)を<dst>にコピー |
mv <src> <dst> |
<src>を<dst>に移動/名前変更 |
rm <file> |
ファイルを削除(補足) |
rm -r <dir> |
ディレクトリを削除 |
chmod +x <file> |
ファイルに実行権限を付与 |
📄 テキストファイル操作
コマンド | 説明 |
---|---|
cat <file> |
ファイル全体を表示 |
less <file> |
ページ送りで表示 (q で終了) |
tail -f <file> |
ファイルの追記を監視 |
nano <file> |
初学者向けのシンプルなテキストエディター |
📦 ソフトウェア管理
コマンド | 説明 |
---|---|
sudo apt update |
パッケージ情報を更新 |
sudo apt upgrade |
ソフトウェアを更新 |
sudo apt install <pkg> |
<pkg>をインストール |
git clone <URL> |
GitHubなどからソースコードを取得(ビルドなどは別途ご自身で) |
⚙️ bashターミナルの操作
コマンド | 説明 |
---|---|
source <file> |
シェルスクリプトの読み込み |
./<file> |
スクリプトの実行 |
export VAR=value |
環境変数を設定 |
echo $VAR |
環境変数を確認 |
🌐 ネットワーク・通信コマンド
コマンド | 説明 |
---|---|
ping <IP> |
ネットワーク接続確認(Ctrl + C で終了) |
ip a |
ネットワークインターフェイスの情報表示(自分のIP確認など) |
ssh <user>@<IP> |
リモートPCにログイン(例: ssh ubuntu@192.168.0.10 )補足
|
scp <file> <dst> |
リモートPCへ(から)ファイルをコピー(リモートファイルは<user>@<IP>:<path> と指定) |
scp -r <dir> <dst> |
リモートPCへ(から)ディレクトリをコピー |
Ubuntu環境の構築
Ubuntuのネイティブ環境を用意していただくのが一番ですが、Windowsを使っている方が多いと思われるためWSLの導入について紹介します。WSL(Windows Subsystem for Linux)とは、Windows上でLinuxをほぼそのまま使える仕組みです。
まずWSLをインストールは、PowerShellを管理者権限で実行して以下のコマンドを入力すれば完了です。
wsl --install
その後PCを一度再起動して、再度PowerShellを開き、以下のコマンドを入力することでWSLにUbuntuをインストールできます。
wsl --install -d Ubuntu
ユーザ名とパスワードを設定してログインできます。
もし上記コマンドでうまくインストールできない場合には、GUIでインストールすることもできます。Windows標準でインストールされているMicrosoft Storeというソフトを開き、Ubuntuを検索してインストールしてください。
ターミナルですが、PowerShellでは、コピペがCtrl + Shift + C
やCtrl + Shift + V
に設定されていないため、Windows Terminalもインストールすることもオススメします。
コマンドの補足
lsコマンド
ここでls
コマンドなどの後ろに半角スペースが1つ空いて付いている-l
や-a
は、コマンドのオプションと呼ばれます。
-l
はlong format、-a
はallの意味で、これらをつけることで、出力結果などの動作を変化させることができます。
ちなみに、Ubuntuのbashではls -l
をll
で、ls -a
をla
で実行できます。
cdコマンド
cdコマンドはディレクトリ文字列以外にも以下のような指定もできます。
コマンド | 説明 |
---|---|
cd .. |
1階層上のディレクトリに移動 |
cd ../.. |
2階層上のディレクトリに移動 |
cd ~ |
ホームディレクトリ(/home/<user>/)に移動 |
cd - |
移動する前のディレクトリに戻る |
mkdirコマンド
mkdirコマンドは単体では1つのディレクトリを作成します。複数ディレクトリを同時に作ることも可能ですが、複数階層のディレクトリを一気に作る場合は-p
オプションを付けます。
mkdir -p ~/ros2_ws/src
rmコマンド
-r
はrecursive(再帰的に)という意味です。消してよいかの確認をスキップするためには-f
オプションも追加してください。rm -rf <dir>
のように複数のオプションはつなげて書けます。だたしこれを使うときには、間違えたファイルを消さないように細心の注意を払うようにしてください。対象のファイルやディレクトリのある場所までcd
で移動して、相対パス指定で実行することを推奨します。
sshコマンド
ロボットに搭載している小型PCにディスプレイやキーボードを繋がずに、ネットワーク経由でリモート操作したいことがあるかと思います。そのようなときにはSSH接続が便利です。
しかしながらssh
コマンドで毎回<user>
、<IP>
およびそのパスワードを入力することは面倒です。そこでSSHキーとSSH configファイルを作成しましょう。
以下のコマンドで、鍵の種類はed25519として、~/.ssh/
というディレクトリに、id_ed25519
とid_ed25519.pub
が生成されます。-C
オプションはコメントであるため不要ですが、将来的にGitHubなどでも使用予定の場合には、メールアドレスで設定することが一般的です。
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519
実行するとパスフレーズの設定を求められます。セキュリティを高く保ちたい場合には設定すべきですが、何も入力せずEnterとしても構いません。
次に、以下のコマンドで公開鍵をリモートPCにコピーします。
ssh-copy-id <user>@<IP>
実行時にリモートPCの<user>
のパスワードが聞かれますので入力してください。以降はssh <user>@<IP>
としたときに、自動で鍵認証をされるため、パスワードを聞かれることはなくなります。
注意として、ここで作成した鍵は絶対に他人に渡したり見せたりしなようようにしてください。1台のロボットをチームで共同開発したいときの運用としては、それぞれのユーザー(PC)が各々で鍵を作成して登録するとよいでしょう。
つぎに、<user>@<IP>
の省略化を行います。
~/.ssh/config
というファイルをテキストエディターを用いて以下のように作成してください。
Host robot
HostName <IP>
User <user>
IdentityFile ~/.ssh/id_ed25519
そうするとssh robot
でログインできるようになります。ここでrobot
の文字も適当な名前に変えていただいてもかいません。
ちなみに、scp
もこの設定を読むため、scp <file> <user>@<IP>:<path>
とコマンドするところをscp <file> robot:<path>
と省略できます。さらに<path>
を指定するときにTab補完も効くようになります。
テキストエディター
チートシートではnano
を記載しました。慣れている方は(初学者で慣れている方がいるかは非常に怪しいですが)vi
を使用していただいてもよいですし、GUIで操作している場合にはVS Codeなどを使用してもよいでしょう。VS Codeのプラグインを入れてSSH先のファイルを編集することも可能ですが、ちょこっと追記するくらいでしたらターミナル上でやってしまった方が早いです。
nanoよいところは下にショートカットキーの表示があるところです。
ここで^
はCtrl
キーとの同時押しを意味します。つまり、検索をしたければCtrl + W
で、保存して終了はCtrl + O
としたあとCtrl + X
です。
練習問題
ROS 2を使うための練習問題を作成しました。
動作はROS 2 Jazzyで行ったものであり、バージョンに合わせて読み替えてください。
ROS 2のインストール
ROS 2のインストールは公式ページに従ってインストールします。ここに記載されているコマンドを順番に入力してもよいのですが、非公式インストールスクリプトを用意して頂いている方がおられます。
これを用いてROS 2のインストールを行いましょう。
回答
# Gitのインストール(すでにされていれば不要ですが、実行しても問題ありません)
sudo apt install git
# ソースコードを取得
git clone https://github.com/Tiryoh/ros2_setup_scripts_ubuntu.git
# ソースコードのディレクトリに移動
cd ros2_setup_scripts_ubuntu/
# スクリプトを実行
./run.sh
# 1つ上の階層に移動
cd ..
# インストールスクリプトの削除
rm -rf ros2_setup_scripts_ubuntu/
ROS 2ワークスペースを作る
ROS 2のワークスペースを作成しましょう。そこにパッケージサンプルをダウンロード、ビルドして、実行してみましょう。公式のチュートリアルに従うとできます。
回答
# ROS 2のコマンドが使えるように読み込み
source /opt/ros/jazzy/setup.bash
# ワークスペースディレクトリとソースディレクトリを同時作成
mkdir -p ~/ros2_ws/src
# ソースコードのディレクトリに移動
cd ~/ros2_ws/src
# Gitのインストール(すでにされていれば不要ですが、実行しても問題ありません)
sudo apt install git
# ソースコードを取得
git clone https://github.com/ros/ros_tutorials.git -b jazzy
# 1階層上のワークスペースディレクトリに移動
cd ..
# ソースコードの依存関係を解決
rosdep install -i --from-path src --rosdistro jazzy -y
# ソースコードをビルド
colcon build
# build install logディレクトリができていることを確認
ls
# ビルドしたファイルを実行できるように読み込み
source install/local_setup.bash
# 実行
ros2 run turtlesim turtlesim_node
おわりに
突貫工事です。時間があるときにまた整備します。要望などあれば気軽にいただけますと幸いです。
Discussion