当前位置: 首页 > news >正文

【Linux】命令行参数

文章目录

  • 前言
  • 一、C语言main函数的参数
  • 二、环境变量
  • 总结


前言

我们在Linux命令行输入命令的时候,一般都会跟上一些参数选项,比如l命令,ls -a -l。以前我总是觉得这是理所当然的,没深究其本质究竟是什么,今天才终于知道其背后原理究竟什么。


一、C语言main函数的参数

大家都知道C语言一定要有main函数,这是一段程序的入口,那既然main也是函数,那也一定有调用,要传参啊。
其实main函数确实被调用了(不过这不是今天的重点),也可以传参
今天就要详细谈一下main函数的参数。

int main(int argc, char *argv[])
{}

不知道大家见没见过这中形式的main函数,没见过也没关系,给大家介绍一下这两个参数。

  • argv:这是一个字符指针数组,其实里面存储的就是命令后面跟着的一个个参数
  • argc:就是指明命令后面跟着几个参数

给大家演示一下:

int main(int argc, char* argv[])
{int i = 0;for(; i < argc; i++ ){printf("%d: %s\n", i, argv[i]);}
}

如上一段程序,功能很简单,就是打印这个argv数组里面的内容。
看一下结果
可以看到其实这个数组里面只有一个元素,即./myproc
在这里插入图片描述
然而,我在运行可执行程序的命令后随便加一些参数,这些参数都会被保存到argv数组中去,被本程序打印出来。
在这里插入图片描述
其实,看到这里大家或许已经明白了。
其实命令本质上是一个可执行程序的名字,用户输入的参数都被保存在argv数组中,程序内通过查看数组的内容来判断执行哪一段代码,进而产生了不同的功能。

例如,可以给大家写一个简易的计算器命令:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main(int argc, char* argv[])
{// 如果输入的的命令不是4个参数,给出提示信息,直接返回if(argc != 4){printf("Use error\nUsage: %s op[-add|sub|mul|div] d1 d2\n", argv[0]); return 1;}// 读取操作数int x = atoi(argv[2]);int y = atoi(argv[3]);int result = 0;// 程序一定有4个命令行参数,第一个是程序名// 判断操作符,以执行不同的功能if(strcmp(argv[1], "-add") == 0){result = x + y;printf("%d+%d=%d\n", x, y, result);}else if(strcmp(argv[1], "-sub") == 0){result = x - y;printf("%d-%d=%d\n", x, y, result);}else if(strcmp(argv[1], "-mul") == 0){result = x * y;printf("%d*%d=%d\n", x, y, result);}else if(strcmp(argv[1], "-div") == 0){if( 0 == y ) printf("%d/%d=error! div zero\n", x, y);else printf("%d/%d=%d\n", x, y, x/y);}else{printf("Use error, you should use right command line\nUsage: %s op[-add|sub|mul|div] d1 d2\n", argv[0]); }
}

运行结果如下:
代码运行结果

二、环境变量

看到这里可能大家还是有疑问,为什么Linux的终端命令不用加./,而我写的却需要呢?
首先,我们要知道,运行一个可执行程序首先需要知道它的位置,所以我们需要指明是当前目录下的某个可执行文件。终端命令同样如此,只不过终端命令有默认位置,每次都会到这个位置去寻找是否有这个可执行程序而已。
这个默认位置其实便是环境变量,终端命令的默认环境变量是PATH,我们可以运行echo $PATH这个命令查看环境变量,例如,
在这里插入图片描述
到这里大家可能已经明白了,想让我们自己写的可执行程序也像命令一样执行,只需要把我们自己写的可执行程序的绝对路径加到PATH后面就可以了,通过执行PATH=$PATH:可执行程序的绝对路径,例如,
在这里插入图片描述


总结

Linux中的的环境变量不止PATH,还有很多其他的一些环境变量,本文就不再赘述了。

相关文章:

【Linux】命令行参数

文章目录 前言一、C语言main函数的参数二、环境变量总结 前言 我们在Linux命令行输入命令的时候&#xff0c;一般都会跟上一些参数选项&#xff0c;比如l命令&#xff0c;ls -a -l。以前我总是觉得这是理所当然的&#xff0c;没深究其本质究竟是什么&#xff0c;今天才终于知道…...

【信息安全】-个人敏感信息、个人信息、个人金融信息

文章目录 个人敏感信息个人敏感信息判定举例 个人信息个人信息判定举例 个人金融信息内容a) 账户信息指账户及账户相关信息b) 鉴别信息c) 金融交易信息d) 个人身份信息e) 财产信息f) 借贷信息g) 其他信息: 出处 个人敏感信息 个人敏感信息判定 个人敏感信息是指一旦泄露、非法…...

海外服务器和国内服务器有什么样的区别呢

海外服务器和国内服务器有什么样的区别呢&#xff0c;其实呢在外形方面是大同小异&#xff0c;除了外形还有一些其他方面还存在这一些差异。 一&#xff0c;地理位置的差异。 海外服务器——有可能在中国数据中心之外的任何国家地区&#xff0c;例如美国服务器&#xff0c;韩…...

电脑屏幕亮度怎么调?学会4个方法,轻松调节亮度!

“我总是感觉我电脑屏幕太暗了&#xff0c;有时候如果光线好一点&#xff0c;会看不清电脑屏幕。有什么可以把电脑调亮一点的简单方法吗&#xff1f;” 在我们的日常生活中&#xff0c;电脑已经成为我们工作、学习、娱乐不可或缺的工具。然而&#xff0c;长时间面对电脑屏幕可能…...

微信小程序之猜数字和猜拳小游戏

目录 效果图 app.json 一、首页&#xff08;index3&#xff09;的代码 wxml代码 wxss代码 二、猜数字页面&#xff08;index&#xff09;代码 wxml代码 wxss代码 js代码 三.游戏规则页面&#xff08;logs&#xff09;代码 wxml代码 wxss代码 四.猜拳页面&#xff…...

CETN01 - How to Use Cloud Classroom

文章目录 I. Introduction to Cloud ClassroomII. How to Use Cloud Classroom1. Publish Resources2. Conduct Activities3. Class Teaching Reports4. View Experience Values5. Performance in Cloud Classroom I. 云课堂介绍II. 如何使用云课堂1. 发布资源2. 进行活动3. 班…...

安卓8预装可卸载应用

环境 系统&#xff1a;Android 8 CPU:MTK 理论上改法适用于其他平台&#xff0c;比如展讯。 不适用于安卓11。安卓11请参照android 11预装APP到data/app目录 实现 假设要内置test这个应用。 第一步把test添加到系统编译配置中&#xff0c;不同平台或cpu文件不一样。 比如&am…...

微服务实战系列之MemCache

前言 书接前文&#xff0c;马不停蹄&#xff0c;博主继续书写Cache的传奇和精彩。 Redis主要用于数据的分布式缓存&#xff0c;通过设置缓存集群&#xff0c;实现数据的快速响应&#xff0c;同时也解决了缓存一致性的困扰。 EhCache主要用于数据的本地缓存&#xff0c;因无法保…...

解决服务端渲染程序SSR运行时报错: ReferenceError: document is not defined

现象&#xff1a; 原因&#xff1a; 该错误表明在服务端渲染 (SSR) 过程中&#xff0c;有一些代码尝试在没有浏览器环境的情况下执行与浏览器相关的操作。这在服务端渲染期间是一个常见的问题&#xff0c;因为在服务端渲染期间是没有浏览器 API。 解决办法&#xff1a; 1. 修…...

【漏洞复现】狮子鱼任意文件上传漏洞

漏洞描述 狮子鱼CMS(Content Management System)是一种网站管理系统,旨在帮助用户更轻松地创建和管理网站。它具有用户友好的界面和丰富的功能,包括页面管理、博客、新闻、产品展示等。 狮子鱼CMS使用简单直观的管理界面,使得网站所有者可以方便地进行内容的发布、管理和…...

LINUX 下部署github仓库

打开tumx django-admin startproject project_name #创建django项目 project_name配置git ssh-keygen # 生成密钥 连接 github 在github中打开setting 添加密钥 并且允许 write access git init # 把当前文件夹配置为git仓库 git config --global user.name xxx git config --g…...

CentOS中安装数据库

1.下载 网址&#xff1a;https://dev.mysql.com/downloads/mysql/ 按如图选择&#xff0c;然后点击Download 这里它让我们登录&#xff0c;我们直接选择不登录&#xff0c;直接下载 2.关闭防火墙 systemctl disable firewalld3.正式安装 切换到/usr/local下 cd /usr/l…...

GPT-Crawler一键爬虫构建GPTs知识库

GPT-Crawler一键爬虫构建GPTs知识库 写在最前面安装node.js安装GPT-Crawler启动爬虫结合 OpenAI自定义 assistant自定义 GPTs&#xff08;笔者用的这个&#xff09; 总结 写在最前面 GPT-Crawler一键爬虫构建GPTs知识库 能够爬取网站数据&#xff0c;构建GPTs的知识库&#xf…...

在微信小程序中如何改变默认打开的页面

在微信小程序中&#xff0c;在我们编写页面的时候&#xff0c;可能会在重新渲染的时候导致页面跳转到默认打开的页面上&#xff0c;为了提升用户的一个体验&#xff0c;我们可以设置一些内容来修改小程序默认打开的页面&#xff0c;提升开发者的开发体验。 当我们打开一个微信…...

Ardupilot开源飞控之VTOL之旅:配件试装

Ardupilot开源飞控之VTOL之旅&#xff1a;配件试装 1. 源由2. 分析2.1 【修改使用】FC & PDB & GPS打印件2.2 【直接使用】VTX & CRSF打印件 3. 试装3.1 【结构】问题1&#xff1a;GPS座子尺寸非常紧凑&#xff0c;需要用力压入卡座内。3.2 【结构】问题2&#xff…...

STM32-GPIO

一、GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 可配置8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下&#xff1a;可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输…...

MySQL的事务

<!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <title>MySQL的事务</title> </head> <body> <!-- 事务是一组操作的集合&#xff0c;它是一个不可分隔的工作单位&#xff0c;事务会把所有的操作作…...

go-carbon v2.2.14 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库&#xff0c;支持链式调用。 目前已被 awesome-go 收录&#xff0c;如果您觉得不错&#xff0c;请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...

解决 IIS HTTP 403 错误问题

最近上传附件 IIS 总是返回 HTTP 403 错误,在踩了很多配置的坑之后,终于把问题解决了,于是特意写了本篇文章。 虽然网络上的文章不少,大都写的没错,但是他们没有很清晰的把问题描述清楚,导致一些新手在看这些文章跟着处理问题的时候难免会踩坑,于是我就以我踩坑的经验写…...

字符设备驱动基础—并发控制

一、上下文和并发场合 执行流&#xff1a;有开始有结束总体顺序执行的一段代码 又称上下文 应用编程&#xff1a;任务上下文 内核编程&#xff1a; 任务上下文&#xff1a;五状态 可阻塞 a. 应用进程或线程运行在用户空间 b. 应用进程或线程运行在内核空间&#xff08;通过调…...

5-Tornado入门、程序的原理图、tornado不能使用同步代码的演示

安装 pip install tornado第一个程序 from tornado import web from tornado import ioloop class IndexHandler(web.RequestHandler):def get(self):self.write(Hello Tornado!!123)if __name__ __main__:# 1.创建了app对象&#xff0c;设置路由,并开启debug模式app web.A…...

mysql原理--InnoDB记录结构

1.InnoDB行格式 我们平时是以记录为单位来向表中插入数据的&#xff0c;这些记录在磁盘上的存放方式也被称为 行格式 或者 记录格式 。 设计 InnoDB 存储引擎的大叔们到现在为止设计了4种不同类型的 行格式 &#xff0c;分别是 Compact 、 Redundant 、Dynamic 和 Compressed 行…...

ES6基础语法

目录 一、解构 数组解构 对象解构 字符串解构 数值解构 布尔值解构 二、箭头函数 和普通函数区别? 三、拓展运算符 ... 一、解构 给右侧值匹配对应的变量 等号两侧模式一定要匹配 数组解构 /*** 解构&#xff1a;从数组或者对象中提取值&#xff0c;给变量进行赋值操作就…...

java8 常用code

文章目录 前言一、lambda1. 排序1.1 按照对象属性排序&#xff1a;1.2 字符串List排序&#xff1a;1.3 数据库排序jpa 2. 聚合2.1 基本聚合&#xff08;返回对象list&#xff09;2.2 多字段组合聚合&#xff08;直接返回对象list数量&#xff09; 二、基础语法2.1 List2.1.1 数…...

docker 镜像管理

搜索镜像&#xff1a;这种方法只能用于官方镜像库搜索基于 centos 操作系统的镜像# docker search centos ​按星级搜索镜像&#xff1a; 查找 star 数至少为 100 的镜像&#xff0c;默认不加 s 选项找出所有相关 ubuntu 镜像&#xff1a; # docker search ubun…...

Jira 中如何修改时间为绝对时间

问题描述 在使用Jira的时候&#xff0c;有一些时间显示的是相对时间&#xff0c;如&#xff1a;2天前&#xff0c;3个小时前等&#xff0c;有些用户不习惯这样的显示方式&#xff0c;希望使用绝对的时间格式&#xff0c;如&#xff1a;2022年2月22日 22:22 应该怎样修改 解…...

班级查分软件制作教程:老师必备技能!

首先&#xff0c;你需要选择一个合适的软件平台来制作班级查分软件。推荐使用群发成绩&#xff0c;因为它是一个功能强大且易于使用的在线查询系统&#xff0c;可以帮助你快速高效地制作班级查分软件​。 在制作班级查分软件之前&#xff0c;你需要准备好学生的成绩数据。这可以…...

Linux 的性能调优的思路

Linux操作系统是一个开源产品&#xff0c;也是一个开源软件的实践和应用平台&#xff0c;在这个平台下有无数的开源软件支撑&#xff0c;我们常见的apache、tomcat、mysql等。 开源软件的最大理念是自由、开放&#xff0c;那么Linux作为一个开源平台&#xff0c;最终要实现的是…...

如何通过webdriver禁用浏览器定位功能

今天碰到一个小问题&#xff0c;在使用了代理ip的情况下访问某些站点&#xff0c;但是还是显示本地的ip地址&#xff0c;这个是什么问题呢&#xff0c;原来是谷歌浏览器默认打开了定位功能 那么问题来了&#xff0c;如何在使用webdriver的时候关闭浏览器的定位功能呢&#xff1…...

网卡bonding绑定

目录 一、概念 1、概述&#xff1a; 二、实验 1、绑定案例&#xff1a; 一、概念 1、概述&#xff1a; 将多个物理网卡进行排列组合&#xff0c;形成逻辑网卡&#xff0c;网卡的高可用 绑定模式 mode0&#xff08;平衡负载模式&#xff09;&#xff1a;平时两块网卡均工…...

厦门企业建站系统模板/公司网站推广方案

数据 3 分钟由 ACDU (中国 DBA 联盟) 与墨天轮联合出品的全新视频节目上线啦&#xff5e;三分钟带你来了解数据行业动态&#xff0c;节目内容主要包含数据行业最新的产品发布、公司大事件、行业新闻等。每周五更新&#xff0c;不见不散&#xff5e;本期内容概览&#xff1a;202…...

c语言和网站建设的关系/石家庄新闻头条新闻最新今天

2019独角兽企业重金招聘Python工程师标准>>> boot2docker 用的Vbox&#xff0c;所以用VBox的命令做NAT #先要停掉所有的容器 docker ps -a -q | xargs docker stop #停到boot2docker boot2docker stop #如果容器的端口是 8080的话 (docker -p 18080:8080) VBoxManag…...

做策划的网站推广/网站排名掉了怎么恢复

地图图像服务&#xff08;ImageryService&#xff09;提供了根据地理位置&#xff08;经度和纬度&#xff09;坐标和地图的缩放级别解析出对应于地图图片系统的完整地图数据元数据&#xff0c;包括图片映射地址、图片大小等一系列详细参数。通过该服务的服务接口也可以反向实现…...

建设网站是什么意思/百度服务中心人工24小时电话

首先登陆mysql的交互shell&#xff0c;输入下面的命令查看当前数据库的编码方式 show variables like %character%; 从上面可以看出&#xff0c;mysql数据库装上之后初始并不均是utf8 退出刚才的交互shell&#xff0c;去修改下面的配置文件 输入下面的命令&#xff0c;打开第一…...

免费模板样机素材网站/安徽网站优化

前段时间编译安装的一个mplayer1.1版的播放器&#xff0c;播放文件没有声音&#xff0c;每次执行以下命令可以听&#xff0c;但一重启系统又不行了. #modprobe snd_pcm_oss #echo "et.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss #mplayer gongxi.mp3 有一…...

wordpress最新版优化/常见的搜索引擎

开源地址&#xff1a;GitHub - bigbigword3/Vue.Crud: Vue增删改查 演示地址&#xff1a;http://47.112.212.161:901/ 用户名/密码&#xff1a;admin/admin 参考资料&#xff1a;Home perarnborg/vuex-oidc Wiki GitHub 运行效果&#xff1a;...