Linux && ROS常用命令

linux常用命令:

cat -n a.txt                                                                              在终端带行号显示a.txt中的内容
env                                                                                       查看系统环境变量
ps aux                                                                                    查看 Ubuntu 系统上的所有进程
ps aux | grep <进程名>                                                                    筛选特定的进程
tab                                                                                       某个文件或者目录的名字太长,按tab键进行补全
cd xxx                                                                                    转到某个目录
./                                                                                        当前目录
../                                                                                       上一级目录
~                                                                                         主目录
/                                                                                         根目录
pwd                                                                                       显示当前绝对路径
ls                                                                                        查看当前路径下的文件
ls -a                                                                                     查看当前路径下的文件+隐藏文件
ll                                                                                        查看当前路径下的文件+隐藏文件+时间和组信息
Ctrl + c                                                                                  终止当前节点
Ctrl + d                                                                                  关闭当前终端
Ctrl + h                                                                                  显示隐藏文件
Ctrl + l                                                                                  终端清屏,等价于clear命令
touch xxx.c                                                                               创建一个文件
rm xxx.c                                                                                  删除一个文件(不会进回收站的)
mkdir -p src/include                                                                      创建一个src/include路径,src已经存在就不再重复创建,直接在src中创建include
cp -r src/ 目标路径                                                                       递归(-r)复制文件及其子目录
rm -r src                                                                                 循环删除该文件夹以及子目录(不会进回收站的)
scp [email protected]:/home/root/dome.png /home/user/                                  //在一台虚拟机上拷贝另一台虚拟机的文件
chmod 777 xxx                                                                             所有用户都可以读取、写入和执行该文件或目录
tar -zcvf temp.tgz 123.txt 456.cpp                                                        把后面两个文件压缩到名为temp.tgz的文件中
tar -zcvf temp.tgz src/                                                                      压缩src这个目录
tar -zxvf temp.tgz                                                                        解压
top                                                                                       查看系统资源情况
gedit xxx.txt                                                                             用gedit打开这个文件
evince frames.pdf                                                                         使用evince打开这个pdf文件
git clone -b kinetic-devel https://github.com/rst-tu-dortmund/teb_local_planner.git       //clone不同版本的目标资源到本地
Ctrl+alt+t                                                                                打开终端
Ctrl+Shift+t                                                                              //同一个终端中新建一个标签
Ctrl+Shift+c                                                                              终端中复制
Ctrl+Shift+v                                                                              终端中粘贴
g++ -o executable main.cpp                                                                使用g++编译c/cpp文件生成可执行文件,可执行文件可以没有后缀名
./executable                                                                              执行这个可执行文件
//Terminator的快捷键
Ctrl+Shift+E                                                                              对窗口垂直分割
Ctrl+Shift+O                                                                              对窗口水平分割

//ldd 命令,查看动态库/可执行文件的依赖库 
进入到动态库所在的目录下,输入命令:ldd + 库名/可执行文件名   比如:ldd liblayer_robot.so
找到依赖的库的话,会显示库的名字,以及依赖库的所在路径,比如下面这样:
linux-gate.so.1 =>  (0x00f3d000)
libtest.so => not found
libc.so.6 => /lib/libc.so.6 (0x0087e000)
/lib/ld-linux.so.2 (0x00858000)
找不到的话,会显示依赖库的名字,然后接着显示,找不到该依赖库,比如:
libglog.so.0 => not found
//Ubuntu自带的软件(--version查看版本):
Python
Python3
gcc
g++
cmake

//自己用到需要安装的软件:
树状显示目录命令:tree                                                                       sudo apt-get install tree   
tree -L 2                                                                                   显示打开2层文件夹
版本控制器:git                                                                              sudo apt install git
远程ssh登录:                                                                                sudo apt install openssh-server
                                                                                            scp /home/user/dome.png [email protected]:/home/root/
远程桌面nomachine                                                                            需要自己准备安装包
Python的包管理器:pip或者pip3

//对比文件差异,示例:
diff main.c main1.c

/* locate(locate)命令用来查找文件或目录。locate命令要比find -name快得多,原因在于它不搜索具体目录,
而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动
创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate查找文件时,有时会找到已经被
删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,
可以在使用locate之前,先使用updatedb命令,手动更新数据库。  */
//比如:
sudo updatedb                                                                                 更新数据库
locate libnavigation_lib.so                                                                   查找某个文件
https://www.cnblogs.com/byx1024/p/12315225.html


find命令:

find . -name "*.action"   查找 . 当前目录下 -name 参数选项, "*.action" 以.action结尾的所有文件

ROS常用命令:

//如果是安装了full版本的ROS,是不需要再安装Gazebo的,检查自己是否安装了Gazebo的方法:
1)在搜索栏输入“Gazebo”查找;
2)通过命令行查找$ dpkg -l|grep gazebo,可以查找Gazebo是否已经安装,并且查看版本号,建议安装最新版本

//创建功能包命令
catkin_create_pkg test_urdf roscpp rospy std_msgs urdf xacro
需要先source一下那个.sh文件,使得环境变量生效,然后再执行相应的launch文件

//查看tf坐标系之间的关系:
rosrun tf view_frames                                                                           会保存一个坐标系之间的关系的pdf文件
evince frames.pdf                                                                               使用evince打开这个pdf文件

//rqt_plot的使用:


// ros机器人开发常用命令:
rosrun rqt_reconfigure rqt_reconfigure                                                          动态参数配置界面
rosrun rqt_tf_tree rqt_tf_tree                                                                  查看各个坐标系之间的关系
rqt_graph 或者  rosrun rqt_graph rqt_graph                                                      查看运行中的节点和消息的传递情况
rosrun rqt_plot rqt_plot                                                                        图表绘制

rosrun rqt_robot_steering rqt_robot_steering                                                    拖动的方式控制机器人移动或者转向
rosrun rqt_top rqt_top                                                                          监控ros系统运行软件的资源占用情况
rosrun rqt_topic rqt_topic                                                                      显示ros系统中所有的topic

//节点、话题、服务、参数、消息、action,这几个的用法一致
//显示某个话题消息的消息格式:
rosmsg show nav_msgs/OccupancyGrid

//ros中向某个话题发送消息:(不知道消息类型的可以通过tab键自动补全)
//格式: rostopic pub /主题名称 消息类型 消息内容
         rostopic pub /localization_write_log std_msgs/Int8 "data: 1"
//以10Hz的频率循环向/turtle1/cmd_vel发送速度消息
//小海龟为例:启动方法:
    roscore
    rosrun turtlesim turtlesim_node
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 3.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 2.0"

//查看某一个topic的数据:
rostopic echo /cmd_vel
rostopic echo /robot_pose
rostopic echo /odom

//查看某个话题header部分的后几行数据:  A12:代表查看后12行数据
rostopic echo /scan | grep header -A12


//1.监控两个坐标系之间的tf关系的终端命令
rosrun tf tf_monitor /map /base_link

//2.把特定的坐标系之间的平移旋转关系,打印到终端控制台
rosrun tf tf_echo /map /base_link

//3.可以输出当前的tf关系到pdf中,home目录中得到一个 frames.pdf 和 frames.gv
rosrun tf view_frames

//4.帮助你找到tf中的错误
roswtf

"static_transform_publisher, 最重要的命令,既可以在命令行使用,也可以在launch文件使用,并且经常在launch文件中使用"

//1.发布一个父坐标系到子坐标系的静态tf转换,偏移x/y/z (单位是m),旋转是欧拉角 yaw/pitch/roll (单位是弧度 rad),这里 yaw是关于Z轴的旋转,pitch是关于关于Y轴的旋转,roll是关于X轴的旋转。这里的周期period_in_ms,是这个tf的发布周期,设置为100ms(也就是10hz)是一个很好的值。

//终端
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
//launch文件

    


//2.发布一个父坐标系到子坐标系的静态tf转换,偏移x/y/z (单位是m),旋转是四元数 qx qy qz qw ,这里的周期period_in_ms,是这个tf的发布周期,设置为100ms(也就是10hz)是一个很好的值
//终端
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id  period_in_ms
//launch文件

    



//echo 用于输出文本
echo + 要输出的文本

echo "hello world"  在终端输出这个字符串
echo "hello world" > a.txt 把这个字符串重定向到a.txt中
echo "hello world" >> a.txt 把这个字符串追加到a.txt中

你可能感兴趣的:(Linux编译,ROS,linux,elasticsearch,运维)