写点什么

Linux 下可执行程序的 Shell 传参格式规范

作者:乌龟哥哥
  • 2022 年 6 月 04 日
  • 本文字数:1320 字

    阅读完需:约 4 分钟

1. Linux 下可执行程序的 Shell 传参格式规范

Linux 下的可执行程序在运行时经常需要传一些参数,而这些参数是有规范的。包括我们自己写的在 Linux 系统下运行的 Shell 脚本、Python 脚本等可执行程序,最好也遵循相关规范。我们下面以 Linux 命令为例来讲解参数规范:


Linux 命令行的格式规范如下:


orion-orion@MyDesktop ~ % command [-options] parameter1 parameter2
复制代码


上述命令详细说明如下:


  1. 一行命令中第一个输入的部分绝对是命令(command)或可执行文件(例如 Shell 脚本)。

  2. 中括号[]并不存在于实际的命令中,表示该参数是可选的,而加入选项设置时,通常选项前会带-符号,例如-h;如果要使用选项的完整全名,选项前会带--符号,例如--help

  3. parameter1parameters2可以为依附在选项后面的参数,也可以为command的参数。

  4. 命令、选项、参数之间以空格来区分,无论空几格 Shell 都视为一格,所以空格是很重要的特殊字符。

  5. 命令太长的时候,可使用反斜杠(\)来转义回车键,使命令连续到下一行(注意,换行符属于特殊字符,而反斜杠后立刻接着特殊字符才能转义)。


此外,需要注意在 Linux 系统中英文大小写字母是不一样的,例如cd命令和CD并不同。

2. 实例

我们下面举几个命令的传参实例。


ls -al ~
复制代码


ls为命令名。-al-a -l的简写,意为使用-a(列出包括隐藏文件在内的所有文件)与-l(列出文件属性)这两个选项。~ls命令的参数,意为家目录。


tar -xvf test3.zip -C .
复制代码


tar为命令名。-xv意为使用-x(解压操作)与-v(可视化解压过程)这两个选项。-f意为指定压缩文件的名称,后面依附着test3.zip做为该选项的参数。-C意为指定解压后的目录,后面依附着.(当前目录)做为该选项的参数。


当我们直接在 Shell 中键入man command查看命令操作说明(manual)时,可以看到文档中对参数格式有详细描述:


TAR(1)                       General Commands Manual                      TAR(1)
NAME tar – manipulate tape archives
SYNOPSIS tar [bundled-flags ⟨args⟩] [⟨file⟩ | ⟨pattern⟩ ...] tar {-c} [options] [files | directories] tar {-r | -u} -f archive-file [options] [files | directories] tar {-t | -x} [options] [patterns]
复制代码


像其他可执行程序(如 Git)一般也会遵循类似的传参规范:


GIT(1)                             Git Manual                             GIT(1)
NAME git - the stupid content tracker
SYNOPSIS git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] [--super-prefix=<path>] [--config-env <name>=<envvar>] <command> [<args>]
复制代码


可以看到,git在设置--开头的选项的参数时就希望我们采用=赋值方式,如--git_dir=/home/domain/.git,这种方式比--git_dir /home/domain/.git更为直观。


Python 脚本的运行也采用类似的传参风格,如:


python3 search.py -v -p spam --pat=eggs foo.txt bar.txt -o results \    --speed=fast
复制代码


发布于: 17 分钟前阅读数: 7
用户头像

乌龟哥哥

关注

正在努力寻找offer的大四小菜鸟 2021.03.16 加入

擅长 Hbuilder、VS Code、MyEclipse、AppServ、PS 等软件的安装与卸载 精通 Html、CSS、JavaScript、jQuery、Java 等单词的拼写 熟悉 Windows、Linux、 等系统的开关机 看–时间过得多快,不说了,去搬砖了

评论

发布
暂无评论
Linux下可执行程序的Shell传参格式规范_6月月更_乌龟哥哥_InfoQ写作社区