【Linux系统化学习】揭秘 命令行参数 | 环境变量

=========================================================================

个人主页点击直达:小白不是程序媛

Linux专栏:Linux系统化学习

代码仓库:Gitee

=========================================================================

目录

命令行参数

环境变量

PATH

查看PATH

$PWD

查看环境变量PWD

$HOME

查看系统支持的环境变量

获取环境变量


命令行参数

在C/C++编程语言中我们有一个main主函数,在刚开始接触C语言时我们会发现这个主函数其实是有参数的,我们不妨在Linux系统中将其中两个参数使用起来看看其运行结果。

  1 #include<stdio.h>2 int main(int argc, char*argv[])3 {4     int i=0;5     for(i=0;i<argc;i++)6     {7         printf("%d %s\n",i,argv[i]);                                                                                                    8     }9     return 0;10 }

怎么会是这样的输出?我们再试试

 

好像有点眉头了,这里的第一个参数代表着shell命令行中我们以空格为间隔的字符串的个数,即为我们第二个字符串数组的参数,第二个字符数组参数代表我们以空格为间隔的每个字符串。

这样我么就可以联想到我们在Linux下执行的各种命令

自己的命令创建文件命令

  1 #include<stdlib.h>2 #include<stdio.h>3 int main(int argc, char*argv[])4 {5     if(argc!=2)6     {7         printf("touch:miss file operand");8     }9     FILE* fp=fopen(argv[1],"w");                                                                                                                                                                        10     if(fp!=NULL)11         fclose(fp);12     return 0;13 }

命令行参数可以支持各种指令级别的命令行选项的设置


环境变量

  • 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
  • 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
  • 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

为什么我的命令要带 . / 呢? 

执行一个命令先要找到一个对应的可执行程序, . / 代表当前路径。

PATH

在执行一些系统命令时候我们可以直接执行,也可以使用路径执行

可以直接执行系统命令是因为我们PATH环境变量记录着我们命令所在的路径,因此我们可以不用输入路径。

查看PATH

echo $PATH

在PATH追加自己命令的路径

PATH= $PATH:路径

 

我们也可以之间把自己可执行程序的路径拷贝到PATH的路径下,这就是安装程序;将自己程序的路径从PATH中删除就是程序的卸载。

注意:

自己误操作修改了PATH中的所有内容不要慌张重新登入服务器就好了。 

$PWD

当你输入pwd命令显示当前路径时,你当前所在路径是保存在PWD环境变量里的;

查看环境变量PWD

echo $PWD

$HOME

在我们的服务器中分普通用户和root用户,普通用户和root用户最大的区别就是权限和家目录的不同,在前面的文章我们已经介绍了权限的区别;今天我们来看看家目录的区别。

  • root用户的家目录为:/root
  • 普通用户的家目录为:/home/XXX

系统是如何做到区分root用户和普通用户的呢?

在我们登入我们的服务器时需要输入用户名和密码,服务器进行认证形成各种环境变量,此时根据用户名初始化环境变量HOME,登入上去服务器进入(cd $HOME)用户对应的家目录。


查看系统支持的环境变量

我们可以使用指令对Linux系统的环境变量进行查看。

env


获取环境变量

我们也可以使用函数对环境变量进行获取完成一些操作。

getenv("环境变量名称")

获取USER环境变量区别限制root用户和普通用户。

    1 #include<stdlib.h>2 #include<stdio.h>3 #include<string.h>4 int main(int argc, char*argv[])                                                               5 {6     char * name = getenv("USER");7     if(strcmp(name,"root")==0)8     {9         printf("%s:合法用户\n",name);10         printf("I'm root!!!\n");11     }12     else13     {14         printf("%s:非法用户\n",name);15            exit(-1);16     }17        return 0;18 }


今天对Linux下进命令行参数和环境变量分享到这就结束了,希望大家读完后有很大的收获,也可以在评论区点评文章中的内容和分享自己的看法。您三连的支持就是我前进的动力,感谢大家的支持!!! 

 

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

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

相关文章

快速上手PostMan,了解PostMan的基本使用

快速上手PostMan PostMan是一个可扩展的API开发和测试协同平台工具有网页版和独立客户端,推荐安装独立客户端 创建WorkSpace工作空间 类似于GitHub的个人空间可以起到云备份的作用 发送请求 发送Get请求 发送Post请求,设置请求体的格式是表单数据即namevalue的格式 发送Pos…

开源 LLM 安全扫描器

Vigil 是一款开源安全扫描程序&#xff0c;可检测即时注入、越狱以及对大型语言模型(LLM) 的其他潜在威胁。 当攻击者使用专门设计的输入成功影响 LLM 时&#xff0c;就会出现即时注入。这导致 LLM 无意中实现了攻击者设定的目标。 ​ 我对 LLM 的可能性感到非常兴奋&#xff…

2024年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷A 模块基础设施设置/安全加固&#xff08;200 分&#xff09;A-1&#xff1a;登录安全加固&#xff08;Windows…

智能安防无人机——一种安防巡检新方案

在高新技术的推动下&#xff0c;安防无人机在监控、巡逻等领域的使用频率越来越高&#xff0c;逐渐成为安防救援的重要帮手。安防无人机作为城市安全应急保障体系的重要组成部分&#xff0c;在未来将变得不可或缺。 一、安防无人机的定义及构成 复亚智能无人机全自主巡飞系统由…

系列十六、SpringBoot内置web服务器为Tomcat原理分析

一、概述 作为Spring家族的明星产品&#xff0c;SpringBoot极大地简化了程序员的日常开发&#xff0c;提高了开发效率。我们很容易得借助于SpringBoot就可以快速开发业务代码&#xff0c;不知道大家有没有思考过&#xff0c;当我们在idea中创建了一个SpringBoot项目&#xff0c…

Linux 权限管理

1 Linux 安全模型 AAA认证资源分派&#xff1a; 当用户登录时&#xff0c;系统会自动分配令牌 token&#xff0c;包括用户标识和组成员等等信息 1.1 用户 Linux 中每个用户是通过 User ID&#xff08;UID&#xff09;来唯一标识的。 1.2 用户组 Linux 中可以将一个或者多个…

详解Linux常用命令

目录 1. ps 命令 2. top 命令 3. grep 命令 4. df 命令 5. tail 命令 6. head 命令 7. cat 命令 8. --help 和 man 命令 9. cd 命令 10. mkdir 命令 11. rm 命令 12. mv 和 cp 命令 13. touch 命令 14. vi 或 vim 命令 15. chmod 修改权限 16. 打包和压缩文件 …

LINUX 嵌入式C编程--信号编程

基本概念 信号是事件发生时对进程的通知机制&#xff0c;也可以把它称为软件中断。信号与硬件中断的相似之处在于能够打断程序当前执行的正常流程&#xff0c;其实是在软件层次上对中断机制的一种模拟。信号提供了一种处理异步事件的方法。 信号目的 **信号的目的是用来通信…

IntelliJ IDEA创建springboot项目时不能选择java8的问题解决方案

最近博主也有创建springboot项目&#xff0c;发现了IntelliJ IDEA在通过Spring Initilizer初始化项目的时候已经没有java8版本的选项了。 基于这个问题&#xff0c;有了这篇文章的分享&#xff0c;希望能够帮助大家克服这个困难。 如图&#xff0c;现在创建springboot项目的时…

现代化工安全保障迎来巡查无人机新时代

当今现代化工企业呈现出规模不断扩大&#xff0c;设备逐渐趋向大型化的局面&#xff0c;由此导致化工安全生产面临日益严峻的挑战。然而&#xff0c;随着巡查无人机技术的成熟&#xff0c;这种新的高效手段正在提高化工安全检测的工作效率。 一、传统化工安全巡检存在弊端 化工…

了解 ignore_above 参数对 Elasticsearch 中磁盘使用的影响

在 Elasticsearch 中&#xff0c;ignore_above 参数允许你忽略&#xff08;而不是索引&#xff09;长于指定长度的字符串。 这对于限制字段的大小以避免性能问题很有用。 在本文中&#xff0c;我们将探讨 “ignore_above” 参数如何影响 Elasticsearch 中字段的大小&#xff0c…

Django-Redis

NoSQL&#xff1a;(不支持sql语句) Redis MongoDB Hbase hadoop Cassandra hadoop key-value数据库&#xff08;非关系性数据库&#xff09; redis优势 性能高&#xff0c;读取速度快&#xff0c;存在内存中 Redis应用场景 用来做缓存 在某些特定场景下替代传统数据库---社交…

SqlServer_分页_OFFSET_FETCH

使用SQL server分页 使用SQL server分页的时候踩了一个坑&#xff1a; 用mybatis-plus分页的时候始终报错 代码&#xff1a;Page<SystemDictCatalog> page new Page<>(data.getPage(), data.getLimit()); QueryWrapper<SystemDictCatalog> wrapper new Qu…

python接口自动化之allure报告优化,并且教你用后缀为bat文件执行pytest指令,来运行用例

1.定制化标签 使用方法参数值参数说明allure.epic()项目名称敏捷里面的概念&#xff0c;定义史诗&#xff0c;往下是featureallure.feature()模块名称功能点的描述&#xff0c;往下是storyallure.story()接口名称用户故事&#xff0c;往下是titleallure.title(用例的标题)用例…

matlab 路面裂缝检测识别系统设计GUI

1、内容简介 略 23-可以交流、咨询、答疑 2、内容说明 路面裂缝检测识别系统设计GUI 基于matlab的GUI设计路面裂缝检测识别系统 matlab、GUI、直方图、裂缝检测、二值化 3、仿真分析 4、参考论文 略 链接&#xff1a;https://pan.baidu.com/s/1AAJ_SlHseYpa5HAwMJlk…

电话号码的字母组合(C++实现)

电话号码的字母组合 题目代码思路及代码讲解代码&#xff08;有注释版&#xff09; 题目 电话号码的字母组合 代码 class Solution {const char* numsStrArr[10]{"","","abc","def","ghi","jkl","mno"…

ringboot-cve_2021_21234:latestSpring Boot 目录遍历 (CVE-2021-21234)漏洞复现

Spring Boot 目录遍历 &#xff08;CVE-2021-21234&#xff09;漏洞复现 Spring-boot-actuator-logview 0.2.13之前版本存在路径遍历漏洞&#xff0c;攻击者可通过该缺陷读取系统任意文件。 名称: Spring Boot 目录遍历 &#xff08;CVE-2021-21234&#xff09; 描述: Sprin…

Kubernetes(K8s)Pod控制器详解-06

Pod控制器详解 Pod控制器介绍 Pod是kubernetes的最小管理单元&#xff0c;在kubernetes中&#xff0c;按照pod的创建方式可以将其分为两类&#xff1a; 自主式pod&#xff1a;kubernetes直接创建出来的Pod&#xff0c;这种pod删除后就没有了&#xff0c;也不会重建 控制器创建…

【MySQL】MySQL安装 环境初始化

MySQL安装 MYSQL官网 安装完成后,傻瓜下一步即可 配置一下环境变量即可 (1) 初始化MySQL, 管理员身份运行 mysqld --initialize-insecure(2) 注册 mysqld mysqld -install# 如果记录以前的版本执行下面指令 mysqld -remove(3) 启动MySQL服务 // 启动mysql服务 net start …

adb环境搭建(adb下载与安装)

文章目录 前言一、adb下载二、adb安装1.将下载的安装包解压缩2.将解压缩后的文件夹放到自己想存放的目录下&#xff08;不要放到带有中文的目录下&#xff09;——我这放到D盘根目录下3.配置环境变量3.1.鼠标放到 "此电脑"→鼠标右击→选择属性3.2.点击 "高级系…