Repository: ros2/ros2_documentation
Pull request #5236: Update Beginnter-CLI-Tools docu
Author: login: Nils-ChristianIseke
Labels: name: backport-all
description: backport at reviewers discretion; from rolling to all versions
Created: 2025-04-16T14:01:22Z | Merged: 2025-04-17T22:22:31Z

Adjust console blocks so command and output are in one console block. $ indicating it's a command.


Diff:
diff --git a/source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst b/source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst
index 52addbd558d..eae0fb57d67 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst
@@ -56,23 +56,25 @@ You will need to run this command on every new shell you open to have access to
 
    .. group-tab:: Linux
 
-      .. code-block:: bash
+      .. code-block:: console
+
+        $ source /opt/ros/{DISTRO}/setup.bash
 
-        # Replace ".bash" with your shell if you're not using bash
-        # Possible values are: setup.bash, setup.sh, setup.zsh
-        source /opt/ros/{DISTRO}/setup.bash
+
+      Replace ``.bash`` with your shell if you're not using bash.
+      Possible values are: ``setup.bash``, ``setup.sh``, ``setup.zsh``.
 
    .. group-tab:: macOS
 
       .. code-block:: console
 
-        . ~/ros2_install/ros2-osx/setup.bash
+        $ . ~/ros2_install/ros2-osx/setup.bash
 
    .. group-tab:: Windows
 
       .. code-block:: console
 
-        call C:\dev\ros2\local_setup.bat
+        $ call C:\dev\ros2\local_setup.bat
 
 .. note::
     The exact command depends on where you installed ROS 2.
@@ -89,15 +91,15 @@ If you don't want to have to source the setup file every time you open a new she
 
       .. code-block:: console
 
-        echo "source /opt/ros/{DISTRO}/setup.bash" >> ~/.bashrc
+        $ echo "source /opt/ros/{DISTRO}/setup.bash" >> ~/.bashrc
 
-     To undo this, locate your system's shell startup script and remove the appended source command.
+      To undo this, locate your system's shell startup script and remove the appended source command.
 
    .. group-tab:: macOS
 
       .. code-block:: console
 
-        echo "source ~/ros2_install/ros2-osx/setup.bash" >> ~/.bash_profile
+        $ echo "source ~/ros2_install/ros2-osx/setup.bash" >> ~/.bash_profile
 
       To undo this, locate your system's shell startup script and remove the appended source command.
 
@@ -109,14 +111,14 @@ If you don't want to have to source the setup file every time you open a new she
 
       .. code-block:: console
 
-        C:\dev\ros2_{DISTRO}\local_setup.ps1
+        $ C:\dev\ros2_{DISTRO}\local_setup.ps1
 
       PowerShell will request permission to run this script every time a new shell is opened.
       To avoid that issue you can run:
 
       .. code-block:: console
 
-        Unblock-File C:\dev\ros2_{DISTRO}\local_setup.ps1
+        $ Unblock-File C:\dev\ros2_{DISTRO}\local_setup.ps1
 
       To undo this, remove the new 'Microsoft.PowerShell_profile.ps1' file.
 
@@ -132,19 +134,19 @@ If you ever have problems finding or using your ROS 2 packages, make sure that y
 
       .. code-block:: console
 
-        printenv | grep -i ROS
+        $ printenv | grep -i ROS
 
    .. group-tab:: macOS
 
       .. code-block:: console
 
-        printenv | grep -i ROS
+        $ printenv | grep -i ROS
 
    .. group-tab:: Windows
 
       .. code-block:: console
 
-        set | findstr -i ROS
+        $ set | findstr -i ROS
 
 Check that variables like ``ROS_DISTRO`` and ``ROS_VERSION`` are set.
 
@@ -170,37 +172,37 @@ Once you have determined a unique integer for your group of ROS 2 nodes, you can
 
       .. code-block:: console
 
-        export ROS_DOMAIN_ID=<your_domain_id>
+        $ export ROS_DOMAIN_ID=<your_domain_id>
 
       To maintain this setting between shell sessions, you can add the command to your shell startup script:
 
       .. code-block:: console
 
-        echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc
+        $ echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc
 
    .. group-tab:: macOS
 
       .. code-block:: console
 
-        export ROS_DOMAIN_ID=<your_domain_id>
+        $ export ROS_DOMAIN_ID=<your_domain_id>
 
       To maintain this setting between shell sessions, you can add the command to your shell startup script:
 
       .. code-block:: console
 
-        echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bash_profile
+        $ echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bash_profile
 
    .. group-tab:: Windows
 
       .. code-block:: console
 
-        set ROS_DOMAIN_ID=<your_domain_id>
+        $ set ROS_DOMAIN_ID=<your_domain_id>
 
       If you want to make this permanent between shell sessions, also run:
 
       .. code-block:: console
 
-        setx ROS_DOMAIN_ID <your_domain_id>
+        $ setx ROS_DOMAIN_ID <your_domain_id>
 
 3.2 The ``ROS_AUTOMATIC_DISCOVERY_RANGE`` variable
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst b/source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst
index bfbb98dea0c..bd9ec5aaa4b 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst
@@ -55,9 +55,8 @@ Install the turtlesim package for your ROS 2 distro:
 
       .. code-block:: console
 
-        sudo apt update
-
-        sudo apt install ros-{DISTRO}-turtlesim
+        $ sudo apt update
+        $ sudo apt install ros-{DISTRO}-turtlesim
 
    .. group-tab:: macOS
 
@@ -67,16 +66,11 @@ Install the turtlesim package for your ROS 2 distro:
 
       As long as the archive you installed ROS 2 from contains the ``ros_tutorials`` repository, you should already have turtlesim installed.
 
-Check that the package is installed:
-
-.. code-block:: console
-
-  ros2 pkg executables turtlesim
-
-The above command should return a list of turtlesim's executables:
+To check if the package is installed, run the following command, which should return a list of turtlesim's executables:
 
 .. code-block:: console
 
+  $ ros2 pkg executables turtlesim
   turtlesim draw_square
   turtlesim mimic
   turtlesim turtle_teleop_key
@@ -89,20 +83,17 @@ To start turtlesim, enter the following command in your terminal:
 
 .. code-block:: console
 
-  ros2 run turtlesim turtlesim_node
+  $ ros2 run turtlesim turtlesim_node
+  [INFO] [turtlesim]: Starting turtlesim with node name /turtlesim
+  [INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
+
+Under the command, you will see messages from the node.
+There you can see the default turtle's name and the coordinates where it spawns.
 
 The simulator window should appear, with a random turtle in the center.
 
 .. image:: images/turtlesim.png
 
-In the terminal, under the command, you will see messages from the node:
-
-.. code-block:: console
-
-  [INFO] [turtlesim]: Starting turtlesim with node name /turtlesim
-  [INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
-
-There you can see the default turtle's name and the coordinates where it spawns.
 
 3 Use turtlesim
 ^^^^^^^^^^^^^^^
@@ -113,7 +104,7 @@ Now you will run a new node to control the turtle in the first node:
 
 .. code-block:: console
 
-  ros2 run turtlesim turtle_teleop_key
+  $ ros2 run turtlesim turtle_teleop_key
 
 At this point you should have three windows open: a terminal running ``turtlesim_node``, a terminal running ``turtle_teleop_key`` and the turtlesim window.
 Arrange these windows so that you can see the turtlesim window, but also have the terminal running ``turtle_teleop_key`` active so that you can control the turtle in turtlesim.
@@ -130,10 +121,10 @@ You can see the nodes, and their associated topics, services, and actions, using
 
 .. code-block:: console
 
-  ros2 node list
-  ros2 topic list
-  ros2 service list
-  ros2 action list
+  $ ros2 node list
+  $ ros2 topic list
+  $ ros2 service list
+  $ ros2 action list
 
 You will learn more about these concepts in the coming tutorials.
 Since the goal of this tutorial is only to get a general overview of turtlesim, you will use rqt to call some of the turtlesim services and interact with ``turtlesim_node``.
@@ -149,15 +140,14 @@ Open a new terminal to install ``rqt`` and its plugins:
 
     .. code-block:: console
 
-      sudo apt update
-
-      sudo apt install '~nros-{DISTRO}-rqt*'
+      $ sudo apt update
+      $ sudo apt install '~nros-{DISTRO}-rqt*'
 
   .. group-tab:: RHEL
 
     .. code-block:: console
 
-      sudo dnf install 'ros-{DISTRO}-rqt*'
+      $ sudo dnf install 'ros-{DISTRO}-rqt*'
 
   .. group-tab:: macOS
 
@@ -171,7 +161,7 @@ To run rqt:
 
 .. code-block:: console
 
-  rqt
+  $ rqt
 
 5 Use rqt
 ^^^^^^^^^
@@ -247,7 +237,7 @@ In a new terminal, source ROS 2, and run:
 
 .. code-block:: console
 
-  ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
+  $ ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
 
 
 Now, you can move ``turtle2`` when this terminal is active, and ``turtle1`` when the other terminal running ``turtle_teleop_key`` is active.
diff --git a/source/Tutorials/Beginner-CLI-Tools/Launching-Multiple-Nodes/Launching-Multiple-Nodes.rst b/source/Tutorials/Beginner-CLI-Tools/Launching-Multiple-Nodes/Launching-Multiple-Nodes.rst
index acbdc495f1b..52da78b1dad 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Launching-Multiple-Nodes/Launching-Multiple-Nodes.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Launching-Multiple-Nodes/Launching-Multiple-Nodes.rst
@@ -50,7 +50,7 @@ Open a new terminal and run:
 
 .. code-block:: console
 
-   ros2 launch turtlesim multisim.launch.py
+   $ ros2 launch turtlesim multisim.launch.py
 
 This command will run the following launch file:
 
@@ -79,13 +79,13 @@ In the second terminal:
 
 .. code-block:: console
 
-   ros2 topic pub  /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
+   $ ros2 topic pub  /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
 
 In the third terminal:
 
 .. code-block:: console
 
-   ros2 topic pub  /turtlesim2/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"
+   $ ros2 topic pub  /turtlesim2/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"
 
 After running these commands, you should see something like the following:
 
diff --git a/source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst b/source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst
index 85031cec3c8..6c55d9db340 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst
@@ -51,13 +51,13 @@ Open a new terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node
+    $ ros2 run turtlesim turtlesim_node
 
 Open another terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtle_teleop_key
+    $ ros2 run turtlesim turtle_teleop_key
 
 Let's also make a new directory to store our saved recordings, just as good practice:
 
@@ -93,12 +93,7 @@ To see the list of your system's topics, open a new terminal and run the command
 
 .. code-block:: console
 
-  ros2 topic list
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 topic list
   /parameter_events
   /rosout
   /turtle1/cmd_vel
@@ -111,7 +106,7 @@ To see the data that ``/turtle1/cmd_vel`` is publishing, run the command:
 
 .. code-block:: console
 
-  ros2 topic echo /turtle1/cmd_vel
+    $ ros2 topic echo /turtle1/cmd_vel
 
 Nothing will show up at first because no data is being published by the teleop.
 Return to the terminal where you ran the teleop and select it so it's active.
@@ -140,7 +135,7 @@ To record the data published to a topic use the command syntax:
 
 .. code-block:: console
 
-    ros2 bag record <topic_name>
+    $ ros2 bag record <topic_name>
 
 Before running this command on your chosen topic, open a new terminal and move into the ``bag_files`` directory you created earlier, because the rosbag file will save in the directory where you run it.
 
@@ -148,12 +143,7 @@ Run the command:
 
 .. code-block:: console
 
-    ros2 bag record /turtle1/cmd_vel
-
-You will see the following messages in the terminal (the date and time will be different):
-
-.. code-block:: console
-
+    $ ros2 bag record /turtle1/cmd_vel
     [INFO] [rosbag2_storage]: Opened database 'rosbag2_2019_10_11-05_18_45'.
     [INFO] [rosbag2_transport]: Listening for topics...
     [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
@@ -179,22 +169,19 @@ Run the following command:
 
 .. code-block:: console
 
-  ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
+  $ ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
+  [INFO] [rosbag2_storage]: Opened database 'subset'.
+  [INFO] [rosbag2_transport]: Listening for topics...
+  [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
+  [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/pose'
+  [INFO] [rosbag2_transport]: All requested topics are subscribed. Stopping discovery...
 
 The ``-o`` option allows you to choose a unique name for your bag file.
 The following string, in this case ``subset``, is the file name.
 
 To record more than one topic at a time, simply list each topic separated by a space.
+In this case, the command output above confirms that both topics are being recorded.
 
-You will see the following message, confirming that both topics are being recorded.
-
-.. code-block:: console
-
-  [INFO] [rosbag2_storage]: Opened database 'subset'.
-  [INFO] [rosbag2_transport]: Listening for topics...
-  [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
-  [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/pose'
-  [INFO] [rosbag2_transport]: All requested topics are subscribed. Stopping discovery...
 
 You can move the turtle around and press ``Ctrl+C`` when you're finished.
 
@@ -209,25 +196,22 @@ You can see details about your recording by running:
 
 .. code-block:: console
 
-    ros2 bag info <bag_file_name>
+    $ ros2 bag info <bag_file_name>
 
 Running this command on the ``subset`` bag file will return a list of information on the file:
 
 .. code-block:: console
 
-    ros2 bag info subset
-
-.. code-block:: console
-
-  Files:             subset.mcap
-  Bag size:          228.5 KiB
-  Storage id:        mcap
-  Duration:          48.47s
-  Start:             Oct 11 2019 06:09:09.12 (1570799349.12)
-  End                Oct 11 2019 06:09:57.60 (1570799397.60)
-  Messages:          3013
-  Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 9 | Serialization Format: cdr
-                   Topic: /turtle1/pose | Type: turtlesim_msgs/msg/Pose | Count: 3004 | Serialization Format: cdr
+    $ ros2 bag info subset
+    Files:             subset.mcap
+    Bag size:          228.5 KiB
+    Storage id:        mcap
+    Duration:          48.47s
+    Start:             Oct 11 2019 06:09:09.12 (1570799349.12)
+    End                Oct 11 2019 06:09:57.60 (1570799397.60)
+    Messages:          3013
+    Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 9 | Serialization Format: cdr
+                       Topic: /turtle1/pose | Type: turtlesim_msgs/msg/Pose | Count: 3004 | Serialization Format: cdr
 
 5 Play topic data
 ^^^^^^^^^^^^^^^^^
@@ -239,12 +223,7 @@ Enter the command:
 
 .. code-block:: console
 
-    ros2 bag play subset
-
-The terminal will return the message:
-
-.. code-block:: console
-
+    $ ros2 bag play subset
     [INFO] [rosbag2_storage]: Opened database 'subset'.
 
 Your turtle will follow the same path you entered while recording (though not 100% exactly; turtlesim is sensitive to small changes in the system's timing).
@@ -262,7 +241,7 @@ To get an idea of how often position data is published, you can run the command:
 
 .. code-block:: console
 
-    ros2 topic hz /turtle1/pose
+    $ ros2 topic hz /turtle1/pose
 
 Managing Service Data
 ---------------------
@@ -280,13 +259,13 @@ Open a new terminal and run ``introspection_service``, enabling ``Service Intros
 
 .. code-block:: console
 
-  ros2 run demo_nodes_cpp introspection_service --ros-args -p service_configure_introspection:=contents
+    $ ros2 run demo_nodes_cpp introspection_service --ros-args -p service_configure_introspection:=contents
 
 Open another terminal and run ``introspection_client``, enabling ``Service Introspection``:
 
 .. code-block:: console
 
-  ros2 run demo_nodes_cpp introspection_client --ros-args -p client_configure_introspection:=contents
+    $ ros2 run demo_nodes_cpp introspection_client --ros-args -p client_configure_introspection:=contents
 
 2 Check service availability
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -296,12 +275,7 @@ To see the list of your system's services, open a new terminal and run the comma
 
 .. code-block:: console
 
-  ros2 service list
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 service list
   /add_two_ints
   /introspection_client/describe_parameters
   /introspection_client/get_parameter_types
@@ -322,12 +296,7 @@ To check if ``Service Introspection`` is enabled on the client and service, run
 
 .. code-block:: console
 
-  ros2 service echo --flow-style /add_two_ints
-
-You should see service communication like below:
-
-.. code-block:: console
-
+  $ ros2 service echo --flow-style /add_two_ints
   info:
     event_type: REQUEST_SENT
     stamp:
@@ -339,6 +308,8 @@ You should see service communication like below:
   response: []
   ---
 
+You should see the service communication.
+
 3 Record services
 ^^^^^^^^^^^^^^^^^
 
@@ -349,24 +320,19 @@ To record specific services:
 
 .. code-block:: console
 
-  ros2 bag record --service <service_names>
+  $ ros2 bag record --service <service_names>
 
 To record all services:
 
 .. code-block:: console
 
-  ros2 bag record --all-services
+  $ ros2 bag record --all-services
 
 Run the command:
 
 .. code-block:: console
 
-  ros2 bag record --service /add_two_ints
-
-You will see the following messages in the terminal (the date and time will be different):
-
-.. code-block:: console
-
+  $ ros2 bag record --service /add_two_ints
   [INFO] [1713995957.643573503] [rosbag2_recorder]: Press SPACE for pausing/resuming
   [INFO] [1713995957.662067587] [rosbag2_recorder]: Event publisher thread: Starting
   [INFO] [1713995957.662067614] [rosbag2_recorder]: Listening for topics...
@@ -386,12 +352,7 @@ You can see details about your recording by running:
 
 .. code-block:: console
 
-  ros2 bag info <bag_file_name>
-
-Running this command will return a list of information on the file:
-
-.. code-block:: console
-
+  $ ros2 bag info <bag_file_name>
   Files:             rosbag2_2024_04_24-14_59_17_0.mcap
   Bag size:          15.1 KiB
   Storage id:        mcap
@@ -416,12 +377,7 @@ Enter the command:
 
 .. code-block:: console
 
-    ros2 bag play --publish-service-requests <bag_file_name>
-
-The terminal will return the message:
-
-.. code-block:: console
-
+  $ ros2 bag play --publish-service-requests <bag_file_name>
   [INFO] [1713997477.870856190] [rosbag2_player]: Set rate to 1
   [INFO] [1713997477.877417477] [rosbag2_player]: Adding keyboard callbacks.
   [INFO] [1713997477.877442404] [rosbag2_player]: Press SPACE for Pause/Resume
@@ -445,7 +401,7 @@ Run this command before ``ros2 bag play`` to see the ``introspection_service``:
 
 .. code-block:: console
 
-  ros2 service echo --flow-style /add_two_ints
+  $ ros2 service echo --flow-style /add_two_ints
 
 You can see the service request from the bag file and the service response from  ``introspection_service``.
 
diff --git a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.rst b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.rst
index 01d3f8a67b3..4b9e9156ea2 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.rst
@@ -53,13 +53,13 @@ Open a new terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node
+  $ ros2 run turtlesim turtlesim_node
 
 Open another terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtle_teleop_key
+  $ ros2 run turtlesim turtle_teleop_key
 
 
 2 Use actions
@@ -118,12 +118,7 @@ To see the list of actions a node provides, ``/turtlesim`` in this case, open a
 
 .. code-block:: console
 
-    ros2 node info /turtlesim
-
-Which will return a list of ``/turtlesim``'s subscribers, publishers, services, action servers and action clients:
-
-.. code-block:: console
-
+  $ ros2 node info /turtlesim
   /turtlesim
     Subscribers:
       /parameter_events: rcl_interfaces/msg/ParameterEvent
@@ -153,6 +148,8 @@ Which will return a list of ``/turtlesim``'s subscribers, publishers, services,
       /turtle1/rotate_absolute: turtlesim_msgs/action/RotateAbsolute
     Action Clients:
 
+The command returns a list of ``/turtlesim``'s subscribers, publishers, services, action servers and action clients.
+
 Notice that the ``/turtle1/rotate_absolute`` action for ``/turtlesim`` is under ``Action Servers``.
 This means ``/turtlesim`` responds to and provides feedback for the ``/turtle1/rotate_absolute`` action.
 
@@ -161,12 +158,7 @@ To see that, run:
 
 .. code-block:: console
 
-    ros2 node info /teleop_turtle
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 node info /teleop_turtle
   /teleop_turtle
     Subscribers:
       /parameter_events: rcl_interfaces/msg/ParameterEvent
@@ -195,13 +187,8 @@ To identify all the actions in the ROS graph, run the command:
 
 .. code-block:: console
 
-    ros2 action list
-
-Which will return:
-
-.. code-block:: console
-
-    /turtle1/rotate_absolute
+  $ ros2 action list
+  /turtle1/rotate_absolute
 
 This is the only action in the ROS graph right now.
 It controls the turtle's rotation, as you saw earlier.
@@ -215,13 +202,8 @@ To find ``/turtle1/rotate_absolute``'s type, run the command:
 
 .. code-block:: console
 
-    ros2 action list -t
-
-Which will return:
-
-.. code-block:: console
-
-    /turtle1/rotate_absolute [turtlesim_msgs/action/RotateAbsolute]
+  $ ros2 action list -t
+  /turtle1/rotate_absolute [turtlesim_msgs/action/RotateAbsolute]
 
 In brackets to the right of each action name (in this case only ``/turtle1/rotate_absolute``) is the action type, ``turtlesim_msgs/action/RotateAbsolute``.
 You will need this when you want to execute an action from the command line or from code.
@@ -233,13 +215,8 @@ If you want to check the action type for the action, run the command:
 
 .. code-block:: console
 
-    ros2 action type /turtle1/rotate_absolute
-
-Which will return:
-
-.. code-block:: console
-
-    turtlesim_msgs/action/RotateAbsolute
+  $ ros2 action type /turtle1/rotate_absolute
+  turtlesim_msgs/action/RotateAbsolute
 
 6 ros2 action info
 ^^^^^^^^^^^^^^^^^^
@@ -248,12 +225,7 @@ You can further introspect the ``/turtle1/rotate_absolute`` action with the comm
 
 .. code-block:: console
 
-    ros2 action info /turtle1/rotate_absolute
-
-Which will return
-
-.. code-block:: console
-
+  $ ros2 action info /turtle1/rotate_absolute
   Action: /turtle1/rotate_absolute
   Action clients: 1
       /teleop_turtle
@@ -273,7 +245,7 @@ Enter the following command with the action type in your terminal:
 
 .. code-block:: console
 
-  ros2 interface show turtlesim_msgs/action/RotateAbsolute
+  $ ros2 interface show turtlesim_msgs/action/RotateAbsolute
 
 Which will return:
 
@@ -299,7 +271,7 @@ Now let's send an action goal from the command line with the following syntax:
 
 .. code-block:: console
 
-    ros2 action send_goal <action_name> <action_type> <values>
+  $ ros2 action send_goal <action_name> <action_type> <values>
 
 ``<values>`` need to be in YAML format.
 
@@ -307,12 +279,7 @@ Keep an eye on the turtlesim window, and enter the following command into your t
 
 .. code-block:: console
 
-    ros2 action send_goal /turtle1/rotate_absolute turtlesim_msgs/action/RotateAbsolute "{theta: 1.57}"
-
-You should see the turtle rotating, as well as the following message in your terminal:
-
-.. code-block:: console
-
+  $ ros2 action send_goal /turtle1/rotate_absolute turtlesim_msgs/action/RotateAbsolute "{theta: 1.57}"
   Waiting for an action server to become available...
   Sending goal:
      theta: 1.57
@@ -324,19 +291,18 @@ You should see the turtle rotating, as well as the following message in your ter
 
   Goal finished with status: SUCCEEDED
 
-All goals have a unique ID, shown in the return message.
-You can also see the result, a field with the name ``delta``, which is the displacement to the starting position.
 
-To see the feedback of this goal, add ``--feedback`` to the ``ros2 action send_goal`` command:
+You should see the turtle rotating.
 
-.. code-block:: console
 
-    ros2 action send_goal /turtle1/rotate_absolute turtlesim_msgs/action/RotateAbsolute "{theta: -1.57}" --feedback
+All goals have a unique ID, shown in the return message.
+You can also see the result, a field with the name ``delta``, which is the displacement to the starting position.
 
-Your terminal will return the message:
+To see the feedback of this goal, add ``--feedback`` to the ``ros2 action send_goal`` command:
 
 .. code-block:: console
 
+  $ ros2 action send_goal /turtle1/rotate_absolute turtlesim_msgs/action/RotateAbsolute "{theta: -1.57}" --feedback
   Sending goal:
      theta: -1.57
 
@@ -364,7 +330,7 @@ To see the data communication between an action client and an action server you
 
 .. code-block:: console
 
-   ros2 action echo <action_name> <optional arguments/action_type>
+  $ ros2 action echo <action_name> <optional arguments/action_type>
 
 ``ros2 action echo`` depends on action introspection of an action client and server, that is disabled by default.
 To enable it, users must call ``configure_introspection`` after creating an action client or server.
@@ -373,11 +339,11 @@ Start up the ``fibonacci_action_server`` and ``fibonacci_action_client``, enabli
 
 .. code-block:: console
 
-   ros2 run action_tutorials_cpp fibonacci_action_server --ros-args -p action_server_configure_introspection:=contents
+  $ ros2 run action_tutorials_cpp fibonacci_action_server --ros-args -p action_server_configure_introspection:=contents
 
 .. code-block:: console
 
-   ros2 run action_tutorials_py fibonacci_action_client --ros-args -p action_client_configure_introspection:=contents
+  $ ros2 run action_tutorials_py fibonacci_action_client --ros-args -p action_client_configure_introspection:=contents
 
 Now we are able to see the action communication between ``fibonacci_action_server`` and ``fibonacci_action_client`` via ``ros2 action echo``.
 
diff --git a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.rst b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.rst
index ea722fe1270..78f749e5e1b 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.rst
@@ -56,13 +56,13 @@ The command ``ros2 run`` launches an executable from a package.
 
 .. code-block:: console
 
-    ros2 run <package_name> <executable_name>
+  $ ros2 run <package_name> <executable_name>
 
 To run turtlesim, open a new terminal, and enter the following command:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node
+  $ ros2 run turtlesim turtlesim_node
 
 The turtlesim window will open, as you saw in the :doc:`previous tutorial <../Introducing-Turtlesim/Introducing-Turtlesim>`.
 
@@ -81,7 +81,7 @@ Open a new terminal while turtlesim is still running in the other one, and enter
 
 .. code-block:: console
 
-    ros2 node list
+  $ ros2 node list
 
 The terminal will return the node name:
 
@@ -93,7 +93,7 @@ Open another new terminal and start the teleop node with the command:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtle_teleop_key
+  $ ros2 run turtlesim turtle_teleop_key
 
 Here, we are referring to the ``turtlesim`` package again, but this time we target the executable named ``turtle_teleop_key``.
 
@@ -116,7 +116,7 @@ In a new terminal, run the following command:
 
 .. code-block:: console
 
-  ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
+  $ ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
 
 Since you're calling ``ros2 run`` on turtlesim again, another turtlesim window will open.
 However, now if you return to the terminal where you ran ``ros2 node list``, and run it again, you will see three node names:
@@ -134,20 +134,13 @@ Now that you know the names of your nodes, you can access more information about
 
 .. code-block:: console
 
-    ros2 node info <node_name>
+  $ ros2 node info <node_name>
 
 To examine your latest node, ``my_turtle``, run the following command:
 
 .. code-block:: console
 
-    ros2 node info /my_turtle
-
-``ros2 node info`` returns a list of subscribers, publishers, services, and actions.
-i.e. the ROS graph connections that interact with that node.
-The output should look like this:
-
-.. code-block:: console
-
+  $ ros2 node info /my_turtle
   /my_turtle
     Subscribers:
       /parameter_events: rcl_interfaces/msg/ParameterEvent
@@ -177,6 +170,9 @@ The output should look like this:
       /turtle1/rotate_absolute: turtlesim_msgs/action/RotateAbsolute
     Action Clients:
 
+``ros2 node info`` returns a list of subscribers, publishers, services, and actions.
+i.e. the ROS graph connections that interact with that node.
+
 Now try running the same command on the ``/teleop_turtle`` node, and see how its connections differ from ``my_turtle``.
 
 You will learn more about the ROS graph connection concepts including the message types in the upcoming tutorials.
diff --git a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Parameters/Understanding-ROS2-Parameters.rst b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Parameters/Understanding-ROS2-Parameters.rst
index 8ad0b507316..82d32669351 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Parameters/Understanding-ROS2-Parameters.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Parameters/Understanding-ROS2-Parameters.rst
@@ -45,13 +45,13 @@ Open a new terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node
+    $ ros2 run turtlesim turtlesim_node
 
 Open another terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtle_teleop_key
+    $ ros2 run turtlesim turtle_teleop_key
 
 
 2 ros2 param list
@@ -61,12 +61,7 @@ To see the parameters belonging to your nodes, open a new terminal and enter the
 
 .. code-block:: console
 
-    ros2 param list
-
-You will see the node namespaces, ``/teleop_turtle`` and ``/turtlesim``, followed by each node's parameters:
-
-.. code-block:: console
-
+  $ ros2 param list
   /teleop_turtle:
     qos_overrides./parameter_events.publisher.depth
     qos_overrides./parameter_events.publisher.durability
@@ -85,6 +80,9 @@ You will see the node namespaces, ``/teleop_turtle`` and ``/turtlesim``, followe
     qos_overrides./parameter_events.publisher.reliability
     use_sim_time
 
+
+You see the node namespaces, ``/teleop_turtle`` and ``/turtlesim``, followed by each node's parameters.
+
 The namespaces of the parameter and its name are separated using dots as you can see, for example, in ``parameter_events.publisher.depth``.
 
 Every node has the parameter ``use_sim_time``; it's not unique to turtlesim.
@@ -101,19 +99,14 @@ To display the type and current value of a parameter, use the command:
 
 .. code-block:: console
 
-    ros2 param get <node_name> <parameter_name>
+  $ ros2 param get <node_name> <parameter_name>
 
 Let's find out the current value of ``/turtlesim``'s parameter ``background_g``:
 
 .. code-block:: console
 
-    ros2 param get /turtlesim background_g
-
-Which will return the value:
-
-.. code-block:: console
-
-    Integer value is: 86
+  $ ros2 param get /turtlesim background_g
+  Integer value is: 86
 
 Now you know ``background_g`` holds an integer value.
 
@@ -126,21 +119,16 @@ To change a parameter's value at runtime, use the command:
 
 .. code-block:: console
 
-    ros2 param set <node_name> <parameter_name> <value>
+  $ ros2 param set <node_name> <parameter_name> <value>
 
 Let's change ``/turtlesim``'s background color:
 
 .. code-block:: console
 
-    ros2 param set /turtlesim background_r 150
-
-Your terminal should return the message:
-
-.. code-block:: console
-
+  $ ros2 param set /turtlesim background_r 150
   Set parameter successful
 
-And the background of your turtlesim window should change colors:
+The background of your turtlesim window should change colors:
 
 .. image:: images/set.png
 
@@ -154,14 +142,14 @@ You can view all of a node's current parameter values by using the command:
 
 .. code-block:: console
 
-  ros2 param dump <node_name>
+  $ ros2 param dump <node_name>
 
 The command prints to the standard output (stdout) by default but you can also redirect the parameter values into a file to save them for later.
 To save your current configuration of ``/turtlesim``'s parameters into the file ``turtlesim.yaml``, enter the command:
 
 .. code-block:: console
 
-  ros2 param dump /turtlesim > turtlesim.yaml
+  $ ros2 param dump /turtlesim > turtlesim.yaml
 
 You will find a new file in the current working directory your shell is running in.
 If you open this file, you'll see the following content:
@@ -191,18 +179,13 @@ You can load parameters from a file to a currently running node using the comman
 
 .. code-block:: console
 
-  ros2 param load <node_name> <parameter_file>
+  $ ros2 param load <node_name> <parameter_file>
 
 To load the ``turtlesim.yaml`` file generated with ``ros2 param dump`` into ``/turtlesim`` node's parameters, enter the command:
 
 .. code-block:: console
 
-  ros2 param load /turtlesim turtlesim.yaml
-
-Your terminal will return the message:
-
-.. code-block:: console
-
+  $ ros2 param load /turtlesim turtlesim.yaml
   Set parameter background_b successful
   Set parameter background_g successful
   Set parameter background_r successful
@@ -225,7 +208,7 @@ To start the same node using your saved parameter values, use:
 
 .. code-block:: console
 
-  ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
+  $ ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
 
 This is the same command you always use to start turtlesim, with the added flags ``--ros-args`` and ``--params-file``, followed by the file you want to load.
 
@@ -233,7 +216,7 @@ Stop your running turtlesim node, and try reloading it with your saved parameter
 
 .. code-block:: console
 
-  ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml
+  $ ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml
 
 The turtlesim window should appear as usual, but with the purple background you set earlier.
 
diff --git a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
index a3a34bde279..b49c7d6dfb0 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
@@ -48,13 +48,13 @@ Open a new terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node
+  $ ros2 run turtlesim turtlesim_node
 
 Open another terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtle_teleop_key
+  $ ros2 run turtlesim turtle_teleop_key
 
 2 ros2 service list
 ^^^^^^^^^^^^^^^^^^^
@@ -63,6 +63,7 @@ Running the ``ros2 service list`` command in a new terminal will return a list o
 
 .. code-block:: console
 
+  $ ros2 service list
   /clear
   /kill
   /reset
@@ -102,19 +103,14 @@ To find out the type of a service, use the command:
 
 .. code-block:: console
 
-  ros2 service type <service_name>
+  $ ros2 service type <service_name>
 
 Let's take a look at turtlesim's ``/clear`` service.
 In a new terminal, enter the command:
 
 .. code-block:: console
 
-  ros2 service type /clear
-
-Which should return:
-
-.. code-block:: console
-
+  $ ros2 service type /clear
   std_srvs/srv/Empty
 
 The ``Empty`` type means the service call sends no data when making a request and receives no data when receiving a response.
@@ -126,12 +122,7 @@ To see the types of all the active services at the same time, you can append the
 
 .. code-block:: console
 
-  ros2 service list -t
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 service list -t
   /clear [std_srvs/srv/Empty]
   /kill [turtlesim_msgs/srv/Kill]
   /reset [std_srvs/srv/Empty]
@@ -149,7 +140,7 @@ To see information of a particular service, use the command:
 
 .. code-block:: console
 
-  ros2 service info <service_name>
+  $ ros2 service info <service_name>
 
 This returns the service type and the count of service clients and servers.
 
@@ -157,12 +148,7 @@ For example, you can find the count of clients and servers for the ``/clear`` se
 
 .. code-block:: console
 
-   ros2 service info /clear
-
-Which will return:
-
-.. code-block:: console
-
+   $ ros2 service info /clear
    Type: std_srvs/srv/Empty
    Clients count: 0
    Services count: 1
@@ -174,18 +160,13 @@ If you want to find all the services of a specific type, you can use the command
 
 .. code-block:: console
 
-  ros2 service find <type_name>
+  $ ros2 service find <type_name>
 
 For example, you can find all the ``Empty`` typed services like this:
 
 .. code-block:: console
 
-  ros2 service find std_srvs/srv/Empty
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 service find std_srvs/srv/Empty
   /clear
   /reset
 
@@ -196,18 +177,13 @@ You can call services from the command line, but first you need to know the stru
 
 .. code-block:: console
 
-  ros2 interface show <type_name>
+  $ ros2 interface show <type_name>
 
 Try this on the ``/clear`` service's type, ``Empty``:
 
 .. code-block:: console
 
-  ros2 interface show std_srvs/srv/Empty
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 interface show std_srvs/srv/Empty
   ---
 
 The ``---`` separates the request structure (above) from the response structure (below).
@@ -221,12 +197,7 @@ To see the request and response arguments of the ``/spawn`` service, run the com
 
 .. code-block:: console
 
-  ros2 interface show turtlesim_msgs/srv/Spawn
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 interface show turtlesim_msgs/srv/Spawn
   float32 x
   float32 y
   float32 theta
@@ -246,14 +217,14 @@ Now that you know what a service type is, how to find a service's type, and how
 
 .. code-block:: console
 
-  ros2 service call <service_name> <service_type> <arguments>
+  $ ros2 service call <service_name> <service_type> <arguments>
 
 The ``<arguments>`` part is optional.
 For example, you know that ``Empty`` typed services don't have any arguments:
 
 .. code-block:: console
 
-  ros2 service call /clear std_srvs/srv/Empty
+  $ ros2 service call /clear std_srvs/srv/Empty
 
 This command will clear the turtlesim window of any lines your turtle has drawn.
 
@@ -266,17 +237,14 @@ Enter the command:
 
 .. code-block:: console
 
-  ros2 service call /spawn turtlesim_msgs/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"
-
-You will get this method-style view of what's happening, and then the service response:
-
-.. code-block:: console
-
+  $ ros2 service call /spawn turtlesim_msgs/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"64gg
   requester: making request: turtlesim.srv.Spawn_Request(x=2.0, y=2.0, theta=0.2, name='')
 
   response:
   turtlesim.srv.Spawn_Response(name='turtle2')
 
+You will get this method-style view of what's happening, and then the service response.
+
 Your turtlesim window will update with the newly spawned turtle right away:
 
 .. image:: images/spawn.png
@@ -288,7 +256,7 @@ To see the data communication between a service client and a service server you
 
 .. code-block:: console
 
-   ros2 service echo <service_name | service_type> <arguments>
+  $ ros2 service echo <service_name | service_type> <arguments>
 
 ``ros2 service echo`` depends on service introspection of a service client and server, that is disabled by default.
 To enable it, users must call ``configure_introspection`` after creating a service client or server.
@@ -297,20 +265,20 @@ Start up the ``introspection_client`` and ``introspection_service`` service intr
 
 .. code-block:: console
 
-   ros2 launch demo_nodes_cpp introspect_services_launch.py
+  $ ros2 launch demo_nodes_cpp introspect_services_launch.py
 
 Open another terminal and run the following to enable service introspection for ``introspection_client`` and ``introspection_service``.
 
 .. code-block:: console
 
-   ros2 param set /introspection_service service_configure_introspection contents
-   ros2 param set /introspection_client client_configure_introspection contents
+  $ ros2 param set /introspection_service service_configure_introspection contents
+  $ ros2 param set /introspection_client client_configure_introspection contents
 
 Now we are able to see the service communication between ``introspection_client`` and ``introspection_service`` via ``ros2 service echo``.
 
 .. code-block:: console
 
-   ros2 service echo --flow-style /add_two_ints
+  $ ros2 service echo --flow-style /add_two_ints
    info:
      event_type: REQUEST_SENT
      stamp:
diff --git a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
index ed0799efc77..cae26f5dc5e 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
@@ -51,13 +51,13 @@ Open a new terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node
+    $ ros2 run turtlesim turtlesim_node
 
 Open another terminal and run:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtle_teleop_key
+    $ ros2 run turtlesim turtle_teleop_key
 
 Recall from the :doc:`previous tutorial <../Understanding-ROS2-Nodes/Understanding-ROS2-Nodes>` that the names of these nodes are ``/turtlesim`` and ``/teleop_turtle`` by default.
 
@@ -73,7 +73,7 @@ To run rqt_graph, open a new terminal and enter the command:
 
 .. code-block:: console
 
-    rqt_graph
+    $ rqt_graph
 
 You can also open rqt_graph by opening ``rqt`` and selecting **Plugins** > **Introspection** > **Node Graph**.
 
@@ -98,6 +98,7 @@ Running the ``ros2 topic list`` command in a new terminal will return a list of
 
 .. code-block:: console
 
+  $ ros2 topic list
   /parameter_events
   /rosout
   /turtle1/cmd_vel
@@ -108,6 +109,7 @@ Running the ``ros2 topic list`` command in a new terminal will return a list of
 
 .. code-block:: console
 
+  $ ros2 topic list -t
   /parameter_events [rcl_interfaces/msg/ParameterEvent]
   /rosout [rcl_interfaces/msg/Log]
   /turtle1/cmd_vel [geometry_msgs/msg/Twist]
@@ -129,13 +131,13 @@ To see the data being published on a topic, use:
 
 .. code-block:: console
 
-    ros2 topic echo <topic_name>
+    $ ros2 topic echo <topic_name>
 
 Since we know that ``/teleop_turtle`` publishes data to ``/turtlesim`` over the ``/turtle1/cmd_vel`` topic, let's use ``echo`` to introspect that topic:
 
 .. code-block:: console
 
-    ros2 topic echo /turtle1/cmd_vel
+    $ ros2 topic echo /turtle1/cmd_vel
 
 At first, this command won't return any data.
 That's because it's waiting for ``/teleop_turtle`` to publish something.
@@ -171,12 +173,7 @@ Another way to look at this is running:
 
 .. code-block:: console
 
-    ros2 topic info /turtle1/cmd_vel
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 topic info /turtle1/cmd_vel
   Type: geometry_msgs/msg/Twist
   Publisher count: 1
   Subscription count: 2
@@ -201,22 +198,20 @@ Specifically, what structure of data the message expects.
 
 .. code-block:: console
 
-    ros2 interface show geometry_msgs/msg/Twist
-
-For the message type from above it yields:
+    $ ros2 interface show geometry_msgs/msg/Twist
 
 .. code-block:: console
 
-  # This expresses velocity in free space broken into its linear and angular parts.
+    # This expresses velocity in free space broken into its linear and angular parts.
 
-      Vector3  linear
-              float64 x
-              float64 y
-              float64 z
-      Vector3  angular
-              float64 x
-              float64 y
-              float64 z
+        Vector3  linear
+                float64 x
+                float64 y
+                float64 z
+        Vector3  angular
+                float64 x
+                float64 y
+                float64 z
 
 This tells you that the ``/turtlesim`` node is expecting a message with two vectors, ``linear`` and ``angular``, of three elements each.
 If you recall the data we saw ``/teleop_turtle`` passing to ``/turtlesim`` with the ``echo`` command, it's in the same structure:
@@ -240,7 +235,7 @@ Now that you have the message structure, you can publish data to a topic directl
 
 .. code-block:: console
 
-    ros2 topic pub <topic_name> <msg_type> '<args>'
+    $ ros2 topic pub <topic_name> <msg_type> '<args>'
 
 The ``'<args>'`` argument is the actual data you'll pass to the topic, in the structure you just discovered in the previous section.
 
@@ -251,36 +246,36 @@ a. **Publishing dictionary strings**:
 
   In order to publish data to a topic, you need to pass the data in the form of YAML strings.
 
-  .. code-block:: bash
+  .. code-block:: console
 
-    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
+    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
 
   However, you do not need to specify the entire message, if you are just changing the linear or angular velocity, you can just specify the values you want to change.
 
   For example, if you want to change the linear velocity to 2.0 and keep the angular velocity at 1.8, you can do the following:
 
-  .. code-block:: bash
+  .. code-block:: console
 
-    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0}, angular: {z: 1.8}}"
+    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0}, angular: {z: 1.8}}"
 
 b. **Publishing an empty message**:
 
-  .. code-block:: bash
+  .. code-block:: console
 
-    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist
+    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist
 
   This will publish the default values for the message type at 1 Hz.
   In this case, this equivalent to the following command:
 
-  .. code-block:: bash
+  .. code-block:: console
 
-    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}" --rate 1
+    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}" --rate 1
 
 c. **Using autocomplete**:
 
   You can trigger the autocomplete feature of your terminal by the following:
 
-  .. code-block:: bash
+  .. code-block:: console
 
     $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist <TAB>
     --keep-alive
@@ -321,7 +316,7 @@ c. **Using autocomplete**:
 
   .. code-block:: bash
 
-    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist 'linear:
+    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist 'linear:
       x: 0.0
       y: 0.0
       z: 0.0
@@ -337,15 +332,15 @@ d. **Using the raw autocompleted string**:
 
   As mentioned above, the autocompleted string for ``geometry_msgs/msg/Twist`` looks like this:
 
-  .. code-block:: bash
+  .. code-block:: console
 
     \'linear:\^J\ \ x:\ 0.0\^J\ \ y:\ 0.0\^J\ \ z:\ 0.0\^Jangular:\^J\ \ x:\ 0.0\^J\ \ y:\ 0.0\^J\ \ z:\ 0.0\^J\'
 
   This can be directly used in place of the yaml string in the command line.
 
-  .. code-block:: bash
+  .. code-block:: console
 
-    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist \'linear:\^J\ \ x:\ 0.0\^J\ \ y:\ 0.0\^J\ \ z:\ 0.0\^Jangular:\^J\ \ x:\ 0.0\^J\ \ y:\ 0.0\^J\ \ z:\ 0.0\^J\'
+    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist \'linear:\^J\ \ x:\ 0.0\^J\ \ y:\ 0.0\^J\ \ z:\ 0.0\^Jangular:\^J\ \ x:\ 0.0\^J\ \ y:\ 0.0\^J\ \ z:\ 0.0\^J\'
 
 
 The turtle (and commonly the real robots which it is meant to emulate) require a steady stream of commands to operate continuously.
@@ -353,7 +348,7 @@ So, to get the turtle moving, and keep it moving, you can use the following dict
 
 .. code-block:: console
 
-  ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
+  $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
 
 .. image:: images/pub_stream.png
 
@@ -362,7 +357,7 @@ To publish your command just once add the ``--once`` option.
 
 .. code-block:: console
 
-  ros2 topic pub --once -w 2 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
+  $ ros2 topic pub --once -w 2 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
 
 ``--once`` is an optional argument meaning "publish one message then exit".
 
@@ -391,7 +386,7 @@ Finally, you can run ``echo`` on the ``pose`` topic and recheck rqt_graph:
 
 .. code-block:: console
 
-  ros2 topic echo /turtle1/pose
+  $ ros2 topic echo /turtle1/pose
 
 .. image:: images/rqt_graph3.png
 
@@ -402,13 +397,13 @@ For messages with a ``std_msgs/msg/Header``, the header field can be set to ``au
 
 .. code-block:: console
 
-  ros2 topic pub /pose geometry_msgs/msg/PoseStamped '{header: "auto", pose: {position: {x: 1.0, y: 2.0, z: 3.0}}}'
+  $ ros2 topic pub /pose geometry_msgs/msg/PoseStamped '{header: "auto", pose: {position: {x: 1.0, y: 2.0, z: 3.0}}}'
 
 If the message does not use a full header, but just has a field with type ``builtin_interfaces/msg/Time``, that can be set to the value ``now``.
 
 .. code-block:: console
 
-  ros2 topic pub /reference sensor_msgs/msg/TimeReference '{header: "auto", time_ref: "now", source: "dumy"}'
+  $ ros2 topic pub /reference sensor_msgs/msg/TimeReference '{header: "auto", time_ref: "now", source: "dumy"}'
 
 8 ros2 topic hz
 ^^^^^^^^^^^^^^^
@@ -417,15 +412,12 @@ You can also view the rate at which data is published using:
 
 .. code-block:: console
 
-    ros2 topic hz /turtle1/pose
+    $ ros2 topic hz /turtle1/pose
+    average rate: 59.354
+      min: 0.005s max: 0.027s std dev: 0.00284s window: 58
 
 It will return data on the rate at which the ``/turtlesim`` node is publishing data to the ``pose`` topic.
 
-.. code-block:: console
-
-  average rate: 59.354
-    min: 0.005s max: 0.027s std dev: 0.00284s window: 58
-
 Recall that you set the rate of ``turtle1/cmd_vel`` to publish at a steady 1 Hz using ``ros2 topic pub --rate 1``.
 If you run the above command with ``turtle1/cmd_vel`` instead of ``turtle1/pose``, you will see an average reflecting that rate.
 
@@ -438,16 +430,13 @@ The bandwidth used by a topic can be viewed using:
 
 .. code-block:: console
 
-    ros2 topic bw /turtle1/pose
-
-It returns the bandwidth utilization and number of messages being published to the ``/turtle1/pose`` topic.
-
-.. code-block:: console
-
+    $ ros2 topic bw /turtle1/pose
     Subscribed to [/turtle1/pose]
     1.51 KB/s from 62 messages
         Message size mean: 0.02 KB min: 0.02 KB max: 0.02 KB
 
+It returns the bandwidth utilization and number of messages being published to the ``/turtle1/pose`` topic.
+
 .. Note:: The bandwidth reflects the receiving rate on the subscription created by the ``ros2 topic bw`` command, which might be affected by platform resources and QoS configuration, and may not exactly match the publisher's bandwidth.
 
 10 ros2 topic find
@@ -457,7 +446,7 @@ To list a list of available topics of a given type use:
 
 .. code-block:: console
 
-    ros2 topic find <topic_type>
+    $ ros2 topic find <topic_type>
 
 Recall that the ``cmd_vel`` topic has the type:
 
@@ -469,12 +458,7 @@ Using the ``find`` command outputs topics available when given the message type:
 
 .. code-block:: console
 
-    ros2 topic find geometry_msgs/msg/Twist
-
-This outputs:
-
-.. code-block:: console
-
+    $ ros2 topic find geometry_msgs/msg/Twist
     /turtle1/cmd_vel
 
 11 Clean up
diff --git a/source/Tutorials/Beginner-CLI-Tools/Using-Rqt-Console/Using-Rqt-Console.rst b/source/Tutorials/Beginner-CLI-Tools/Using-Rqt-Console/Using-Rqt-Console.rst
index 1d856bfd65a..6406be62f52 100644
--- a/source/Tutorials/Beginner-CLI-Tools/Using-Rqt-Console/Using-Rqt-Console.rst
+++ b/source/Tutorials/Beginner-CLI-Tools/Using-Rqt-Console/Using-Rqt-Console.rst
@@ -45,7 +45,7 @@ Start ``rqt_console`` in a new terminal with the following command:
 
 .. code-block:: console
 
-    ros2 run rqt_console rqt_console
+    $ ros2 run rqt_console rqt_console
 
 The ``rqt_console`` window will open:
 
@@ -63,7 +63,7 @@ Now start ``turtlesim`` in a new terminal with the following command:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node
+    $ ros2 run turtlesim turtlesim_node
 
 2 Messages on rqt_console
 ^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -73,7 +73,7 @@ In a new terminal, enter the ``ros2 topic pub`` command (discussed in detail in
 
 .. code-block:: console
 
-    ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}"
+    $ ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}"
 
 Since the above command is publishing the topic at a steady rate, the turtle is continuously running into the wall.
 In ``rqt_console`` you will see the same message with the ``Warn`` severity level displayed over and over, like so:
@@ -117,7 +117,7 @@ Enter the following command in your terminal:
 
 .. code-block:: console
 
-    ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
+    $ ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
 
 Now you won't see the initial ``Info`` level messages that came up in the console last time you started ``turtlesim``.
 That's because ``Info`` messages are lower priority than the new default severity, ``Warn``.


Reviews:
user: login: christophebedard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-16T15:49:29Z
user: login: Nils-ChristianIseke
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-16T16:09:58Z
user: login: christophebedard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-16T16:14:27Z
user: login: Nils-ChristianIseke
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-16T16:26:47Z
user: login: christophebedard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-16T17:15:23Z
user: login: fujitatomoya
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-16T17:16:23Z
user: login: christophebedard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-16T17:23:48Z
user: login: Nils-ChristianIseke
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-16T17:23:54Z
user: login: Nils-ChristianIseke
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-16T17:30:20Z
user: login: christophebedard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-16T17:41:17Z
user: login: christophebedard
body: Some minor suggestions, most of which can be applied using the GitHub UI.
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-17T19:10:40Z
user: login: christophebedard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-17T21:15:58Z
user: login: christophebedard
body: Alright, this looks good. Thanks again for the PR!

I will try to backport this to older distros, but there will be some conflicts because some of the features documented for Rolling are not available in older distros.
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-17T22:21:32Z

Review comments:
diff_hunk: @@ -311,7 +311,12 @@ Now we are able to see the service communication between ``introspection_client`
 .. code-block:: console
 
    ros2 service echo --flow-style /add_two_ints
-   info:
+
+Which will return:
+
+.. code-block:: console
+
+    info:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
user: login: christophebedard
body: Thanks for the PR! I would actually keep it as a single `console` code-block, but add a `$` before the command line. See: https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Contributing-To-ROS-2-Documentation.html#code-blocks-bash-vs-console.
created_at: 2025-04-16T15:49:29Z
author_association: MEMBER
diff_hunk: @@ -311,7 +311,12 @@ Now we are able to see the service communication between ``introspection_client`
 .. code-block:: console
 
    ros2 service echo --flow-style /add_two_ints
-   info:
+
+Which will return:
+
+.. code-block:: console
+
+    info:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
user: login: Nils-ChristianIseke
body: I adapted it to match the style of the rest of the Beginner: CLI Tools tutorials (I think in this one command and output are always in separate code blocks, which imo is more convenient to follow the tutorials as the code block can be copied and pasted without further changes). Is there any particular reason to change the style in this case?
created_at: 2025-04-16T16:09:58Z
author_association: CONTRIBUTOR
diff_hunk: @@ -311,7 +311,12 @@ Now we are able to see the service communication between ``introspection_client`
 .. code-block:: console
 
    ros2 service echo --flow-style /add_two_ints
-   info:
+
+Which will return:
+
+.. code-block:: console
+
+    info:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
user: login: christophebedard
body: If you use a `console` code-block and put a `$` at the beginning of _command_ lines and no `$` at the beginning of _output_ lines, then only the command lines can be selected using a pointer :computer_mouse: and copied using the copy button. This is explained in the docs section I linked to above. I know not all of the docs do this, but we should move towards this style.
created_at: 2025-04-16T16:14:27Z
author_association: MEMBER
diff_hunk: @@ -311,7 +311,12 @@ Now we are able to see the service communication between ``introspection_client`
 .. code-block:: console
 
    ros2 service echo --flow-style /add_two_ints
-   info:
+
+Which will return:
+
+.. code-block:: console
+
+    info:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
user: login: Nils-ChristianIseke
body: Ok i will adapt the Beginner cli tools docu accordingly.
created_at: 2025-04-16T16:26:47Z
author_association: CONTRIBUTOR
diff_hunk: @@ -311,7 +311,12 @@ Now we are able to see the service communication between ``introspection_client`
 .. code-block:: console
 
    ros2 service echo --flow-style /add_two_ints
-   info:
+
+Which will return:
+
+.. code-block:: console
+
+    info:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
user: login: christophebedard
body: I see you've removed the change you made to this file. Could you add the `$` before `ros2 service echo --flow-style /add_two_ints` here?
created_at: 2025-04-16T17:15:23Z
author_association: MEMBER
diff_hunk: @@ -67,16 +66,11 @@ Install the turtlesim package for your ROS 2 distro:
 
       As long as the archive you installed ROS 2 from contains the ``ros_tutorials`` repository, you should already have turtlesim installed.
 
-Check that the package is installed:
-
-.. code-block:: console
-
-  ros2 pkg executables turtlesim
-
-The above command should return a list of turtlesim's executables:
+To check if the package is installed, run the following command, which should return a list of turtlesim executables:
path: source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst
user: login: fujitatomoya
body: https://github.com/ros2/ros2_documentation/actions/runs/14498458743/job/40672119933?pr=5236, can you address this error?
created_at: 2025-04-16T17:16:02Z
author_association: COLLABORATOR
diff_hunk: @@ -311,7 +311,12 @@ Now we are able to see the service communication between ``introspection_client`
 .. code-block:: console
 
    ros2 service echo --flow-style /add_two_ints
-   info:
+
+Which will return:
+
+.. code-block:: console
+
+    info:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
user: login: christophebedard
body: Or if you prefer to leave that for another PR, that's fine. I know we have to make these changes to a bunch of the articles.
created_at: 2025-04-16T17:23:48Z
author_association: MEMBER
diff_hunk: @@ -67,16 +66,11 @@ Install the turtlesim package for your ROS 2 distro:
 
       As long as the archive you installed ROS 2 from contains the ``ros_tutorials`` repository, you should already have turtlesim installed.
 
-Check that the package is installed:
-
-.. code-block:: console
-
-  ros2 pkg executables turtlesim
-
-The above command should return a list of turtlesim's executables:
+To check if the package is installed, run the following command, which should return a list of turtlesim executables:
path: source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst
user: login: Nils-ChristianIseke
body: Sure not familiar with the tooling yet :D.
created_at: 2025-04-16T17:23:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -311,7 +311,12 @@ Now we are able to see the service communication between ``introspection_client`
 .. code-block:: console
 
    ros2 service echo --flow-style /add_two_ints
-   info:
+
+Which will return:
+
+.. code-block:: console
+
+    info:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.rst
user: login: Nils-ChristianIseke
body: Sry for the confusion. I want to adapt the Beginner cli tools (one commit for one page). And decided to start with Introducing-Turtlesim.rst. Will adapt your requested changes in another commit.
created_at: 2025-04-16T17:30:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -67,16 +66,11 @@ Install the turtlesim package for your ROS 2 distro:
 
       As long as the archive you installed ROS 2 from contains the ``ros_tutorials`` repository, you should already have turtlesim installed.
 
-Check that the package is installed:
-
-.. code-block:: console
-
-  ros2 pkg executables turtlesim
-
-The above command should return a list of turtlesim's executables:
+To check if the package is installed, run the following command, which should return a list of turtlesim executables:
path: source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst
user: login: christophebedard
body: ```suggestion
To check if the package is installed, run the following command, which should return a list of turtlesim's executables:
```
created_at: 2025-04-16T17:40:32Z
author_association: MEMBER
diff_hunk: @@ -67,16 +66,11 @@ Install the turtlesim package for your ROS 2 distro:
 
       As long as the archive you installed ROS 2 from contains the ``ros_tutorials`` repository, you should already have turtlesim installed.
 
-Check that the package is installed:
-
-.. code-block:: console
-
-  ros2 pkg executables turtlesim
-
-The above command should return a list of turtlesim's executables:
+To check if the package is installed, run the following command, which should return a list of turtlesim executables:
 
 .. code-block:: console
 
+  $ ros2 pkg executables turtlesim:
path: source/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.rst
user: login: christophebedard
body: ```suggestion
  $ ros2 pkg executables turtlesim
```
created_at: 2025-04-16T17:40:36Z
author_association: MEMBER
diff_hunk: @@ -56,23 +56,24 @@ You will need to run this command on every new shell you open to have access to
 
    .. group-tab:: Linux
 
-      .. code-block:: bash
+      .. code-block:: console
+
+        $ source /opt/ros/{DISTRO}/setup.bash
 
-        # Replace ".bash" with your shell if you're not using bash
-        # Possible values are: setup.bash, setup.sh, setup.zsh
-        source /opt/ros/{DISTRO}/setup.bash
 
+      Replace ``.bash`` with your shell if you're not using bash.
+      Possible values are: setup.bash, setup.sh, setup.zsh.
    .. group-tab:: macOS
path: source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst
user: login: christophebedard
body: ```suggestion

   .. group-tab:: macOS
```
created_at: 2025-04-17T15:08:21Z
author_association: MEMBER
diff_hunk: @@ -56,23 +56,24 @@ You will need to run this command on every new shell you open to have access to
 
    .. group-tab:: Linux
 
-      .. code-block:: bash
+      .. code-block:: console
+
+        $ source /opt/ros/{DISTRO}/setup.bash
 
-        # Replace ".bash" with your shell if you're not using bash
-        # Possible values are: setup.bash, setup.sh, setup.zsh
-        source /opt/ros/{DISTRO}/setup.bash
 
+      Replace ``.bash`` with your shell if you're not using bash.
+      Possible values are: setup.bash, setup.sh, setup.zsh.
path: source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst
user: login: christophebedard
body: ```suggestion
      Possible values are: ``setup.bash``, ``setup.sh``, ``setup.zsh``.
```
created_at: 2025-04-17T15:08:42Z
author_association: MEMBER
diff_hunk: @@ -89,15 +90,15 @@ If you don't want to have to source the setup file every time you open a new she
 
       .. code-block:: console
 
-        echo "source /opt/ros/{DISTRO}/setup.bash" >> ~/.bashrc
+        $ echo "source /opt/ros/{DISTRO}/setup.bash" >> ~/.bashrc
 
      To undo this, locate your system's shell startup script and remove the appended source command.
path: source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst
user: login: christophebedard
body: While we're here, this line is missing a space to align it with the code block above:

```suggestion
      To undo this, locate your system's shell startup script and remove the appended source command.
```

![image](https://github.com/user-attachments/assets/2b4ba5b6-e1c3-479d-9ec7-cd1873db5308)
created_at: 2025-04-17T15:40:07Z
author_association: MEMBER
diff_hunk: @@ -132,19 +133,20 @@ If you ever have problems finding or using your ROS 2 packages, make sure that y
 
       .. code-block:: console
 
-        printenv | grep -i ROS
+        $ printenv | grep -i ROS
 
    .. group-tab:: macOS
 
       .. code-block:: console
 
-        printenv | grep -i ROS
+        $ printenv | grep -i ROS
 
    .. group-tab:: Windows
 
       .. code-block:: console
 
-        set | findstr -i ROS
+        $ set | findstr -i ROS
+
path: source/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.rst
user: login: christophebedard
body: Remove extra line here

```suggestion
```
created_at: 2025-04-17T15:40:45Z
author_association: MEMBER
diff_hunk: @@ -93,12 +93,7 @@ To see the list of your system's topics, open a new terminal and run the command
 
 .. code-block:: console
 
-  ros2 topic list
-
-Which will return:
-
-.. code-block:: console
-
+    $ ros2 topic list
path: source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst
user: login: christophebedard
body: The lines should be aligned here, otherwise we get this:

![Screenshot from 2025-04-17 08-44-41](https://github.com/user-attachments/assets/e879ede1-87ca-4242-acb0-6b757c4494d0)

```suggestion
  $ ros2 topic list
```
created_at: 2025-04-17T15:46:46Z
author_association: MEMBER
diff_hunk: @@ -140,25 +135,21 @@ To record the data published to a topic use the command syntax:
 
 .. code-block:: console
 
-    ros2 bag record <topic_name>
+    $ ros2 bag record <topic_name>
 
 Before running this command on your chosen topic, open a new terminal and move into the ``bag_files`` directory you created earlier, because the rosbag file will save in the directory where you run it.
 
 Run the command:
 
 .. code-block:: console
 
-    ros2 bag record /turtle1/cmd_vel
-
-You will see the following messages in the terminal (the date and time will be different):
-
-.. code-block:: console
-
+    $ ros2 bag record /turtle1/cmd_vel
     [INFO] [rosbag2_storage]: Opened database 'rosbag2_2019_10_11-05_18_45'.
     [INFO] [rosbag2_transport]: Listening for topics...
     [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
     [INFO] [rosbag2_transport]: All requested topics are subscribed. Stopping discovery...
 
+
path: source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst
user: login: christophebedard
body: ```suggestion
```
created_at: 2025-04-17T15:50:07Z
author_association: MEMBER
diff_hunk: @@ -179,22 +170,18 @@ Run the following command:
 
 .. code-block:: console
 
-  ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
+  $ ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
+  [INFO] [rosbag2_storage]: Opened database 'subset'.
+  [INFO] [rosbag2_transport]: Listening for topics...
+  [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
+  [INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/pose'
+  [INFO] [rosbag2_transport]: All requested topics are subscribed. Stopping discovery...
 
 The ``-o`` option allows you to choose a unique name for your bag file.
 The following string, in this case ``subset``, is the file name.
 
 To record more than one topic at a time, simply list each topic separated by a space.
path: source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst
user: login: christophebedard
body: We should probably keep the explanation, but just reword it a bit:

```suggestion

The ``-o`` option allows you to choose a unique name for your bag file.
The following string, in this case ``subset``, is the file name.

To record more than one topic at a time, simply list each topic separated by a space.
In this case, the command output above confirms that both topics are being recorded.
```
created_at: 2025-04-17T15:53:26Z
author_association: MEMBER
diff_hunk: @@ -209,25 +196,22 @@ You can see details about your recording by running:
 
 .. code-block:: console
 
-    ros2 bag info <bag_file_name>
+    $ ros2 bag info <bag_file_name>
 
 Running this command on the ``subset`` bag file will return a list of information on the file:
 
 .. code-block:: console
 
-    ros2 bag info subset
-
-.. code-block:: console
-
-  Files:             subset.mcap
-  Bag size:          228.5 KiB
-  Storage id:        mcap
-  Duration:          48.47s
-  Start:             Oct 11 2019 06:09:09.12 (1570799349.12)
-  End                Oct 11 2019 06:09:57.60 (1570799397.60)
-  Messages:          3013
-  Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 9 | Serialization Format: cdr
-                   Topic: /turtle1/pose | Type: turtlesim_msgs/msg/Pose | Count: 3004 | Serialization Format: cdr
+    $ ros2 bag info subset
+    Files:             subset.mcap
+    Bag size:          228.5 KiB
+    Storage id:        mcap
+    Duration:          48.47s
+    Start:             Oct 11 2019 06:09:09.12 (1570799349.12)
+    End                Oct 11 2019 06:09:57.60 (1570799397.60)
+    Messages:          3013
+    Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 9 | Serialization Format: cdr
+                    Topic: /turtle1/pose | Type: turtlesim_msgs/msg/Pose | Count: 3004 | Serialization Format: cdr
path: source/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.rst
user: login: christophebedard
body: This line is missing some spaces so that it's aligned with the rest:

![image](https://github.com/user-attachments/assets/1b1eae3d-34a1-47cb-a954-c2f9b03e8c83)

```suggestion
                       Topic: /turtle1/pose | Type: turtlesim_msgs/msg/Pose | Count: 3004 | Serialization Format: cdr
```
created_at: 2025-04-17T15:55:09Z
author_association: MEMBER
diff_hunk: @@ -153,6 +148,8 @@ Which will return a list of ``/turtlesim``'s subscribers, publishers, services,
       /turtle1/rotate_absolute: turtlesim_msgs/action/RotateAbsolute
     Action Clients:
 
+Which returns a list of ``/turtlesim``'s subscribers, publishers, services, action servers and action clients.
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.rst
user: login: christophebedard
body: ```suggestion
The command returns a list of ``/turtlesim``'s subscribers, publishers, services, action servers and action clients.
```
created_at: 2025-04-17T16:06:39Z
author_association: MEMBER
diff_hunk: @@ -273,12 +245,7 @@ Enter the following command with the action type in your terminal:
 
 .. code-block:: console
 
-  ros2 interface show turtlesim_msgs/action/RotateAbsolute
-
-Which will return:
-
-.. code-block:: console
-
+  $ ros2 interface show turtlesim_msgs/action/RotateAbsolute
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.rst
user: login: christophebedard
body: The `#` in the interface output below is interpreted as a command prompt, which makes the interface comment lines starting with `#` be included in the copied text. I'll have to figure out a solution (escaping it or removing `#` from the list of command prompt symbols), but for now I would just keep this as-is, i.e., command and output in separate blocks:

```suggestion
  $ ros2 interface show turtlesim_msgs/action/RotateAbsolute

Which will return:

.. code-block:: console

```
created_at: 2025-04-17T16:12:32Z
author_association: MEMBER
diff_hunk: @@ -98,6 +98,7 @@ Running the ``ros2 topic list`` command in a new terminal will return a list of
 
 .. code-block:: console
 
+  ros2 topic list
   /parameter_events
   /rosout
   /turtle1/cmd_vel
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
user: login: christophebedard
body: ```suggestion
.. code-block:: console

  $ ros2 topic list
  /parameter_events
  /rosout
  /turtle1/cmd_vel
```
created_at: 2025-04-17T18:54:20Z
author_association: MEMBER
diff_hunk: @@ -171,15 +173,10 @@ Another way to look at this is running:
 
 .. code-block:: console
 
-    ros2 topic info /turtle1/cmd_vel
-
-Which will return:
-
-.. code-block:: console
-
-  Type: geometry_msgs/msg/Twist
-  Publisher count: 1
-  Subscription count: 2
+    $ ros2 topic info /turtle1/cmd_vel
+      Type: geometry_msgs/msg/Twist
+      Publisher count: 1
+      Subscription count: 2
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
user: login: christophebedard
body: ```suggestion
  $ ros2 topic info /turtle1/cmd_vel
  Type: geometry_msgs/msg/Twist
  Publisher count: 1
  Subscription count: 2
```
created_at: 2025-04-17T18:56:33Z
author_association: MEMBER
diff_hunk: @@ -201,22 +198,17 @@ Specifically, what structure of data the message expects.
 
 .. code-block:: console
 
-    ros2 interface show geometry_msgs/msg/Twist
+    $ ros2 interface show geometry_msgs/msg/Twist
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
user: login: christophebedard
body: The `#` character messes up the copied text here too, so let's keep these as two separate code blocks for now:

```suggestion
    $ ros2 interface show geometry_msgs/msg/Twist

.. code-block:: console

```
created_at: 2025-04-17T18:58:36Z
author_association: MEMBER
diff_hunk: @@ -319,9 +311,10 @@ c. **Using autocomplete**:
 
   The final autocompleted string will look like this:
 
-  .. code-block:: bash
+  .. code-block:: console
 
-    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist 'linear:
+    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist
+    'linear:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
user: login: christophebedard
body: This one is tricky, because `'linear:` and the lines below are part of the command. Adding a `$` before all of these lines almost works, but it doesn't preserve the spaces, so the command wouldn't work:

```
ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist 'linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
'
```

Therefore, let's keep make this one a `bash` code-block (like it was before), but remove the `$`. It's a bit inconsistent, but at least it's correct.
created_at: 2025-04-17T19:04:51Z
author_association: MEMBER
diff_hunk: @@ -438,16 +428,13 @@ The bandwidth used by a topic can be viewed using:
 
 .. code-block:: console
 
-    ros2 topic bw /turtle1/pose
+    $ ros2 topic bw /turtle1/pose
+      Subscribed to [/turtle1/pose]
+      1.51 KB/s from 62 messages
+          Message size mean: 0.02 KB min: 0.02 KB max: 0.02 KB
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
user: login: christophebedard
body: ```suggestion
    $ ros2 topic bw /turtle1/pose
    Subscribed to [/turtle1/pose]
    1.51 KB/s from 62 messages
        Message size mean: 0.02 KB min: 0.02 KB max: 0.02 KB
```
created_at: 2025-04-17T19:09:43Z
author_association: MEMBER
diff_hunk: @@ -311,9 +314,9 @@ c. **Using autocomplete**:
 
   The final autocompleted string will look like this:
 
-  .. code-block:: console
+  .. code-block:: bash
 
-    $ ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist
+    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist
     'linear:
path: source/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.rst
user: login: christophebedard
body: ```suggestion
    ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist 'linear:
```
created_at: 2025-04-17T21:15:28Z
author_association: MEMBER

PR comments:
user: login: Nils-ChristianIseke
created_at: 2025-04-16T17:25:38Z
body: @christophebedard i adapted Introducing-Turtlesim.rst. If we agree on those changes i can adjust the rest of the beginner cli tutorials in this pr.
author_association: CONTRIBUTOR
user: login: christophebedard
created_at: 2025-04-16T17:41:13Z
body: I just have some minor comments, but yes that's how it should look like!
author_association: MEMBER
user: login: Nils-ChristianIseke
created_at: 2025-04-16T20:02:12Z
body: @christophebedard I will push some stuff, but will check the build docs later. Will ping you as soon as its ready to review.
author_association: CONTRIBUTOR
user: login: fujitatomoya
created_at: 2025-04-16T20:18:45Z
body: @Nils-ChristianIseke thanks for fixing this, just FYI github action is green.
author_association: COLLABORATOR
user: login: Nils-ChristianIseke
created_at: 2025-04-17T13:36:24Z
body: @christophebedard you can have a look now. 


Maybe we should consider streamlining the contribution docs as they currently allow either using $ or omitting $ for consoles that only contain commands, and I think consistency would be nice :).
author_association: CONTRIBUTOR
user: login: Nils-ChristianIseke
created_at: 2025-04-17T13:38:59Z
body: And somehow i had trouble to get make lint running locally (that is the reason for so many commits :D).
author_association: CONTRIBUTOR
user: login: christophebedard
created_at: 2025-04-17T16:54:28Z
body: Thanks for the new changes. There are a lot of them, so it will take me a bit of time to review it all.

> If I put myself in the position I was in a few years ago when I was learning ros without any programming experience, I would have been quite confused by the copying behavior. I can well imagine that I would have copied the entire contents of the console boxes and then wondered about error messages (by selecting the content of the console boxes with the mouse).
Even though I find the approach with one console for command and output and with $ for commands visually more appealing, I wonder if the other approach would not be more usable for beginners.

I think it's good to pick something that beginners would easily understand, but I also think it's not unreasonable to explain it (e.g., in one of the very first tutorials) and then just expect readers to know what it means. Do you think this would work?

> Anyway, maybe we should consider streamlining the contribution docs as they currently allow either using $ or omitting $ for consoles that only contain commands, and I think consistency would be nice :).

That's the goal! In fact, `console` code blocks that don't use `$` for command lines are wrong, so they should be fixed, like you're doing. See also this issue regarding the copy button not copying the right text: https://github.com/ros2/ros2_documentation/issues/5214#issuecomment-2781011172.

> And somehow i had trouble to get make lint running locally (that is the reason for so many commits :D).

Have you tried using a venv? https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Contributing-To-ROS-2-Documentation.html#building-the-site-locally
author_association: MEMBER
user: login: Nils-ChristianIseke
created_at: 2025-04-17T17:25:14Z
body: > I think it's good to pick something that beginners would easily understand, but I also think it's not unreasonable to explain it (e.g., in one of the very first tutorials) and then just expect readers to know what it means. Do you think this would work?
> 
Yes i think that would work. Was thinking the same that is why i removed my comment regarding this ;).

> That's the goal! In fact, `console` code blocks that don't use `$` for command lines are wrong, so they should be fixed, like you're doing. See also this issue regarding the copy button not copying the right text: [#5214 (comment)](https://github.com/ros2/ros2_documentation/issues/5214#issuecomment-2781011172).

Since i wanted to run through to the tutorials anyway as a refresher, i can fix this on the go for some of the tutorials.

> Have you tried using a venv? https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Contributing-To-ROS-2-Documentation.html#building-the-site-locally

Yes followed those steps but get a ModuleNotFoundError: No module named 'sphinxlint'. Haven't tried to troubleshoot this yet.

author_association: CONTRIBUTOR
user: login: christophebedard
created_at: 2025-04-17T21:33:16Z
body: > Since i wanted to run through to the tutorials anyway as a refresher, i can fix this on the go for some of the tutorials.

That would be great! Just please keep the PRs small (this one is OK), since that makes reviews easier!

> Yes followed those steps but get a ModuleNotFoundError: No module named 'sphinxlint'. Haven't tried to troubleshoot this yet.

Weird! That should be installed when you run `pip install -r requirements.txt -c constraints.txt` in the venv.
author_association: MEMBER