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

news2024/11/24 7:37:25

目录

  • 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 random

def 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.coloradmin.cn/o/589240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年高级系统架构设计师 如何备考?

高级架构有一定的难度,但是值得挑战一下 新版《系统架构设计师考试大纲》出版了! 可以去官网看看 系统架构设计师是软考的高级科目之一,系统架构设计师一年只有一次考试机会,是在下半年11月份考试 考试科目分为:综合…

Spring5 学习笔记

前置知识: 掌握Java基础知识(特别是反射)掌握Java注解掌握XML掌握Maven Spring5学习笔记 1、Spring概述1.1、简介1.2、优点1.3、组成1.4、拓展 2、IOC理论推导2.1、分析实现2.2、IOC本质 3、HelloSpring3.1、导入jar包3.2、编写代码3.3、思考…

KUC720AE01 3BHB003431R0001 基于浏览器的简单配置

实时自动化是工业通信领域的最高权威,拥有广泛的网关,可将最多产的工业协议连接到您的MicroLogix、KUC720AE01 3BHB003431R0001、CompactLogix、PLC-5和SLC 5/05 PLC,因此用户可以获得一个简单易用的连接解决方案来集成他们的各种设备。像所有…

黄金期货CFD会亏损吗?有哪些黄金期货CFD常见问题

差价合约(Contract For Difference,CFD)是一种热门的衍生性金融商品,CFD 可以在不实际持有资产的情况下,透过保证金方式来针对股市指数、外汇、贵金属、原物料等商品进行多、空任一方向之交易。投资者在选择黄金交易时,会遇到哪些…

数据结构(二)—— 链表(2)

文章目录 1 143 重排链表1.1 找到原链表的中点(「876. 链表的中间结点」)。2.2 将原链表的右半端反转(「206. 反转链表」)3.3 交叉合并两个链表(与「21. 合并两个有序链表」思路不同)3.4 补充 21 合并两个有…

JavaScript高级一、作用域解构箭头函数

零、文章目录 JavaScript高级一、作用域&解构&箭头函数 1、作用域 (1)局部作用域 局部作用域分为函数作用域和块作用域。 **函数作用域:**在函数内部声明的变量所在作用域。 函数内部声明的变量,在函数外部无法被访问…

项目冲突3大管理原则及管理模式

1、系统思考原则 此原则即从全局出发,追求全局最优。系统思考原则的关键在于能够从全局出发,发现冲突的“杠杆点”,即可引起结构上重要而持久改善的点。一旦找到最佳的杠杆点,我们便能以小而专注的行动,创造最大的效果…

笔试强训4

作者:爱塔居 专栏:笔试强训 作者简介:大三学生,希望和大家一起进步 目录 day4 day5 day4 1. 下列与队列结构有关联的是() A 函数的递归调用 B 数组元素的引用 C 多重循环的执行D 先到先服务的作业调度 对列…

数据表示(二进制、进制转换、补码计算)

目录 1.进制2.进制转换2.1 R进制转十进制2.2 十进制转R进制2.3 m进制转n进制方法1:十进制中转方法2:直接转化 3.进制计算3.1 机器数3.2 编码方式(原码、反码、补码、移码)3.3 表示范围定点整数定点小数 3.4 定点表示法 4.浮点数4.…

小破站有许多“高质量”东西,怀揣着“学习”的目的,我用Python将它们通通采集下来

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 事情是这样的,昨晚室友拉着我去他的电脑,说带我欣赏一点高雅的作品~ 于是这一坐下,便是一晚上… 作为一个乐于分享的博主,本来我是决定直接分享的, 但是转念一想&a…

MySQL锁详解

五.锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源CPU、 RAM、I/O的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲…

「实在RPA·零售数字员工」助力零售运营化”零“为整

零售行业是指以面向消费者销售商品和服务的行业,它涵盖了各种类型的商店、百货公司、超市、购物中心、电商平台等,是全球最大的行业之一,在经济增长中有着举足轻重的作用。随着科技的发展,消费者需求的变化以及运营成本的增长&…

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

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

终于拿下腾讯25K的offer,面试官问我的面试题+回答,他都听懵了...

前言 自动化测试面试题总结: 1、你会封装自动化测试框架吗? 这个问得最多,很多公司直接写在招聘要求中。 自动化框架主要的核心框架就是分层PO模式:分别为:基础封装层BasePage,PO页面对象层,T…

【移动计算技术(Android)】期末复习

目录 选择题 选择题知识点汇总 Activity Intent Broadcast BroadcastReceiver 如何自定义Receiver 如何注册接收器 Service SharedPreferences 三种访问模式 如何创建 如何存储/修改 如何读取 内部存储 openFileOutput openFileInput SD卡 资源文件 SQLite…

【学习笔记】Unity基础(七)【uGUI基础、利用render Texture实现小地图功能】

目录 一 Canvas1.1 三种Render Space渲染空间 screen1.2 canvas scaler画布缩放器1.3sprite1.4 sprite packer1.5 unity目录1.6 RuleTile Tilemap1.7 sprite packer1.8 sorting layer 二 rect transform2.1 pivot 中轴 中心点2.2 anchor 锚点2.3 uGUI源代码 三 EventSystem3.1 …

【paddlecls】多机多卡-linux

1. 安装docker(引擎): (https://docs.docker.com/engine/install/ubuntu/) Install Docker Engine on Ubuntu To get started with Docker Engine on Ubuntu, make sure you meet the prerequisites, and then follo…

助力工业物联网,工业大数据之工业大数据之油站维度设计【十四】

文章目录 01:油站维度设计02:油站维度构建 01:油站维度设计 目标:掌握油站维度的需求与设计 路径 step1:需求step2:设计 实施 需求:构建油站维度表,得到油站id、油站名称、油站所属…

北美机器人市场迎来销售放缓,未来路在何方?

原创 | 文 BFT机器人 引言 Introduction 北美机器人销售在2022年创下了历史记录,但在2023年第一季度放缓。据推进自动化协会(A3)提供的数据显示,2023年第一季度,北美公司仅订购了9,168台机器人,较2022年同…

C++进阶 —— map

目录 一,map介绍 类pair 函数模板make_pair 二,map使用 一,map介绍 map是关联容器,按照特定的次序存储元素(由键key和值value组合而成的);键key通常用于排序及唯一标识元素,而值…