Linux终端常用命令
一、基本语法
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
cd 是 change 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
rsync 比 scp 更适合反复同步代码。
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
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)