Articles of 命令行参数

为什么subprocess.Popen参数长度限制小于操作系统报告的限制?

我在Linux 3.16.0上运行Python 3.4.3。 我想使用subprocess.Popen来运行一个长单参数(一个复杂的Bash调用),大约200KiB的命令。 根据getconf和xargs ,这应该是在我的范围内: $ getconf ARG_MAX 2097152 $ xargs –show-limits < /dev/null Your environment variables take up 3364 bytes POSIX upper limit on argument length (this system): 2091740 POSIX smallest allowable upper limit on argument length (all systems): 4096 Maximum length of command we could actually use: 2088376 Size of command buffer […]

将pipe道焦油提取成焦油创build

我现在有一个tar.gz,我想从中提取一个或两个文件,并将它们打包/添加到一个新的tar.gz中。 当然,我可以保存到一个临时文件并使用它,但是ABSOLUTE的要求是不需要任何中间文件输出即pipe道。 换句话说,我想要的是像下面的伪代码(显然语法是不正确的) tar -xvf first.tar.gz subdir1/file1 subdir2/file2 | tar cf – | gzip > second.tar.gz 有谁知道这个适当的语法? 我已经尝试了很多变种,但无济于事。 我也很喜欢使用cpio的想法,但是又一次,我被如何正确地获得语法所困扰,并且从我的理解中,cpio只会使用档案或文件名,而不是文件。 任何帮助将不胜感激。 编辑:在压缩包内没有特定的文件名模式来提取。 鉴于BSD和GNU tar一次只能search一个模式,我不确定是否甚至可以分别使用include / exclude标志。

在Linux中隐藏C程序的命令行参数

如何隐藏在Linux中运行的C程序的命令行参数,使其不能被其他用户通过“w”,“ps auxwww”或类似命令看到?

在cli中指定Python模块

我试图从Linux的SSH安全壳命令行环境运行一个python脚本,我试图导入argparse库,但它会给出错误:“ImportError:No module named argparse”。 我认为这是因为Linux shell所使用的Python环境没有argparse库,我想我可以修复它,如果我能findPython环境使用的库的目录,将argparse库复制到它,但我无法find该目录所在的位置。 我将不胜感激find这个目录的任何帮助(我想我可以将argparse库包含在我的python脚本所在的目录中,但是我更愿意在其他Python库所在的地方拥有argparse库,因为它应该)。

在C / C ++中创build一个unix / linux命令行工具的最佳做法是什么?

我目前负责为内部开发团队创build一些命令行帮助工具。 但是,我想知道创buildunix命令行工具的最佳实践。 我已经尝试查看git源代码 ,以了解如何读取参数并相应地显示消息的示例。 然而,我正在寻找一个清晰的模板来创build一个工具,安全地读取参数,并显示标准的“帮助”消息,如果用户键入一个不正确的参数或帮助我想显示帮助信息。 是否有一个标准的库阅读-abcFGH和 – –parameter和切换哪个进程基于传递的参数启动? 命令行: git 要么 git –help 输出: usage: git [–version] [–exec-path[=<path>]] [–html-path] [–man-path] [–info-path] [-p|–paginate|–no-pager] [–no-replace-objects] [–bare] [–git-dir=<path>] [–work-tree=<path>] [–namespace=<name>] [-c name=value] [–help] <command> [<args>] … 命令行: MyTool CommandName –CommandArgs 输出: 无论具体的命令如何 我到目前为止工作的是: 码: int main(int argc, char **argv) { if(argc < 2) helpMessage(); char* commandParameter = argv[1]; […]

具有多个参数的xargs

我有一个源input, input.txt a.txt b.txt c.txt 我想将这些input提供给一个程序,如下所示: my-program –file=a.txt –file=b.txt –file=c.txt 所以我尝试使用xargs ,但没有运气。 cat input.txt | xargs -i echo "my-program –file"{} 它给 my-program –file=a.txt my-program –file=b.txt my-program –file=c.txt 但我想要 my-program –file=a.txt –file=b.txt –file=c.txt 任何想法?

在bash中输出*的长度限制是多less?

在Bash echo * 几乎等于ls 。 你可以做类似的事情 echo */*-out/*.html > all-my-html-files-on-one-line 由于*是一个命令行参数,所以应该有一个长度的限制。 这是什么限制? echo Bash命令和/bin/echo程序之间的限制是不同的?

最大数量的Bash参数!=最大数量cp参数?

我最近一直在复制和移动大量的文件(〜400,000)。 我知道在Bash命令行上可以扩展的参数数量有限制,所以我一直使用xargs来限制生成的数字。 出于好奇,我想知道我可以使用的参数的最大数量是多less,而且我发现这个post说这是系统相关的,我可以运行这个命令来找出: $ getconf ARG_MAX 令我惊讶的是,我回来的那个小女孩是: 2621440 刚超过260万 。 正如我所说,我正在操作的文件数量远远less于这个数字 – 大约是40万。 我肯定需要使用移动和复制这些文件的xargs方法,因为我尝试使用正常的mv * …或cp * …并且得到了“参数列表太长”的错误。 那么, mv和cp命令对于我可以使用的参数数量有自己的固定限制(我在man手册中找不到任何东西),还是我错过了一些东西?

如何在Linux中启动GDB时传递命令行参数?

我必须debugging一个有错误的程序,作为我的任务的一部分。 不过,我必须先通过命令行参数来解决这个问题。 我做: gdb -tui InsertionSortWithErrors 哪些工作,但之后,我不知道如何传递论据。 我使用gdb -help ,它说了一些关于–args ,我也试过了,它不起作用。 我希望能够得到debugging器+ gui并传递命令行参数。

从任务pipe理器启动进程并隐藏命令行参数

我不知道这个问题是更适合的Stackoverflow或超级用户或什么StackExchange网站… 基本上我从C#启动了第三方应用程序与Process.Start与几个命令行参数。 其中一个命令行参数是密码。 我认为我在我的应用程序的每个地方都确保密码的安全性,除非在任务pipe理器中打开“进程”选项卡,否则可以添加“命令行”列并查看所有这些命令行参数。 任何人都可以想到一种方式来启动一个进程,以某种方式隐藏命令行参数? 这可能吗? 谢谢! 编辑: 这是一个Windows服务包装plink.exe(SSH /腻子的东西)。 如果我没有在命令行中指定密码,它会提示input密码,但我得到这个奇怪的警告: Plink.exe – 3/30/2013 2:40:47 PM – Attempting keyboard-interactive authentication Plink.exe – 3/30/2013 2:40:47 PM – Server refused keyboard-interactive authentication Plink.exe – 3/30/2013 2:40:49 PM – user@hostname.com's password: 我已经指定redirect标准input,但也许我会继续寻找,看看我是否可以解决它。 另外,正如大卫·赫弗南(David Heffernan)所build议的那样,我将进一步研究“选美”。 谢谢大家 – 一旦找出更好的解决scheme,我会发布更新!