[apue] getopt 可能重排参数】的更多相关文章

看第21章时,介绍到了解析命令行的神器 getopt,了解了 linux 下处理通用命令行的方法. 命令行可分为参数与选项,其中不带 - 或 -- 前缀的为参数,对一个命令而言数量是固定的,多个参数之间的顺序也是固定的(不然命令没法区分):而选项就是带 - 或 -- 前缀的,可有可没有的,由用户的输入决定,另外选项也可以有自己的跟随参数,它们之间是没有顺序的.比如说: > wget -c http://strawberryperl.com/download/5.30.2.1/strawberry…
在工程中特别是稍微大一点的项目基本上都会用到配置,就会涉及到配置文件的读取,配置参数的读取. 常用的解析配置文件的是configParser,解析命令行参数的则为getopt. getopt的参数可以分为两种:长模式和短模式. 长模式在命令行中为:--arg1 arg_value. 短模式则是长模式之外的常用空格分隔的参数. 在程序中使用getopt.getopt()对象获取参数,其格式为: opts, args = getopt.getopt(arg_list, shor_mode, long…
最近用到了getopt()这个函数,对它进行了一些了解.这篇博文还是写的非常清楚的.值得学习.最近在改进一个开源项目,希望自己能静下心好好分析代码. --------------------------------------------------------------------------------------------------- getopt被用来解析命令行选项参数. #include <unistd.h>       extern char *optarg;  //选项的参…
最近在写程序的过程中,把一部分时间都花费在程序对参数的处理上.今天听了学长说到getopt函数,才发现原来c里面还有一个专门解决参数处理的函数,查询了相关资料,这里简单总结一下. 使用int main( int argc, char *argv[] )(或int main( int argc, char **argv ))时,系统将把用户输入的参数通过argc和argv引入程序中,argc为参数的个数,argv是指向参数的指针数组,其中第一个参数为自身程序文件名. 这里我们使用getopt() …
1:getopt函数 getopt主要用于解析程序运行时所带的参数,原型如下: #include <unistd.h> int getopt(int argc, char * const argv[],const char *optstring); extern char *optarg; extern int optind, opterr, optopt; 一般的调用方式: ){ switch(c){ case 'x': ... ... case 'y': ... ... case 'z':…
getopt命令并不是bash的内建命令,它是由util-linux包提供的外部命令. getopt 与 getopts 的区别 getopts 是 shell 内建命令, getopt 是一个独立外部工具 getopts 使用语法简单,getopt 使用语法复杂 getopts 不支持长参数(长选项,如 --option), getopt 支持 getopts 不会重排所有参数的顺序,getopt会重排参数顺序 (getopts 的 shell 内置 OPTARG 这个变量,getopts 通…
getopt 与 getopts 都是 Bash 中用来获取与分析命令行参数的工具,常用在 Shell 脚本中被用来分析脚本参数. 两者的比较 (1)getopts 是 Shell 内建命令,getopt 是一个独立外部工具 (2)getopts 使用语法简单,getopt 使用语法较复杂 (3)getopts 不支持长参数(如:--option ),getopt 支持 (4)getopts 不会重排所有参数的顺序,getopt 会重排参数顺序(这里的区别下面会说明) (5)getopts 出现…
点击返回 自学Linux命令行与Shell脚本之路 Bash shell提供了一些不同的方法来从用户处获得数据,包括以下3中方法: 命令行参数(添加在名利后面的数据) 命令行选项(可修改命令行为的单个字母)主要getopt.getopts命令 直接从键盘读取输入的能力(read命令) 13.2-选项处理 所谓的选项就是跟在破折号后面的单个字母,它能改变命令的行为.三种在脚本处理选项的方法: 查找选项,像命令行参数一样处理 getopts命令 getopt命令 1. 查找选项,像命令行参数一样处理…
getopts的使用 语法格式:getopts [option[:]] [DESCPRITION] VARIABLE option:表示为某个脚本可以使用的选项 ":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION) VARIABLE:表示将某个选项保存在变量VARIABLE中 getopts是linux系统中的一个内置变量,一般用在循环中.每当执行循环是,getopts都会检查下一个命令选…
我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参数.-表示简化参数. 在perl中也分这二种. Getopt::Std模块的功能: 初始化perl命令行中所接受的参数,简化了命令行参数的解析. 简化参数例子: 1 2 3 4 5 6 7 8 9 10 #!/usr/bin/perl -w use strict; use Getopt::Std; …
一.说明 在学C语言的时候就知道可以通过argc获取命令行参数个数,可以通过argv获取具体参数.但自己写的程序获取到的参数一是没有键值形式二是写的参数不能乱序,和系统命令不太一样. 再往后点知道有getopt这个东西,但印象中尝试理解其用法很多次都没什么结果:最近又越来多写程序,再次感觉很有必要掌握. 这里以Python3为例演示getopt,python感觉就是C的封装,C的getopt应该也类似. 二.程序代码 此程序中设置-h/-n/-p三个选项,-h不带值-n和-p带值:三个参数设置等…
getopt 命令 使用getopt命令,可以解析任何命令行选项和参数,但是用法比较复杂.getopt的命令用法如下: $ getopt --help 用法: getopt optstring parameters getopt [options] [--] optstring parameters getopt [options] -o|--options optstring [options] [--] parameters 选项: -a, --alternative 允许长选项以 - 开始…
PHP CLI(命令行模式下)接受参数有多种方法: (1)使用$argv接受参数 <?php //变量仅在 register_argc_argv 打开时可用. print_r($argc); //CLI下获取参数的数目,最小值为1 print_r($argv); //CLI下传递给脚本的参数数组,第一个参数总是当前脚本的文件名,因此 $argv[0] 就是脚本文件名. (2)使用getopt()函数获取参数 <?php //获取 -a -b -c参数 $args = getopt('a:b:c…
由于pear的大多数模块仍处于开发当中,因此,这里列举的是随着php4.05一起发布的pear中的模块,需要注意的是,一些抽象类或者是基类(如mail.php,log.php,cache.php)没有列举出来,我们只是关注具有具体功能的模块.下面是这些模块的一个列表: benchmark/timer 测试你的一段php代码的运行效率 benchmark/benchmark_iterate 测试你某个函数循环执行时的性能 cache/output 可以将你的php脚本的输出进行缓存,可以使用多种方…
〇.python中对应的argc, argv需要模块:sys参数个数:len(sys.argv)脚本名:    sys.argv[0]参数1:     sys.argv[1]参数2:     sys.argv[2] 一.getopt opts,args = getopt.getopt ( [命令行参数列表], "短选项", [长选项列表] ) ,第三个参数可省略短选项名后的冒号(:)表示该选项必须有附加的参数.如果没有:,-abc等价于-a -b -c:如果a有:,-abc等价于-a…
GNU/Linux的命令行选项有两种类型:短选项和长选项,前者以 '-' 作为前导符,后者以 '--' 作为前导符.比如有一个命令: $ myprog -a vv --add -b --file a.txt b.txt - -- -e c.txt 在GNU/Linux系统,对这种情况的一种合理解释是:a是短选项,带一个参数vv:add是长选项,无参数:b是短选项,无参数:file是长选项,带一个参数a.txt:b.txt是参数:-是参数,通常表示标准输入,stdin:--是一个指示符,表明停止扫…
1.getopt——C风格命令行解析 http://docs.python.org/2.7/library/getopt.html#module-getopt getopt.getopt(args, options[, long_options])  先引入一个例子: >>> import getopt >>> >>> args = "-a -b -cfoo -d bar a1 a2".split() #将输入的参数转换成一个列表,…
外部直接执行python文件时,我们有时需要获得命令行的参数   获得命令行参数的两种方式   1.通过sys.argv sys.argv:获得一个参数列表,第一个值为文件名本身,通过sys.argv[1]获得第文件名后的第一个参数 ,多个参数使用空格隔开   测试代码: import sys print(sys.argv) print(len(sys.argv)) print(len(sys.argv[1]))   测试数据: python3 test.py 第一个参数 第二个参数 执行结果:…
参考: http://blog.csdn.net/zhangyang0402/article/details/5671410 http://www.cnblogs.com/gnuhpc/archive/2012/12/07/2807061.html http://www.jb51.net/article/41462.htm http://biancheng.dnbcw.info/c/236603.html 命令行工具下的参数选项有两种,长选项和短选项.短选项以-开头,后面跟单个字母:长选项以--…
转载:http://blog.csdn.net/hcx25909/article/details/7388750 每一天你都在使用大量的命令行程序,是不是感觉那些命令行参数用起来比较方便,他们都是使用getopt来实现的. 在Linux下使用getopt写程序是一种比较cool的事情,下面来简单的介绍一下getopt的使用. === getopt使用 === 在讨论参数处理之前,我们先明确两个概念:选项.选项参数gcc -g -o test test.c我们经常使用上面的命令来编译程序,这里g和…
getopt可以分析输入的参数,根据不同的参数输入不同的命令 getopt.getopt( [命令行参数列表], "短选项", "长选项列表" ) getopt这个函数,就是用来抽取sys.argv获得用户输入来确定后续操作的 getopt是一个模块,而这个模块里面又有getopt函数, 函数返回2个值 opts 和 argsopts是一个存有所有选项及其输入值的元组,当输入确定后,这个值就不能更改了args是除去有用的输入以后剩余的部分 #!/usr/bin/en…
使用 PHP 开发的同学多少都会接触过 CLI 命令行.经常会有一些定时任务或者一些脚本直接使用命令行处理会更加的方便,有些时候我们会需要像网页的 GET . POST 一样为这些命令行脚本提供参数.比如在针对某些日期做统计的脚本,就需要传递一个日期给它,这样我们就统计指定日期的一些数据.这类需求应该非常常见,那么,我们都是如何来接收这些命令行的参数的呢?今天,就来介绍一下这方面的内容. $argv 获得所有空格分隔的参数列表 这个变量估计是大家用得比较多的一个接参变量了.它是 PHP 为我们准…
以前由于R命令行传参不友好,经常嵌套在其他程序语言(如Perl/Python)中来进行传参,但现在也陆续有一些方式来实现R的传参了,这里简单罗列下. 方法一 最传统的方法就是使用系统自带的commandArgs函数,直接按位置顺序传入.这种方法简短.快速,适合个人使用.一般也能满足我们的需求了,但对于其他用户是不够友好的. #test.R args=commandArgs(T) file=read.table(args[1]) ... #command line $Rscript test.R…
2015年新年第一篇随笔, 祝福虽然有些晚,但诚意还在:新年快乐. 今天主要是想分享一异步工具类,在C/S架构中.先进行网络资源异步访问,然后将回调函数 Invoke到UI线程中进行UI处理. 这样的场景是及其常见的,因此特意封装了一工具类,用以简化操作. /// <summary> /// 异步工具类 /// </summary> public class TaskTools { /// <summary> /// 是否 在执行回调函数之前修改Running状态 //…
C++11 1.long long新类型 2.列表初始化 int t=0; int t={0}; int t(0); int t{0}; 注意:如果我们使用列表初始化有丢失信息的风险,则编译器报错 long double ld=3.1415926536; int a{ld},b={ld};//错误 int c(ld),d=ld;//正确,会丢失数据 3.空指针nullptr int *p1=nullptr; int *p2=0; int *p3=NULL;//尽量避免 4.constexpr类型…
顶顶大名的Guido van Rossum(Python之父)推荐的main写法: #!/usr/bin/python import sys import getopt class Usage(Exception): def __init__(self, msg): self.msg = msg def main(argv=None): if argv is None: argv = sys.argv try: try: opts, args = getopt.getopt(argv[1:],…
点击查看Evernote原文. #@author: gr #@date: 2014-10-04 #@email: forgerui@gmail.com Part 3: STL泛型算法(第10章) 一.算法永远不会执行容器的操作 算法本身不会执行容器的操作,它们只会运行在迭代器上,执行迭代器的操作,使用迭代器,使算法更加通用.算法的编程假定:算法永远不会改变底层容器的大小.算法可能改变元素的值或移动元素,但永远不会直接添加或删除. 还有一个inserter的迭代器,可以向容器中添加元素. 二.只读…
一:threading VS Thread 众所周知,python是支持多线程的,而且是native的线程,其中threading是对Thread模块做了包装,可以更加方面的被使用,threading模块里面主要对一些线程操作对象化了,创建了Thread的类. 使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行,一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的类里面,用例如下: ①使用Thread来实现多线程 #!/u…
之前我的一些文章都是在说Postgres的一些查询相关的代码.但是对于Postgres服务端是如何启动,后台进程是如何加载,服务端在哪里以及如何监听客户端的连接都没有一个清晰的逻辑.那么今天我来说说Postgres中的postmaster模块的代码,试着解答这些问题. 在正式讨论之前,我先说一下,代码主要涉及的是postgres源码的src/backend目录下的main,postmaster以及tcop模块. 关于postmaster这个命令,熟悉postgres的一定不会陌生.在Linux上…
Python中的常用的系统模块中部分函数等的整理 random: 随机数 sys: 系统相关 os: 系统相关的 subprocess: 执行新的进程 multiprocessing: 进程相关 threading: 线程相关 pickle: 将对象转换成二进制文件 time: 时间 datetime: 基本的日期和时间类型 timeit: 准确测量小段代码的执行时间 urllib: 访问网络的包 http.cookielib: 主要作用是提供可存储cookie的对象 socket: 套接字相关…