
一、基本语法1. 命令的基本结构Linux 命令通常长这样命令[选项][参数]例如ls-l/home/nvidia意思是ls命令列出文件-l选项用详细格式显示 /home/nvidia 参数要查看的目录再比如cptest.py /home/nvidia/catkin_ws/src/意思是cp命令复制 test.py 参数1源文件 /home/nvidia/catkin_ws/src/ 参数2目标位置2. 选项的写法Linux 选项一般有两种短选项-l 长选项--help例如ls-lls--help多个短选项可以合并ls-a-l可以写成ls-al含义-a显示隐藏文件 -l详细显示3. 查看命令帮助你不知道一个命令怎么用时可以用命令--help例如ls--help也可以用man命令例如manls退出man页面按q常用查帮助方式命令--help#查看这个命令的简短使用说明man命令#查看这个命令的完整说明书命令-h#查看帮助但它不一定每个命令都支持二、目录和路径命令这是最基础的一类主要用于进入目录、查看当前在哪、创建文件夹。1. 查看当前目录pwdpwd作用显示你当前所在的位置。例如输出/home/nvidia/catkin_ws说明你现在在/home/nvidia/catkin_ws2. 进入目录cdcd是change directory意思是切换目录。cd目录路径例如进入工作空间cd~/catkin_ws进入src文件夹cd~/catkin_ws/src返回上一级cd..返回用户主目录cd~或者直接cd#等价于cd ~返回上一次所在目录cd-例如cd~/catkin_ws/srccd..原来在/home/nvidia/catkin_ws/src执行cd ..后就到了/home/nvidia/catkin_ws3. 查看目录内容lsls作用查看当前目录里面有哪些文件和文件夹。常用写法lsls-lls-als-alls-lh解释ls普通查看ls-l详细查看ls-a显示隐藏文件ls-al详细显示所有文件包括隐藏文件ls-lh以更容易看懂的方式显示文件大小例如ls-al~/.ros意思是查看.ros隐藏文件夹里面的所有内容。4. 创建文件夹mkdirmkdir文件夹名例如mkdirtest创建多级目录mkdir-p~/catkin_ws/src/my_package/scripts解释-p如果中间目录不存在就自动创建如果没有-p中间某个目录不存在时会报错。5. 常见路径符号符号含义例子/根目录/home/nvidia~当前用户主目录~/catkin_ws.当前目录./test.py..上一级目录cd ..-上一次目录cd -例如cd~/catkin_ws/src等价于cd/home/nvidia/catkin_ws/src前提是当前用户是nvidia。三、文件操作命令这一类用于创建、复制、移动、删除、查看文件。1. 创建文件touchtouch文件名例如touch~/catkin_ws/src/my_package/scripts/test_node.py作用创建一个空文件。如果文件已经存在touch不会清空它只会更新时间。2. 复制文件或文件夹cp复制文件cp源文件 目标位置例如cptest.py ~/catkin_ws/src/意思是把test.py复制到~/catkin_ws/src/里面。复制并改名cptest.py test_backup.py复制文件夹要加-rcp-rmy_package ~/backup/解释-r递归复制用于复制文件夹3. 移动或重命名mv移动文件mv文件名 目标目录例如mvtest.py ~/catkin_ws/src/重命名文件mvold.py new.py移动文件夹mvmy_package ~/catkin_ws/src/mv不需要加-r文件和文件夹都可以移动。4. 删除文件或文件夹rm删除文件rmtest.py删除文件夹rm-rmy_package强制删除rm-rfmy_package解释-r递归删除文件夹 -f强制删除不询问非常危险的命令sudorm-rf/这个意思是强制删除整个系统千万不要执行。你平时删除时建议先用ls文件名确认以后再rm文件名5. 查看文件内容查看全部内容catcat文件名例如catpackage.xml适合查看短文件。分页查看lessless文件名例如lessCMakeLists.txt操作上下方向键滚动 空格下一页 q退出查看前几行headhead文件名查看前 20 行head-n20文件名查看后几行tailtail文件名实时查看日志tail-f文件名例如tail-f~/.ros/log/latest/rosout.log-f的意思是文件更新时终端也跟着显示。6. 编辑文件常用编辑器有nano文件名 gedit 文件名vim文件名新手推荐nanotest.pynano 里面常用操作Ctrl O保存 Enter确认文件名 Ctrl X退出图形界面可以用gedit test.py如果没有图形界面就用nanotest.py四、查找、过滤、压缩和传输这一类在调试 ROS、找文件、传 rosbag、传代码时特别常用。1. 查找文件find基本语法find查找范围 条件按文件名查找find~/catkin_ws-namepackage.xml查找所有.py文件find~/catkin_ws-name*.py查找所有 launch 文件find~/catkin_ws-name*.launch解释~ /catkin_ws查找范围 -name按名字查找*.py所有以 .py 结尾的文件2. 搜索文件内容grep基本语法grep关键词文件名例如grepcmd_veltest.py在整个文件夹里搜索grep-rcmd_vel~/catkin_ws/src解释-r递归搜索文件夹忽略大小写grep-ierrorlog.txt显示行号grep-nerrorlog.txt常用组合grep-rnmove_base~/catkin_ws/src意思是在 ~/catkin_ws/src 中递归搜索 move_base并显示行号3. 管道|管道的作用是把前一个命令的输出交给后一个命令处理。例如rostopic list|grepcmd意思是rostopic list列出所有 ROS 话题grepcmd只筛选包含 cmd 的行再比如psaux|greproscore意思是psaux查看所有进程greproscore筛选 roscore 相关进程4. 压缩和解压tar.gz 压缩压缩文件夹tar-czvfbackup.tar.gz my_package解释-c创建压缩包 -z使用gzip压缩 -v显示过程 -f指定文件名解压tar-xzvfbackup.tar.gz解压到指定目录tar-xzvfbackup.tar.gz-C~/catkin_ws/src/zip 压缩压缩文件夹zip-rbackup.zip my_package解压unzipbackup.zip5. 远程传输文件scp你的小车和笔记本在同一个局域网时可以用scp。从笔记本传到小车scptest.py nvidia192.168.31.23:/home/nvidia/意思是把 test.py 传到 IP 为192.168.31.23 的小车 /home/nvidia/ 目录从小车传回笔记本scpnvidia192.168.31.23:/home/nvidia/test.bag ./意思是把小车上的 test.bag 传到当前目录复制文件夹scp-rmy_package nvidia192.168.31.23:/home/nvidia/catkin_ws/src/6. 同步文件夹rsyncrsync比scp更适合反复同步代码。rsync-avmy_package/ nvidia192.168.31.23:/home/nvidia/catkin_ws/src/my_package/解释-a保留文件属性 -v显示同步过程注意my_package/带/表示复制文件夹里面的内容。my_package不带/表示连这个文件夹本身一起复制。五、权限、用户、进程和服务这一类用于解决“没有权限”“程序卡住”“端口被占用”“roscore 已经运行”等问题。1. 管理员权限sudosudo命令例如sudoaptupdate意思是用管理员权限更新软件源。修改系统文件时经常需要sudosudonano/etc/hosts注意不要随便给删除命令加sudo。2. 修改文件权限chmod查看权限ls-l例如-rw-r--r--1nvidia nvidia1234test.py让 Python 文件可以执行chmodx test.py然后可以这样运行./test.py常见写法chmodx 文件名chmod755文件名755大概可以理解为自己可读、可写、可执行 别人可读、可执行ROS 里面 Python 节点经常需要chmodx scripts/node.py3. 修改文件所属用户chownsudochown用户名:用户名 文件名例如sudochownnvidia:nvidia test.py修改整个文件夹sudochown-Rnvidia:nvidia ~/catkin_ws解释-R递归修改整个文件夹如果你发现文件是root的普通用户改不了就可能需要chown。4. 查看进程ps查看所有进程psaux筛选某个进程psaux|greproscore例如psaux|grepros可以查看有哪些 ROS 相关程序正在运行。5. 杀死进程kill先查进程psaux|greproscore假设看到进程号是12345杀掉它kill12345强制杀死kill-912345杀死某个名字的进程pkillroscore杀死所有 ROS 节点时常用killall-9roscorekillall-9rosmaster或者pkill-fros这个会杀掉很多 ROS 相关进程使用前要确认。6. 查看系统服务systemctl查看服务状态systemctl status 服务名例如查看 sshsystemctl statusssh启动服务sudosystemctl startssh停止服务sudosystemctl stopssh重启服务sudosystemctl restartssh开机自启sudosystemctlenablessh取消开机自启sudosystemctl disablessh如果你要用scp或远程连接小车上一般要有 ssh 服务。六、网络、磁盘和软件安装这一类对你的小车非常重要因为你经常要查 IP、ping 小车、配置网络、装依赖。1. 查看 IP 地址常用ipaddr或者hostname-I查看网卡iplink你可能看到eth0 有线网卡 wlan0 无线网卡 lo 本机回环地址例如ipaddr show wlan0查看无线网卡 IP。2. 测试网络pingpingIP地址例如ping192.168.31.23如果能一直返回64bytes from192.168.31.23说明能连通。停止按Ctrl C测试外网pingbaidu.com测试本机ping127.0.0.13. 查看端口ss查看端口监听ss-tulnp解释-tTCP -uUDP -l监听中的端口 -n显示数字端口 -p显示进程查看 11311 端口ss-tulnp|grep11311ROS Master 默认端口就是113114. SSH 远程登录ssh用户名IP地址例如sshnvidia192.168.31.23意思是登录到这台小车。退出远程终端exit5. 查看磁盘空间查看磁盘容量df-h查看当前文件夹大小du-sh.查看某个文件夹大小du-sh~/catkin_ws解释-h人类容易看懂的格式比如 GB、MB -s只显示总大小查看当前目录下每个文件夹大小du-h--max-depth1rosbag 很容易占空间可以用这个查du-sh~/.rosdu-sh~/outdoor_test_bag6. 软件安装apt更新软件源sudoaptupdate升级软件sudoaptupgrade安装软件sudoaptinstall软件名例如sudoaptinstallopenssh-server删除软件sudoaptremove 软件名搜索软件aptsearch 软件名查看是否安装dpkg-l|grep软件名例如dpkg-l|grepros-noetic七、命令组合、高级符号和 ROS 常用命令这一类是把前面的命令组合起来用是 Linux 最核心的能力。1. 重定向和把输出写入文件echohellotest.txt查看cattest.txt结果hello注意会覆盖原文件。追加内容用echoworldtest.txt不会覆盖会追加到文件末尾。2. 后台运行命令例如roscore意思是让roscore在后台运行。不过 ROS 调试时新手不建议经常这样用因为不容易看日志。3. 顺序执行;、不管前面成功失败都执行后面cd~/catkin_ws;catkin_make前面成功了才执行后面cd~/catkin_wscatkin_make推荐用因为如果cd失败就不会继续编译。例如cd~/catkin_wssourcedevel/setup.bashroslaunch my_pkg test.launch4. 通配符**表示任意内容。查看所有.py文件ls*.py删除所有.bag文件rm*.bag查找所有 launch 文件find~/catkin_ws/src-name*.launch注意rm*.bag会删除当前目录下所有.bag文件执行前最好先ls*.bag确认一下。5. 引号的区别双引号echo$HOME会解析变量。单引号echo$HOME不会解析变量。例如echo$HOME输出可能是/home/nvidia而echo$HOME输出就是$HOME6. 环境变量查看环境变量echo$变量名例如echo$HOMEecho$PATHecho$ROS_MASTER_URIecho$ROS_PACKAGE_PATH临时设置变量exportROS_MASTER_URIhttp://192.168.31.23:11311设置本机 IPexportROS_IP192.168.31.100这些设置只对当前终端有效。想长期有效一般写进~/.bashrc然后执行source~/.bashrc7.source的作用source的意思是让当前终端加载某个脚本里面的环境配置。ROS 里面最常见source/opt/ros/noetic/setup.bashsource~/catkin_ws/devel/setup.bash作用第一句加载 ROS Noetic 基础环境 第二句加载你自己的工作空间环境如果不 source可能会出现找不到功能包 找不到 roslaunch 找不到自定义消息8. 常用 ROS 相关 Linux 命令进入工作空间cd~/catkin_ws编译工作空间catkin_make加载环境sourcedevel/setup.bash启动 roscoreroscore启动 launch 文件roslaunch 功能包名 launch文件名例如roslaunch scout_bringup scout.launch查看话题rostopic list查看话题数据rostopicecho/cmd_vel查看话题频率rostopic hz /fix查看话题类型rostopictype/cmd_vel查看节点rosnode list查看节点信息rosnode info /节点名查看 TFrosrun tf view_frames录制 rosbagrosbag record-Otest.bag /odom /imu/data /fix /tf /tf_static播放 rosbagrosbag play test.bag查看 bag 信息rosbag info test.bag