Linux-编写一个自己的命令

2023-11-06

前言

(1)在Linux中,我们对文件路径进行操作都需要输入命令。那么,有人可能就会有疑惑了,命令是什么东西?我们是否也可以创造出自己的命令呢?答案是可以的。 命令本身其实就是可执行文件。但是 与普通的可执行文件的不同之处在于,命令的可执行文件必须在PATH变量中。(这个后面会介绍)
(2)学习这一章时候,需要先学习 Linux入门操作指令介绍(配合Windows理解)Linux_vim编辑器入门级详细教程
(3)这一章会 先介绍环境变量的修改,然后 再编写一个自己的命令
(4)相关视频教程: Linux环境变量讲解Linux编写第一个自己的命令

什么是环境变量

(1)概念:环境变量是系统预设值的参数。 Linux 是一个 多用户的操作系统( 比如有普通用户和root用户), 所以 每一个用户也都有自己的环境变量。 举例: 比如我们之前学习的命令不管在哪个路径下输入, 都是可以执行成功的( 比如ls命令,无论是在home路径下还是Desktop路径下都可以执行), 因为系统已经把命令的搜索路径提前设置好了。
注意:概念部分看看不懂没关系,留个印象。
(2) 常用变量 PATH 决定了要去哪个路径下去寻找我们的程序或者命令, 在以后的开发过程中, 我们要经常修改这个变量。

echo指令

(1)功能:将输入的参数打印出来
(2)如果我们写入 echo $PATH即可将PATH变量的参数打印出来。(也就是说,指令的可执行文件存放在这些路径中)

修改环境变量

临时修改

(1)命令格式: export 变量=新增的变量值: $变量
例如现在我想将桌面设置为新曾环境变量,输入: export PATH=/home/book/Desktop/:$PATH
(2)临时改变表示如果我们现在关闭终端,再重新打开终端,新增的变量将会消失。

永久修改

(1)vi .bashrc--->再文件最后一行加入 export PATH=/home/book/Desktop/:$PATH--->:wq保存退出--->source .bashrc
(2)如果想取消修改,vi .bashrc--->删除 export PATH=/home/book/Desktop/:$PATH--->:wq保存退出--->source .bashrc--->关闭终端然后重新打开

每一个用户也都有自己的环境变量

上面说了,每一个用户都有自己的环境变量。此时我们在book用户下更改了环境变量,在root环境下就没有。

在Linux中编写第一个自己的命令

编写一个可执行程序

首先用vim编辑器写一个.c文件,然后用gcc编译

命令与普通的可执行文件的区别

上面说了,Linux中的命令其实就是可执行文件。只不过这些命令与普通的可执行文件的区别在于,命令可以在任何目录下执行,而普通的可执行文件只能在当前目录下执行。

将普通可执行文件变成命令

方法一

变为命令
首先我们需要查看PATH中有哪些变量--->然后将普通的可执行文件复制到PATH中的一个路径里面
删除命令
这个时候,可能有人又不想要这个命令了。只需要找到这个可执行文件存放的目录,然后将其删除即可。

方法二

我们可以将存放普通可执行文件的路径,加入到PATH变量中。因为是用于演示,所以我使用临时将当前目录加入PATH变量中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux-编写一个自己的命令 的相关文章

  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 测试linux下磁盘空间不足

    我有一个程序 当写入某个文件的磁盘空间不足时 该程序可能会死掉 我不确定是否是这种情况 我想运行它并查看 但我的测试服务器不会很快耗尽空间 有什么办法可以嘲笑这种行为吗 看起来没有任何方法可以在 Ubuntu 中设置文件夹 文件大小限制 并
  • 变量作为 bash 数组索引?

    bin bash set x array counter 0 array value 1 array 0 0 0 for number in array do array array counter array value array co
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • 使用netcat将unix套接字传输到tcp套接字

    我正在尝试使用以下命令将 unix 套接字公开为 tcp 套接字 nc lkv 44444 nc Uv var run docker sock 当我尝试访问时localhost 44444 containers json从浏览器中 它不会加
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • Linux 中的电源管理通知

    在基于 Linux 的系统中 我们可以使用哪些方法 最简单的方法 来获取电源状态更改的通知 例如 当计算机进入睡眠 休眠状态等时 我需要这个主要是为了在睡眠前保留某些状态 当然 在计算机唤醒后恢复该状态 您只需配置即可获得所有这些事件acp
  • 错误:NVIDIA-SMI 失败,因为无法与 NVIDIA 驱动程序通信

    NVIDIA SMI 抛出此错误 NVIDIA SMI 失败 因为无法与 NVIDIA 通信 司机 确保安装了最新的 NVIDIA 驱动程序并且 跑步 我清除了 NVIDIA 并按照提到的步骤重新安装了它here https askubun
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void

随机推荐

  • 对区块链技术的一些新思考

    作者 朱金灿 来源 clever101的专栏 为什么大多数人学不会人工智能编程 gt gt gt 缘起 上周写了一篇 对区块链技术的一些思考 之后和一些朋友进行了交流 纠正了我之前的一些关于区块链的错误认识 重新认识区块链 在之前的文章中我
  • AngularJS的增删改查、state嵌套案例,不涉及服务端

    本篇实践一个案例 大致是 左边有导航菜单 右边显示列表 并可对列表项编辑或删除 也可添加新的列表项 借此 可体会到 如何组织可扩展的AngualrJS文件结构 如何点击左侧菜单项右侧显示相应内容 angular ui router的使用以及
  • zgrep查看前后几行日志

    zgrep C 10 a 关键字 error log 2021 09 02 tar gz C注意大写 标识前后10行的意思
  • 如何利用AJAX技术提高网站搜索引擎排名(4)

    四 使用XmlHttpRequest 如果你的用户主要使用Internet Explorer的较新版本或基于Gecko的浏览器 Mozilla Firefox Netscape 7 那么你可以决定使用XmlHttpRequest对象来把其它
  • 阴影LightMode = ShadowCaster

    阴影 实现原理 使用Shadow Map技术 把摄像机与光源位置重合 光源的阴影部分就是摄像机看不到的地方 前向渲染路径中 最重要的平行光如果开启了阴影 Unity就会为光源计算阴影映射纹理 shadowmap 本质就是深度图 记录光源出发
  • Android Studio出现:Your project path contains non-ASCII characters.

    公司设备需要自己开发安卓软件 我这就想自己研究下 开始想用IDEA 因为本身搞Java 后一番蒸腾没成功 在同事建议下装了Android Studio 4 X 一路跟着视频配置挺顺 没想到在创建项目上那里翻车了 如下图 自己没截图 用的别人
  • BitLocker自动解锁的密钥保存在哪里?

    当使用BitLocker加密Windows操作系统的系统分区时 可以选择让操作系统自动解锁系统盘 这通常需要将加密密钥保存在计算机上 以便系统能够自动解密系统盘并启动操作系统 在这种情况下 BitLocker会将密钥存储在计算机的TPM芯片
  • CUDA和C++混合编程及CMakeLists.txt

    1 概要 首先认识一个问题 单从CMakeLists txt的角度来看 无法同时使用两种编译器编译两种语言 不过直接编写Makefile是可以的 通过设置不同的任务 可以实现一个Makefile编译两个语言 但这不是这里要讨论的重点 使用C
  • Mybatis的$和#的区别

    1 是将传入的值当做字符串的形式 eg select id name age from student where id id 当前端把id值1 传入到后台的时候 就相当于 select id name age from student w
  • 在BIOS中开启虚拟化技术

    电脑不能在虚拟机中安装操作系统时 需要在BIOS中开启虚拟化技术 什么是BIOS BIOS 是一个内置于个人计算机的程序 当您打开计算机时该程序启动操作系统 也称为系统固件 BIOS 是计算机硬件的一部分 不同于 Windows 如何进入B
  • PCL1.8.0+VS2013环境配置

    一 PCL环境配置 1 下载PCL 1 8 0 AllInOne msvc2013 win32exe和PCL 1 8 0 AllInOne msvc2013 win32exe pdb然后解压 配置环境变量PATH 下载链接 https pa
  • Windows 11最新版:任务管理器性能参数详解,什么是分页缓冲池和句柄

    首先 可以确定的一点是 大部分电脑都至少有一个CPU 内存 硬盘 网卡 显卡 Win11的任务管理器和Win10的任务管理器除了UI不同外 参数显示上是几乎一样的 所以Win10的用户也可以参考一下 CPU 通常 任务管理器的性能页面中 C
  • java JVM - 垃圾回收机制

    垃圾的定义 只要对象不再被使用了 那我们就认为该对象就是垃圾 对象所占用的空间就可以被回收 怎么判断对象不再被使用的呢 常用的算法有两个 引用计数法 和 可达性分析法 引用计数法思路很简单 当对象被引用则 1 引用释放时计数则 1 当计数器
  • 推荐一款最强Python自动化神器!不用写一行代码!

    搞过自动化测试的小伙伴 相信都知道 在Web自动化测试中 有一款自动化测试神器工具 selenium 结合标准的WebDriver API来编写Python自动化脚本 可以实现解放双手 让脚本代替人工在Web浏览器上完成指定的操作 虽然se
  • vue实现点击按钮刷新页面的方法:

    1 简单方法 第一种 使用location对象的reload 方法 window location reload 第二种 使用编程式导航 this router go 0 2 使用vue中provide和inject 推荐 在app vue
  • YOLO技术概要学习笔记3——YOLOV4到YOLOV8

    目录 一 前言 二 YOLOv4 1 一个集成了 Bag of Specials BoS 的增强架构 2 集成了Bag of freebies BoF 的高级训练方法 3 自我对抗训练 SAT 4 遗传算法进行超参数优化 三 YOLOv5
  • 如何反转一个单链表java

    目标 反转前 1 gt 2 gt 3 gt 4 反转后 4 gt 3 gt 2 gt 1 思维 思维关键点 1 关键点一 本质 两两相邻的节点 的指向变反了而已 清晰的抓本质 箭头方向的改变 这样才能写出简单代码 2 关键点二 指针工具 做
  • 【FPGA约束详解】——从入门到精通

    FPGA约束详解 从入门到精通 FPGA约束是FPGA设计中非常重要的一环 它能够限制和规范电路的行为 确保信号的稳定性和正确性 在FPGA的设计过程中 约束有许多种类 本文将对常见的五种约束进行详细介绍 时钟约束 时钟约束是最基本也是最重
  • Spring JPA @CreatedDate和@LastModifiedDate

    Spring Data JPA提供了注解 CreatedDate和 LastModifiedDate 用来保存创建时间和修改时间 大大降低了开发成本 一 使用步骤 1 启动类需要添加注解 EnableJpaAuditing SpringBo
  • Linux-编写一个自己的命令

    前言 1 在Linux中 我们对文件路径进行操作都需要输入命令 那么 有人可能就会有疑惑了 命令是什么东西 我们是否也可以创造出自己的命令呢 答案是可以的 命令本身其实就是可执行文件 但是 与普通的可执行文件的不同之处在于 命令的可执行文件