[Linux] 关于路径

devtools/2025/2/11 0:04:58/

背景

在终端执行命令时,如何理解这件事?并且如何理解附加的一些参数?

回答

路径的概念

绝对路径与相对路径

  • 绝对路径(Absolute Path):以根目录 / 开始,完整地描述了从根目录到目标文件或目录的层次关系。例如:

    /home/user/project/file.txt
  • 相对路径(Relative Path):相对于当前工作目录(pwd 命令可查看)所写的路径。例如:./file.txt (表示当前目录下的 file.txt) ../file.txt (表示当前目录的上级目录下的 file.txt)

PATH环境变量

在 Linux 中,当你在终端直接输入命令(如 lsgrep 等)时,系统会根据环境变量PATH中列出的目录顺序去寻找对应的可执行文件。

  • 例如,PATH 中可能包含如下几个目录:./my_program 或 /home/user/my_program

参数的理解

当你执行一个命令时,除了命令本身,还可以后跟一些参数(也常被称为“选项”“标志”或“附加参数”)来改变或指定命令的行为。这些参数在命令行解析时通常分两类:

  1. 选项(Options 或 Flags):一般以 --- 开头,用于开启/关闭特定功能或指定某些模式。例如:

ls -l # 使用 -l (long) 模式输出 rm -rf # -r 表示递归删除,-f 表示强制删除 grep --color=auto
  1. 位置参数(Positional Arguments):往往不是以 - 开头,它们表示命令要处理的目标对象、文件路径或其他值。例如:

cp source_file target_file grep "pattern" filename

命令行解析流程大致是:

  • Shell(例如 bash、zsh 等)会先对输入的文本进行分词(区分空格、引用、转义等)。

  • 找到第一个令牌(token)时,作为可执行命令的名称,然后在 PATH 或当前目录(若指定 ./)下查找对应的可执行文件。

  • 其余令牌被视为对该命令的参数,并按照顺序传递给命令的主程序。

在终端执行命令的流程概述

  1. Shell 接收输入:你在终端键入命令并敲击回车,Shell 读取到这一行文本。

  2. Shell 解析命令:通过空格、引号、转义符等规则进行分词,将第一个分词视为“命令名称”,后面的分词视为“参数”。

  3. 查找可执行文件:Shell 会根据当前配置的 PATH 环境变量去查找是否有与“命令名称”匹配的可执行文件。

  • 如果找到了可执行文件,Shell 会加载并运行它,传入已解析的参数列表。

  • 如果没找到,则会报错 command not found

  1. 命令内部解析参数:不同命令有各自的参数处理逻辑,会根据你传入的选项或位置参数来执行相应的操作。

  2. 输出结果:命令完成后,如果有输出则返回到终端;如果发生错误则返回错误信息。

附加参数的作用

  • 短选项(-)与长选项(--):多数 Linux 命令都同时支持短选项和长选项。短选项通常是单个字母(例如 -l-h),长选项是可读性更好的文本(例如 --help--version)。

  • 参数组合:有些命令可以将短选项组合在一起使用,例如 ls -la 相当于 ls -l -a。但长选项必须分开写。

  • 参数值:长选项也可能需要附加值,比如 --color=auto--output=FILE


http://www.ppmy.cn/devtools/157770.html

相关文章

JavaScript 基础语法:变量、数据类型、运算符、条件语句、循环

JavaScript 是一种动态类型的脚本语言,广泛用于前端开发。以下是 JavaScript 基础语法的核心内容,包括变量、数据类型、运算符、条件语句和循环。 --- ### 1. 变量 变量用于存储数据。JavaScript 中有三种声明变量的方式: - **var**&…

轻量级服务器http-server

安装 sudo npm install http-server -g 运行 1. 直接去到要跑起来的目录,在终端输入 cd xxxx文件夹http-server //只输入http-server的话,更新了代码后,页面不会同步更新http-server -c-1 //同步更新页面http-server -a 127.0.0.1 -p 808…

Vue(7)

一.Vuex (1)概述 1.是什么 vuex是一个vue的状态管理工具,状态就是数据,可以帮助管理vue通用的数据(多组件共享的数据) 2.场景 ①某个状态在很多个组件来使用(个人信息) ②多个组…

CSS 相关知识

1、高度已知&#xff0c;三栏布局&#xff0c;左右宽度 200&#xff0c;中间自适应&#xff0c;如何实现&#xff1f; <body><div class"box"><div class"box1">高度已知</div><div class"box2">左右宽度 200&…

Redis 事务的介绍

1. Redis 事务介绍 Redis 的事务和 MySQL 的事务概念上是类似的&#xff0c;不过也有一定区别&#xff1a; 弱化的原子性&#xff1a;Redis 没有 “回滚机制”&#xff0c;只能批量执行操作&#xff0c;但如果其中一个操作失败&#xff0c;不会恢复到初始状态。不保证一致性&a…

构建高效Facebook广告矩阵:精准营销与广告投放的全新策略

随着社交媒体广告成为企业营销不可或缺的一部分&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;已成为企业营销的重要阵地。在Facebook上成功的广告投放&#xff0c;往往不只是依赖于单一广告&#xff0c;而是通过构建一个精准的广告矩阵来提升品牌曝光、增强用户…

Rust 核心语法总结

一、Rust 核心语法总结 1. 基础语法 变量绑定 let x = 5; // 不可变绑定 let mut y = 10; // 可变绑定数据类型 标量类型:i32, u32, f64, bool, char复合类型:元组 (i32, f64)、数组 [i32; 5]字符串:String(堆分配)、&str(切片)所有权系统 所有权规则…

基于RK3588/RK3576+FPGA的巡检机器人六自由度机械臂的系统设计

当今巡检机器人机械臂在管廊隧道等复杂环境的作业过程中&#xff0c;经常面临空间狭窄 且障碍物密集的问题&#xff0c;这就要求机械臂具备在狭窄空间进行避障路径规划的能力。此 外&#xff0c;一些不确定性因素如在突发或异常环境条件下&#xff0c;机械臂的全局状态信息感知…