一、基本语法

1. 命令的基本结构

Linux 命令通常长这样:

命令 [选项] [参数]

例如:

ls -l /home/nvidia

意思是:

ls        命令:列出文件
-l        选项:用详细格式显示
/home/nvidia 参数:要查看的目录

再比如:

cp test.py /home/nvidia/catkin_ws/src/

意思是:

cp        命令:复制
test.py   参数1:源文件
/home/nvidia/catkin_ws/src/  参数2:目标位置

2. 选项的写法

Linux 选项一般有两种:

短选项:-l
长选项:--help

例如:

ls -l
ls --help

多个短选项可以合并:

ls -a -l

可以写成:

ls -al

含义:

-a:显示隐藏文件
-l:详细显示

3. 查看命令帮助

你不知道一个命令怎么用时,可以用:

命令 --help

例如:

ls --help

也可以用:

man 命令

例如:

man ls

退出 man 页面按:

q

常用查帮助方式:

命令 --help  #查看这个命令的简短使用说明
man 命令     #查看这个命令的完整说明书
命令 -h      #查看帮助,但它不一定每个命令都支持

二、目录和路径命令

这是最基础的一类,主要用于进入目录、查看当前在哪、创建文件夹。

1. 查看当前目录:pwd

pwd

作用:显示你当前所在的位置。

例如输出:

/home/nvidia/catkin_ws

说明你现在在:

/home/nvidia/catkin_ws

2. 进入目录:cd

cdchange directory,意思是切换目录。

cd 目录路径

例如进入工作空间:

cd ~/catkin_ws

进入 src 文件夹:

cd ~/catkin_ws/src

返回上一级:

cd ..

返回用户主目录:

cd ~

或者直接:

cd    #等价于cd ~

返回上一次所在目录:

cd -

例如:

cd ~/catkin_ws/src
cd ..

原来在:

/home/nvidia/catkin_ws/src

执行 cd .. 后就到了:

/home/nvidia/catkin_ws

3. 查看目录内容:ls

ls

作用:查看当前目录里面有哪些文件和文件夹。

常用写法:

ls
ls -l
ls -a
ls -al
ls -lh

解释:

ls       普通查看
ls -l    详细查看
ls -a    显示隐藏文件
ls -al   详细显示所有文件,包括隐藏文件
ls -lh   以更容易看懂的方式显示文件大小

例如:

ls -al ~/.ros

意思是查看 .ros 隐藏文件夹里面的所有内容。


4. 创建文件夹:mkdir

mkdir 文件夹名

例如:

mkdir test

创建多级目录:

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. 创建文件:touch

touch 文件名

例如:

touch ~/catkin_ws/src/my_package/scripts/test_node.py

作用:创建一个空文件。

如果文件已经存在,touch 不会清空它,只会更新时间。


2. 复制文件或文件夹:cp

复制文件:

cp 源文件 目标位置

例如:

cp test.py ~/catkin_ws/src/

意思是把 test.py 复制到 ~/catkin_ws/src/ 里面。

复制并改名:

cp test.py test_backup.py

复制文件夹要加 -r

cp -r my_package ~/backup/

解释:

-r:递归复制,用于复制文件夹

3. 移动或重命名:mv

移动文件:

mv 文件名 目标目录

例如:

mv test.py ~/catkin_ws/src/

重命名文件:

mv old.py new.py

移动文件夹:

mv my_package ~/catkin_ws/src/

mv 不需要加 -r,文件和文件夹都可以移动。


4. 删除文件或文件夹:rm

删除文件:

rm test.py

删除文件夹:

rm -r my_package

强制删除:

rm -rf my_package

解释:

-r:递归删除文件夹
-f:强制删除,不询问

非常危险的命令:

sudo rm -rf /

这个意思是强制删除整个系统,千万不要执行。

你平时删除时建议先用:

ls 文件名

确认以后再:

rm 文件名

5. 查看文件内容

查看全部内容:cat

cat 文件名

例如:

cat package.xml

适合查看短文件。


分页查看:less

less 文件名

例如:

less CMakeLists.txt

操作:

上下方向键:滚动
空格:下一页
q:退出

查看前几行:head

head 文件名

查看前 20 行:

head -n 20 文件名

查看后几行:tail

tail 文件名

实时查看日志:

tail -f 文件名

例如:

tail -f ~/.ros/log/latest/rosout.log

-f 的意思是文件更新时,终端也跟着显示。


6. 编辑文件

常用编辑器有:

nano 文件名
gedit 文件名
vim 文件名

新手推荐:

nano test.py

nano 里面常用操作:

Ctrl + O:保存
Enter:确认文件名
Ctrl + X:退出

图形界面可以用:

gedit test.py

如果没有图形界面,就用:

nano test.py

四、查找、过滤、压缩和传输

这一类在调试 ROS、找文件、传 rosbag、传代码时特别常用。

1. 查找文件:find

基本语法:

find 查找范围 条件

按文件名查找:

find ~/catkin_ws -name "package.xml"

查找所有 .py 文件:

find ~/catkin_ws -name "*.py"

查找所有 launch 文件:

find ~/catkin_ws -name "*.launch"

解释:

~ /catkin_ws:查找范围
-name:按名字查找
"*.py":所有以 .py 结尾的文件

2. 搜索文件内容:grep

基本语法:

grep "关键词" 文件名

例如:

grep "cmd_vel" test.py

在整个文件夹里搜索:

grep -r "cmd_vel" ~/catkin_ws/src

解释:

-r:递归搜索文件夹

忽略大小写:

grep -i "error" log.txt

显示行号:

grep -n "error" log.txt

常用组合:

grep -rn "move_base" ~/catkin_ws/src

意思是:

在 ~/catkin_ws/src 中递归搜索 move_base,并显示行号

3. 管道:|

管道的作用是:把前一个命令的输出,交给后一个命令处理

例如:

rostopic list | grep cmd

意思是:

rostopic list:列出所有 ROS 话题
grep cmd:只筛选包含 cmd 的行

再比如:

ps aux | grep roscore

意思是:

ps aux:查看所有进程
grep roscore:筛选 roscore 相关进程

4. 压缩和解压

tar.gz 压缩

压缩文件夹:

tar -czvf backup.tar.gz my_package

解释:

-c:创建压缩包
-z:使用 gzip 压缩
-v:显示过程
-f:指定文件名

解压:

tar -xzvf backup.tar.gz

解压到指定目录:

tar -xzvf backup.tar.gz -C ~/catkin_ws/src/

zip 压缩

压缩文件夹:

zip -r backup.zip my_package

解压:

unzip backup.zip

5. 远程传输文件:scp

你的小车和笔记本在同一个局域网时,可以用 scp

从笔记本传到小车:

scp test.py nvidia@192.168.31.23:/home/nvidia/

意思是:

把 test.py 传到 IP 为 192.168.31.23 的小车 /home/nvidia/ 目录

从小车传回笔记本:

scp nvidia@192.168.31.23:/home/nvidia/test.bag ./

意思是:

把小车上的 test.bag 传到当前目录

复制文件夹:

scp -r my_package nvidia@192.168.31.23:/home/nvidia/catkin_ws/src/

6. 同步文件夹:rsync

rsyncscp 更适合反复同步代码。

rsync -av my_package/ nvidia@192.168.31.23:/home/nvidia/catkin_ws/src/my_package/

解释:

-a:保留文件属性
-v:显示同步过程

注意:

my_package/

/ 表示复制文件夹里面的内容。

my_package

不带 / 表示连这个文件夹本身一起复制。


五、权限、用户、进程和服务

这一类用于解决“没有权限”“程序卡住”“端口被占用”“roscore 已经运行”等问题。

1. 管理员权限:sudo

sudo 命令

例如:

sudo apt update

意思是用管理员权限更新软件源。

修改系统文件时经常需要 sudo

sudo nano /etc/hosts

注意:不要随便给删除命令加 sudo


2. 修改文件权限:chmod

查看权限:

ls -l

例如:

-rw-r--r-- 1 nvidia nvidia 1234 test.py

让 Python 文件可以执行:

chmod +x test.py

然后可以这样运行:

./test.py

常见写法:

chmod +x 文件名
chmod 755 文件名

755 大概可以理解为:

自己:可读、可写、可执行
别人:可读、可执行

ROS 里面 Python 节点经常需要:

chmod +x scripts/node.py

3. 修改文件所属用户:chown

sudo chown 用户名:用户名 文件名

例如:

sudo chown nvidia:nvidia test.py

修改整个文件夹:

sudo chown -R nvidia:nvidia ~/catkin_ws

解释:

-R:递归修改整个文件夹

如果你发现文件是 root 的,普通用户改不了,就可能需要 chown


4. 查看进程:ps

查看所有进程:

ps aux

筛选某个进程:

ps aux | grep roscore

例如:

ps aux | grep ros

可以查看有哪些 ROS 相关程序正在运行。


5. 杀死进程:kill

先查进程:

ps aux | grep roscore

假设看到进程号是 12345,杀掉它:

kill 12345

强制杀死:

kill -9 12345

杀死某个名字的进程:

pkill roscore

杀死所有 ROS 节点时常用:

killall -9 roscore
killall -9 rosmaster

或者:

pkill -f ros

这个会杀掉很多 ROS 相关进程,使用前要确认。


6. 查看系统服务:systemctl

查看服务状态:

systemctl status 服务名

例如查看 ssh:

systemctl status ssh

启动服务:

sudo systemctl start ssh

停止服务:

sudo systemctl stop ssh

重启服务:

sudo systemctl restart ssh

开机自启:

sudo systemctl enable ssh

取消开机自启:

sudo systemctl disable ssh

如果你要用 scp 或远程连接,小车上一般要有 ssh 服务。


六、网络、磁盘和软件安装

这一类对你的小车非常重要,因为你经常要查 IP、ping 小车、配置网络、装依赖。

1. 查看 IP 地址

常用:

ip addr

或者:

hostname -I

查看网卡:

ip link

你可能看到:

eth0      有线网卡
wlan0     无线网卡
lo        本机回环地址

例如:

ip addr show wlan0

查看无线网卡 IP。


2. 测试网络:ping

ping IP地址

例如:

ping 192.168.31.23

如果能一直返回:

64 bytes from 192.168.31.23

说明能连通。

停止按:

Ctrl + C

测试外网:

ping baidu.com

测试本机:

ping 127.0.0.1

3. 查看端口:ss

查看端口监听:

ss -tulnp

解释:

-t:TCP
-u:UDP
-l:监听中的端口
-n:显示数字端口
-p:显示进程

查看 11311 端口:

ss -tulnp | grep 11311

ROS Master 默认端口就是:

11311

4. SSH 远程登录

ssh 用户名@IP地址

例如:

ssh nvidia@192.168.31.23

意思是登录到这台小车。

退出远程终端:

exit

5. 查看磁盘空间

查看磁盘容量:

df -h

查看当前文件夹大小:

du -sh .

查看某个文件夹大小:

du -sh ~/catkin_ws

解释:

-h:人类容易看懂的格式,比如 GB、MB
-s:只显示总大小

查看当前目录下每个文件夹大小:

du -h --max-depth=1

rosbag 很容易占空间,可以用这个查:

du -sh ~/.ros
du -sh ~/outdoor_test_bag

6. 软件安装:apt

更新软件源:

sudo apt update

升级软件:

sudo apt upgrade

安装软件:

sudo apt install 软件名

例如:

sudo apt install openssh-server

删除软件:

sudo apt remove 软件名

搜索软件:

apt search 软件名

查看是否安装:

dpkg -l | grep 软件名

例如:

dpkg -l | grep ros-noetic

七、命令组合、高级符号和 ROS 常用命令

这一类是把前面的命令组合起来用,是 Linux 最核心的能力。

1. 重定向:>>>

把输出写入文件:

echo hello > test.txt

查看:

cat test.txt

结果:

hello

注意:

>

会覆盖原文件。

追加内容用:

echo world >> test.txt

>> 不会覆盖,会追加到文件末尾。


2. 后台运行:&

命令 &

例如:

roscore &

意思是让 roscore 在后台运行。

不过 ROS 调试时,新手不建议经常这样用,因为不容易看日志。


3. 顺序执行:;&&

不管前面成功失败,都执行后面:

cd ~/catkin_ws; catkin_make

前面成功了才执行后面:

cd ~/catkin_ws && catkin_make

推荐用 &&,因为如果 cd 失败,就不会继续编译。

例如:

cd ~/catkin_ws && source devel/setup.bash && roslaunch my_pkg test.launch

4. 通配符:*

* 表示任意内容。

查看所有 .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'

输出就是:

$HOME

6. 环境变量

查看环境变量:

echo $变量名

例如:

echo $HOME
echo $PATH
echo $ROS_MASTER_URI
echo $ROS_PACKAGE_PATH

临时设置变量:

export ROS_MASTER_URI=http://192.168.31.23:11311

设置本机 IP:

export ROS_IP=192.168.31.100

这些设置只对当前终端有效。想长期有效,一般写进:

~/.bashrc

然后执行:

source ~/.bashrc

7. source 的作用

source 的意思是:让当前终端加载某个脚本里面的环境配置。

ROS 里面最常见:

source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash

作用:

第一句:加载 ROS Noetic 基础环境
第二句:加载你自己的工作空间环境

如果不 source,可能会出现:

找不到功能包
找不到 roslaunch
找不到自定义消息

8. 常用 ROS 相关 Linux 命令

进入工作空间:

cd ~/catkin_ws

编译工作空间:

catkin_make

加载环境:

source devel/setup.bash

启动 roscore:

roscore

启动 launch 文件:

roslaunch 功能包名 launch文件名

例如:

roslaunch scout_bringup scout.launch

查看话题:

rostopic list

查看话题数据:

rostopic echo /cmd_vel

查看话题频率:

rostopic hz /fix

查看话题类型:

rostopic type /cmd_vel

查看节点:

rosnode list

查看节点信息:

rosnode info /节点名

查看 TF:

rosrun tf view_frames

录制 rosbag:

rosbag record -O test.bag /odom /imu/data /fix /tf /tf_static

播放 rosbag:

rosbag play test.bag

查看 bag 信息:

rosbag info test.bag
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐