在Linux设备上让程序在任意目录都能执行

news/2024/5/9 14:44:59/文章来源:https://blog.csdn.net/qq_53381910/article/details/130949982

目录

  • 0. 前言
  • 1. 编写代码
  • 2. 创建软链接
  • 3. 其他Linux文章

0. 前言

在Ubuntu上使用espidf中往往需要先设置环境变量,再执行export.sh,对环境装的乱七八糟的我造成了很大的不便我希望无论我在哪个目录,都能快速执行某个命令

我先是使用了编写bash脚本的方法,但是发现这个方法貌似行不通,必须通过手敲命令的方式才能正确进入环境.

于是我决定编写一个程序,让这个程序打印我需要的命令,然后我复制这些命令直接输入即可.
为了让这个程序可以在任意地方执行,我决定创建一个软链接并且把它添加到/usr/bin目录之下,这样我就在哪都能执行我的help程序。

你也可以将其他程序用相同的方式,为程序创建软链接让它在各个目录下可执行。

这里普及一下软硬链接:

在Linux系统中,软连接和硬连接两者都可以用来链接一个文件或者目录,它们可以让用户在使用时更加方便。

软连接是一种特殊的文件类型,它指向目标文件的路径。软连接可以链接不同的文件系统下的文件或目录,而硬连接只能链接同一文件系统下的文件。软联接在inode表中具有一个不同于原始文件的inode号和类型。由于软链接创建后只是一个快捷方式,因此若原始文件或目录被删除,软链接无法访问。

硬连接是指文件系统中的两个或多个目录对同一个文件的引用。硬连接只有在同一个文件系统(分区)中才能生效。这是因为系统把每个文件或目录都以文件节点的方式存储在所在的文件系统分区内,而不同分区的文件系统对应不同的节点池。如果原始文件或目录被删除,由于硬链接只是同一个文件系统中的一个节点,因此硬链接仍然可以访问到原始文件或目录。

创建软链接的命令为ln -s 原始文件 目标文件,其中-s代表创建软链接。

看完以上介绍,你有没有对它有更深刻的理解呢?

可以说软链接确实相当于快捷方式,因为它只是一个指向目标文件或目录的引用,实际上并没有数据存储在软链接中。因此,软链接也被称为符号链接。

硬链接相当于原始文件或目录的另一个入口点,即可以通过硬链接读取、修改或删除原始文件或目录的内容。实际上,硬链接和原始文件或目录是共享相同的数据块,它们指向同一个inode,换句话说,它们本质上是同一个文件或目录。我们可以将一个文件或目录创建多个硬链接,这些链接在操作上都是等效的。

因此,硬链接相当于原始文件或目录的另一个名称,在操作上和原始文件或目录没有本质区别,操作一个硬链接等同于操作原始文件或目录,这使得硬链接更为稳定、安全和可靠。

1. 编写代码

直接开干,以下是我设置esp-idf环境变量的过程:

cd ~/esp-gitee-tools
export EGT_PATH=$(pwd)
cd ~/esp-idf/
. ./export.sh
cd

过程看起来都十分繁琐,需要在目录间切换来切换去。
编写程序:

import randomdef print_color(text):num = random.randint(0,6)if num == 0:# 输出青色文本print("\033[96m{}\033[0m".format(text))elif num == 1:# 输出红色文本print("\033[91m{}\033[0m".format(text))elif num == 2: # 输出绿色文本print("\033[92m{}\033[0m".format(text))elif num == 3:# 输出黄色文本print("\033[93m{}\033[0m".format(text))elif num == 4: # 输出蓝色文本print("\033[94m{}\033[0m".format(text))elif num == 5: # 输出紫色文本print("\033[95m{}\033[0m".format(text))else:print(text)commands1 = """##############################
use this commands to fastly set esp-idf environment:
cd ~/esp-gitee-tools
export EGT_PATH=$(pwd)
cd ~/esp-idf/
. ./export.sh
cd"""commands2 = """##############################
use this commands to operate micropython:
cd ~/esp-gitee-tools
export EGT_PATH=$(pwd)
cd ~/esp-idf/
. ./export.sh
cd ~/Desktop/micropython"""commands3 = """##############################
use this commands to reload and init micropython:
cd 
git clone https://github.com/micropython/micropython --depth=1
cd micropython
make -C mpy-cross
git submodule init lib/berkeley-db-1.xx
git submodule update"""# commands
commands = [commands1,commands2,commands3]
for i in commands:print_color(i)print()

执行效果:

在这里插入图片描述

2. 创建软链接

编译为可执行程序,在dist/main目录之下,然后输入命令创建软链接:

注意!最后的idfhelp要改成自己需要的名字

ln -s ~/Desktop/PycharmProject/idfhelp/dist/main /usr/bin/idfhelp

创建之后不要删原来的代码,因为软链接是快捷方式。

然后切换到任意目录之下:

cd

然后执行idfhelp,可以看到执行了相应操作:

,keyi

我是需要快速进入idf虚拟环境的,所以我复制红色的字体,进入成功:
在这里插入图片描述

依照此步骤我添加了其他软链接,如博文爬虫:
在这里插入图片描述
需要注意的是,在创建软连接或硬链接时,应该确保源文件或目录在正确的位置和权限下,否则创建链接后可能会不能正常访问源文件或目录。同时,应该避免在循环调用中使用软链接,否则可能会导致死循环。

3. 其他Linux文章

还有以下解决 Linxu 小问题的相关文章
树莓派4B更换清华源
树莓派、香橙派等Linux设备修改登录密码
在Ubuntu22.04上安装QQ~Linux
Ubuntu下ESP-IDF的环境搭建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_308890.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试用例的设计以及分类

文章目录 测试用例设计1.测试用例2.设计测试用例的方法1) 等价类2) 边界值3) 判定表法4) 正交法5) 场景设计法6) 错误猜测法 3. 测试分类1) 按测试对象划分2) 按是否查看代码划分黑盒测试白盒测试灰盒测试为什么不直接使用灰盒测试常见的测试方法有哪些?哪些方法用的…

API接口的重要性和好处|附加淘宝api接口展示案例|商品数据采集演示

随着互联网的发展,API接口已经成为许多企业进行信息交流和数据管理的重要工具。通过API接口,企业之间能够快速、可靠地进行数据传输和信息共享,从而提高了企业的生产效率和服务质量。以下是API接口的重要性和好处的文章: 1.提高生…

智慧工厂~经典开源项目数字孪生智慧工厂——开源工程及源码

以领先的数字孪生技术为基础,全面打造智慧工厂。现有云南某大型汽车加工厂工程和源码免费赠送! 项目介绍 智慧工厂基于数字孪生技术创建了一个真实的三维模型场景。通过对传感器和机器的数据采集、分析处理,实时监控各生产环节,优…

软考A计划-试题模拟含答案解析-卷十三

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

何时加索引,性别字段和逻辑删除字段应不应该加

首先哪些地方加索引(按照sql执行顺序写) 1、from表扫描连接处索引 2、where后条件去走索引 3、group by加索引 4、select查询不用加 5、order by排序加索引 (对于第四点,覆盖索引:查询的字段都被索引覆盖,…

QT(QPainter画圆弧)

文章目录 前言一、QPainter画圆弧方法二、使用示例三、画一个彩色环总结 前言 本篇文章给大家介绍一下如何使用QPainter来画圆弧。 一、QPainter画圆弧方法 drawArc() 函数是 Qt 绘图类库中的一个函数,用于在画布上绘制圆弧。可以通过设置起点角度和圆弧弧度来控…

Flink从入门到精通之-12Flink CEP

Flink从入门到精通之-12Flink CEP 在 Flink 的学习过程中,从基本原理和核心层 DataStream API 到底层的处理函数、再到应用层的 Table API 和 SQL,我们已经掌握了 Flink 编程的各种手段,可以应对实际应用开发的各种需求了。 在大数据分析领域…

「从零入门推荐系统」19:HM推荐系统代码实战案例

作者 | gongyouliu 编辑 | gongyouliu 我们在上一章中利用Netflix prize数据集讲解了最基础、最简单的一些推荐系统召回、排序算法,大家应该对怎么基于Python实现推荐算法有了一些基本的了解了。接着上一章的思路,本章我们会基于一个更复杂、更近代一点的…

Android studio 环境安装

1. Java JDK安装 https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe 下载jdk-17 并安装 安装完成后设置环境变量 #新增环境变量JAVA_HOME C:\Program Files\Java\jdk-17#Path 环境变量添加 %JAVA_HOME%\bin %JAVA_HOME%\jdk\bin#新增环境变量CLASSPAT…

Zabbix从入门到精通以及案例实操系列

1、Zabbix入门 1.1、Zabbix概述 Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和…

JAVA开发(手工处理数据库表数据的一些示例算法)

背景: 在项目开发中,有时候需要手动处理一下数据库表的数据。涉及到数据得到备份、恢复,清洗,计算,合并等操作。 举例记录一下最近对数据的一些处理过程。 1、对数据表进行数据量统计 select count(*) from table…

python 自动编译VS项目

目录 一、python自动编译项目 1、环境变量 1) CMAKE 2)VS 2、CMAKE 生成VS项目 1) cmake 命令介绍 2)python 调用cmake 命令 3、devenv编译VS项目 1) devenv介绍 2)devenv命令行开关 3) 自动编译VS项目 一、python自动编译项目 …

玩转用户旅程地图

图:史江鸿 从事需求分析和产品设计工作已经有几个年头了,我很享受这个职业。因为在这段职业历程中,我学到了很多有意思的方法和工具,用户旅程地图就是其中一个。 如今在国内外许多IT公司,用户旅程地图已经成为需求分析…

100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 用…

软考高级架构师笔记-5计算机网络

目录 1. 前言 & 考情分析2. 网络功能和分类2.1 通信技术3. OSI七层模型及协议3. 1 局域网和广域网协议3. 2 协议3. 3 交换技术、路由、传输介质4 IP地址5 网络存储技术6 其它考点8. 结语1. 前言 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔…

喜讯!图扑荣获用友年度十佳产业融合生态伙伴称号

2023 年 4 月 20 日,由中华全国工商业联合会联合工业和信息化部、国务院国资委组织开展的 2023 年度“百场万企”大中小企业融通对接活动——智能制造 MES 产业融通对接会暨 2023 用友 BIP 技术大会 MES 生态创新专题论坛在用友产业园顺利召开。 用友年度生态合作伙…

STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程

iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。 开发板既有A7核&#xff…

一般测试用例执行过程的四个步骤

一般测试用例执行过程的四个步骤 测试用例的执行过程是软件测试中非常重要的一环,它可以有效验证软件是否符合预期的功能和性能要求,进而保证软件的质量和稳定性。一般来说,测试用例的执行过程可以分为四个步骤: 第一步&#xff1…

Unity之2D碰撞器

1、什么是碰撞器 碰撞器是用于在物理系统中 表示物体体积的的(形状或范围) 刚体通过得到碰撞器的范围信息进行计算 判断两个物体的范围是否接触 如果接触 刚体就会模拟力的效果产生速度和旋转 2、参数 Edit Collider:编辑碰撞器 Material…

Python十类常见异常类型(附捕获以及异常处理方式)

目录 前言十类异常1.TypeError2.ValueError3.NameError4.IndexError5.KeyError6.ZeroDivisionError7.IOError8.ImportError9.AttributeError10.KeyboardInterrupt 异常捕获以及处理总结 前言 大家好,我是辣条哥!今天给大家讲讲我们刚开始写代码是都会出现…