avatar
文章
17
标签
26
分类
7
Home
about
tags
categories
RL-learning
photos
LogoAttic的博客温和地走进GNU/Linux 终端 返回首页
搜索
Home
about
tags
categories
RL-learning
photos

温和地走进GNU/Linux 终端

发表于2026-04-15|更新于2026-04-15
|浏览量:

在使用各种AI工具的时候我们会发现AI总是会积极地使用命令行工具,那么这些命令行工具是如何给AI提高效率的,又是如何使用的,接下来跟随豹哥的脚步一探究竟。

ctrl+alt+t

这是打开终端的快捷键,所有的操作都将在此完成。

通常最常用的命令应该是ls,用于查看当前目录下有什么文件/文件夹。

实际上ls是一个可执行程序,ls这个可执行程序的位置可以通过。

1
which ls

来查看

1
2
li@li-MS-7C94:~$ which ls
/usr/bin/ls

实际上which也是一个可执行程序,也可以用which来查看他的位置。

1
2
li@li-MS-7C94:~$ which which
/usr/bin/which

这些可执行程序都在/usr/bin/目录下,为什么我们的程序能找到这个目录下的程序呢。

因为我们的终端环境变量里写入了/usr/bin这个路径。

我们可以直接输入下面的命令来查看PATH里到底写了什么。

1
echo $PATH

你会看到一长串路径,它们之间通常用:分隔,例如:

1
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin

终端在执行命令时,会按照这些路径从左到右依次查找。

也就是说,当我们输入ls时,shell并不是“凭空知道”ls在哪里,而是会去这些目录里找有没有叫做ls的可执行程序。

所以我们也可以把终端理解成一个“帮我们找程序并运行程序”的入口。

我们的环境变量其实是可以修改的,例如我用的是bash shell环境变量就在主目录下的.bashrc文件里面。

使用以下命令你可以知道我们的bashrc文件里有哪些环境变量。

1
cat ~/.bashrc | grep "PATH"
1
2
3
4
5
6
7
8
9
10
li@li-MS-7C94:~$ cat ~/.bashrc | grep "PATH"
export PATH="/home/li/miniconda3/bin:$PATH"
export PATH=/usr/local/cuda-12.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH
export PATH="/home/li/Documents/nvim-linux-x86_64/bin:$PATH"
export PATH=$LLVM_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$LLVM_ROOT/lib:$LD_LIBRARY_PATH
export PATH=/home/li/.opencode/bin:$PATH
export PATH="$BUN_INSTALL/bin:$PATH"

这里的写法很有规律,例如:

1
export PATH=/home/li/.opencode/bin:$PATH

它的意思是把/home/li/.opencode/bin加到PATH最前面,同时把原来的PATH也保留下来。

这样一来,终端在查找命令的时候,就会优先去新的路径里找程序,再去后面的路径里继续查找。

当你安装了一些不在/usr/bin里的工具时,通常就需要用这种方式把它们加入环境变量。

如果你修改了.bashrc,可以执行下面这条命令让配置立刻生效:

1
source ~/.bashrc

终端命令的一个强大之处,就是它们往往可以组合使用。

例如刚才这条命令:

1
cat ~/.bashrc | grep "PATH"

这里的cat负责读取.bashrc文件的内容,grep负责从这些内容里筛选出包含PATH的行,中间的|叫做管道符,它会把前一个命令的输出交给后一个命令继续处理。

也可以用ls来组合使用

例如下面的命令就是在该目录下寻找含D的文件夹或文件

1
ls | grep D
1
2
3
4
5
6
7
8
li@li-MS-7C94:~$ ls | grep D
DeepRL
Desktop
Documents
Downloads
Livox-SDK2
Micro-XRCE-DDS-Agent

先学会在目录之间移动

在终端里工作时,一个很重要的问题是:我现在到底在哪个目录?

这时候可以使用pwd命令:

1
pwd

它会输出你当前所在的路径,例如:

1
/home/li

如果你想切换到别的目录,可以使用cd命令,例如:

1
cd Documents

如果想回到自己的主目录,可以直接输入:

1
cd ~

学会pwd和cd之后,你就真正具备了在终端里“移动”的能力。

查看文件内容

当我们进入某个目录之后,下一步往往就是看看文件里写了什么。

最直接的命令就是cat:

1
cat hello.txt

它会把文件内容直接输出到终端里。

如果文件很短,cat会很好用,但如果文件很长,一下子全部显示出来就不太方便看了。

这时候可以使用less:

1
less hello.txt

less会让你分页查看文件内容,可以慢慢往下翻,按q退出。

所以可以简单理解为:cat适合看短文件,less适合看长文件。

搜索文件和内容

当文件和目录越来越多时,光靠ls一个一个看就会比较慢,这时候就要学会搜索。

如果你想在文件内容里搜索某个关键词,可以使用grep:

1
grep "PATH" ~/.bashrc

这条命令会在.bashrc文件中查找包含PATH的行。

如果你想在当前目录下查找某个文件,可以使用find:

1
find . -name "hello.txt"

这里的.表示当前目录,-name表示按名字查找。

也就是说,grep更像是在“文件内容里找字”,而find更像是在“目录里面找文件”。

重定向

前面我们已经见过管道符|,它可以把一个命令的输出交给另一个命令继续处理。

除了把输出交给别的命令,我们也可以把输出直接写入文件,这就是重定向。

例如下面这条命令:

1
echo hello > hello.txt

它会把hello写入hello.txt文件中。

这里的>表示覆盖写入,如果文件原来有内容,那么旧内容会被替换掉。

如果你想在原有内容后面继续追加,可以使用>>:

1
echo world >> hello.txt

这样world就会被追加到文件后面,而不会覆盖前面的内容。

写完之后可以再用cat查看结果:

1
cat hello.txt

所以可以把它们简单理解为:

  • |:把输出交给下一个命令
  • >:把输出写入文件,并覆盖原内容
  • >>:把输出追加到文件后面

命令行如何使用

大部分命令行使用-h或者--help参数查看使用手册

1
2
3
4
5
6
7
8
9
10
11
12
li@li-MS-7C94:~$ ls --help
用法:ls [选项]... [文件]...
列出 <文件>(默认为当前目录)的信息。
如果既没有指定 -cftuvSUX 中任何一个,也没有指定 --sort,则按字母排序项目。

长选项的必选参数对于短选项也是必选的。
-a, --all 不要隐藏以 . 开头的项目
-A, --almost-all 列出除 . 及 .. 以外的所有项目
--author 与 -l 同时使用时,列出每个文件的作者
-b, --escape 以 C 风格的转义序列表示不可打印的字符
--block-size=大小 与 -l 同时使用时,将文件大小以此处给定的大小为
单位进行缩放;例如:“--block-size=M”;

你也可以通过我部署的网站查询GNU/Linux命令行手册

GNU/Linux命令在线查询

为什么AI喜欢命令行

现在我们可以回到最开始的问题:为什么AI工具总是喜欢使用命令行?

一个很重要的原因是,命令行足够直接。

查看文件、搜索内容、切换目录、运行程序,这些操作都可以用简短的命令完成,不需要一层一层地点开图形界面。

另一个原因是,命令行非常适合组合使用。

我们前面已经看到,cat、grep、find、ls这些工具都可以互相配合,一个命令负责读取内容,另一个命令负责筛选结果,这样处理问题会很快。

而且命令行操作是可以重复的。

同样一条命令,今天可以用,明天也可以继续用;人可以执行,AI也可以执行。这种可重复、可组合的特点,就是命令行在效率上非常有优势的原因。

所以对于AI来说,命令行并不神秘,它只是一个非常清晰、高效、适合自动化操作的工作入口。

小彩蛋

最后补充一个有意思的小知识:在GNU/Linux系统里,我们前面提到的很多常见命令,比如ls、cat、grep、find,其实都和GNU项目有关。

其中ls、cat这类工具通常来自GNU coreutils,grep来自GNU grep,find来自GNU findutils。

严格一点说,Linux更多指的是内核,而我们平时在终端里频繁使用的许多基础工具来自GNU项目,所以很多人会把整个系统称为GNU/Linux。

这也是为什么我的标题特地写成GNU/Linux,而不是简单写成Linux,也算是向伟大的自由软件致敬。
GNU

“自由软件基金会(FSF)是一个非盈利组织。我们的使命是在全球范围内促进计算机用户的自由。我们捍卫所有软件用户的权利。”

文章作者: Attic
文章链接: https://osaerialrobot.top/2026/04/15/linux-cli/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Attic的博客!
Linux
cover of previous post
上一篇
PX4固件编译
环境:ubuntu22.04 PX4:1.16硬件:NxtPX4 资料链接: https://github.com/HKUST-Aerial-Robotics/Nxt-FC.git 我选用的是港科大开源的NxtPX4 1234sudo apt install python3-pipsudo apt install gitpip3 install empy==3.3.4 # 固定empy版本为3.3.4 PX4环境配置下载PX4代码及其子模块 1git clone https://github.com/PX4/PX4-Autopilot.git --recursive 再次确认是否下载完全 123cd PX4-Autopilotgit submodule update --init –recursive 安装完成后可以查看飞控代码版本 12cd PX4-Autopilot/git describe --tags 我选择切换到了1.16稳定版来开发,这个根据自己的选择来选版本 123git fetch --tagsgit checkout v1.16.0git subm...
cover of next post
下一篇
ros2-px4联合仿真环境配置2(SITL)
ROS2话题与PX4消息队列通信在上一节的仿真示例中,px4程序和ros2通信是通过XRCE-DDS进行桥接的 XRCE-DDS可以将px4程序内部的uORB消息和ROS2的节点话题进行互相转换(如图所示,当然前提是用px4_msgs这个话题包提供的接口) 在转换的同时也会进行时间同步,即ROS2内部的时间与PX4的时间同步 可以通过以下操作来感受下桥接和同步的过程 123#启动编译好的px4 SITL程序cd PX4-Autopilot./build/px4_sitl_default/bin/px4 此时直接启动地面站可以控制无人机 1./QGroundControl-x86_64.AppImage 此时可以监视一下ros2 topic list可以发现没有px4的信息传过来 1watch -n 1 ros2 topic list # 每1s查看ros2 topic list 然后启动XRCE-DDS,就会看到PX4的话题出现了 12# 启动XRCE-DDSMicroXRCEAgent udp4 -p 8888 自定义PX4的话题通信传入传出PX4的话题可以在X...
相关推荐
cover
2026-04-16
PX4固件编译
环境:ubuntu22.04 PX4:1.16硬件:NxtPX4 资料链接: https://github.com/HKUST-Aerial-Robotics/Nxt-FC.git 我选用的是港科大开源的NxtPX4 1234sudo apt install python3-pipsudo apt install gitpip3 install empy==3.3.4 # 固定empy版本为3.3.4 PX4环境配置下载PX4代码及其子模块 1git clone https://github.com/PX4/PX4-Autopilot.git --recursive 再次确认是否下载完全 123cd PX4-Autopilotgit submodule update --init –recursive 安装完成后可以查看飞控代码版本 12cd PX4-Autopilot/git describe --tags 我选择切换到了1.16稳定版来开发,这个根据自己的选择来选版本 123git fetch --tagsgit checkout v1.16.0git subm...
avatar
Attic
帝都苦苦挣扎的PhD
文章
17
标签
26
分类
7
公告
机器人描述文件查看 学术会议查询
目录
  1. 1. 先学会在目录之间移动
  2. 2. 查看文件内容
  3. 3. 搜索文件和内容
  4. 4. 重定向
  5. 5. 命令行如何使用
  6. 6. 为什么AI喜欢命令行
  7. 7. 小彩蛋
最新文章
博客阅读指南2026-04-17
PX4固件编译
PX4固件编译2026-04-16
温和地走进GNU/Linux 终端
温和地走进GNU/Linux 终端2026-04-15
ros2-px4联合仿真环境配置1(SITL)
ros2-px4联合仿真环境配置1(SITL)2026-04-15
ros2-px4联合仿真环境配置2(SITL)
ros2-px4联合仿真环境配置2(SITL)2026-04-15
© 2025 - 2026 By Attic框架 Hexo 8.1.1|主题 Butterfly 5.5.3
赣ICP备2025057989号-1  |  京公网安备11011402054558号
搜索
数据加载中