在此介绍一些Linux/Shell/Ros中常用的操作指令以及使用规范的示例
一些Linux中常用的操作指令以及使用规范的示例
- cd:切换当前工作目录。例如,进入用户主目录的命令为 cd ~ 或 cd。
- ls:列出当前目录下的文件和子目录。例如,列出当前目录下所有文件的命令为 ls。
- pwd:显示当前工作目录的路径。例如,显示当前工作目录的命令为 pwd。
- mkdir:创建一个新的目录。例如,创建一个名为 mydir 的目录的命令为 mkdir mydir。
- rm:删除一个文件或目录。例如,删除名为 myfile 的文件的命令为 rm myfile。
- cp:复制一个文件或目录。例如,将文件 myfile 复制到目录 mydir 的命令为 cp myfile mydir。
- mv:移动或重命名一个文件或目录。例如,将文件 myfile 移动到目录 mydir 的命令为 mv myfile mydir/ 或将文件 myfile 重命名为 newfile 的命令为 mv myfile newfile。
- cat:显示一个文件的内容。例如,显示文件 myfile 的内容的命令为 cat myfile。
- grep:在一个或多个文件中查找匹配的文本。例如,在文件 myfile 中查找包含字符串 “hello” 的行的命令为 grep “hello” myfile。
- chmod:更改一个文件或目录的权限。例如,将文件 myfile 的所有者权限设置为读、写、执行的命令为 chmod 700 myfile。
- chown:更改一个文件或目录的所有者。例如,将文件 myfile 的所有者设置为 user 的命令为 chown user myfile。
- ps:显示当前系统中运行的进程。例如,列出当前系统中所有进程的命令为 ps -ef。
- top:显示当前系统中的进程和系统资源的使用情况。例如,显示当前系统中进程和系统资源使用情况的命令为 top。
- apt-get(Ubuntu、Debian系统)/yum(CentOS、Red Hat系统):包管理器,用于安装、更新和卸载软件包。例如,安装名为 mypackage 的软件包的命令为 apt-get install mypackage(Ubuntu、Debian系统)或 yum install mypackage(CentOS、Red Hat系统)。
- tar:压缩和解压缩文件和目录。例如,将目录 mydir 压缩为 tar.gz 文件的命令为 tar -zcvf mydir.tar.gz mydir,解压缩 tar.gz 文件的命令为 tar -zxvf mydir.tar.gz。
- scp:通过网络将文件复制到远程主机。例如,将本地文件 myfile 复制到远程主机的 /tmp 目录的命令为 scp myfile remoteuser@remotehost:/tmp。
- ssh:通过网络连接到远程主机并执行命令。例如,连接到远程主机的命令为 ssh remoteuser@remotehost,执行远程命令的命令为 ssh remoteuser@remotehost ‘command’。
- find:在目录中查找文件。例如,在当前目录及其子目录中查找文件名为 myfile 的命令为 find . -name myfile。
- df:显示磁盘空间使用情况。例如,显示磁盘空间使用情况的命令为 df -h。
- du:显示目录或文件的大小。例如,显示目录 mydir 的大小的命令为 du -sh mydir。
- ping:测试网络连接。例如,测试是否可以到达主机的命令为 ping remotehost。
- ifconfig:显示网络接口的配置信息。例如,显示所有网络接口的配置信息的命令为 ifconfig -a。
- netstat:显示网络连接、路由、接口等信息。例如,列出所有网络连接的命令为 netstat -a。
- uname:显示系统信息。例如,显示系统名称、版本、架构等信息的命令为 uname -a。
- history:显示之前执行过的命令。例如,显示之前执行过的最近 10 条命令的命令为 history 10。
一些关于Shell脚本的知识
Shell编写是指使用Linux或其他Unix操作系统中的Shell脚本语言编写程序。Shell脚本是一种文本文件,其中包含一系列的命令,可以在终端中运行,自动化执行一些重复性的操作,提高工作效率。
在Linux终端中保存为以“.sh”为后缀的文件,并给予执行权限后运行,例如“./my_script.sh”。这些示例只是Shell编写的基础,实际上Shell编写可以实现更加复杂和实用的功能。
以下是Shell编写的基本知识:
- Shell脚本的命名:Shell脚本的文件名通常以“.sh”为后缀,例如“my_script.sh”。
- 脚本开头:脚本开头通常会指定脚本使用的Shell解释器,例如“#!/bin/bash”,表示使用Bash解释器。
- 注释:可以在脚本中使用注释来描述脚本的作用或者命令的用途。注释以“#”开头。
- 变量:变量用来存储数据或命令的输出结果,可以通过“=”赋值,例如“name=John”。在脚本中使用变量需要使用“$”符号,例如“echo $name”。
- 输入输出:可以使用“echo”命令输出内容到终端。可以使用“read”命令读取用户的输入,并将其存储到变量中。
- 控制流程:可以使用条件语句(if-then-else)、循环语句(for、while)等来实现控制流程。
- 函数:可以使用函数来封装一段代码,实现代码的复用。
- 调试:可以使用“set -x”开启调试模式,查看脚本执行的过程和结果。
- 执行权限:在运行脚本之前需要给脚本文件添加执行权限,例如“chmod +x my_script.sh”。
- 执行脚本:可以在终端中使用“./my_script.sh”执行脚本,也可以使用绝对路径执行脚本。
Shell编写是Linux系统管理、开发和维护过程中必不可少的技能之一,掌握Shell编写可以大大提高工作效率和自动化操作。
一些Ros系统的基本操作
ROS(Robot Operating System)是一种机器人操作系统,是一个用于构建机器人软件的框架。以下是ROS系统程序设计的基本操作:
创建ROS工作空间:在Linux终端中使用以下命令创建一个ROS工作空间:
mkdir -p catkin_ws/src
cd catkin_ws/
catkin_make
创建ROS程序包:在ROS工作空间的“src”目录中使用以下命令创建一个ROS程序包:
cd catkin_ws/src
catkin_create_pkg my_package roscpp std_msgs
其中,“my_package”为程序包的名称,“roscpp”和“std_msgs”为程序包的依赖项。
创建ROS节点:在ROS程序包的“src”目录中创建一个C++或Python文件作为ROS节点,例如:
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char **argv)
{
ros::init(argc, argv, "my_node");
ros::NodeHandle n;
ros::Publisher pub = n.advertise<std_msgs::String>("my_topic", 1000);
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
msg.data = "Hello ROS " + std::to_string(count);
ROS_INFO("%s", msg.data.c_str());
pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
count++;
}
return 0;
}
编译ROS程序包:在ROS工作空间中使用以下命令编译ROS程序包:
bashCopy codecd catkin_ws/
catkin_make
运行ROS节点:在终端中使用以下命令运行ROS节点:
Copy code
rosrun my_package my_node
其中,“my_package”为ROS程序包的名称,“my_node”为ROS节点的名称。
查看ROS节点状态:使用以下命令查看ROS节点状态:
Copy coderosnode list
rosnode info my_node
rosnode ping my_node
其中,“my_node”为ROS节点的名称。
发布和订阅ROS消息:在ROS节点中使用ROS发布者(Publisher)和订阅者(Subscriber)来发布和订阅ROS消息,例如:
cppCopy coderos::Publisher pub = n.advertise<std_msgs::String>("my_topic", 1000);
ros::Subscriber sub = n.subscribe("my_topic", 1000, myCallback);
其中,“my_topic”为ROS消息的主题(Topic)名称,1000为ROS消息队列的大小,“myCallback”为ROS消息的回调函数。
以上是ROS系统程序设计的基本操作,ROS还提供了许多工具和功能,例如ROS服务(Service)、ROS参数服务器(Parameter Server)和ROS包管理器(Package Manager)等,可以根据实际需要进行使用和学习。