我使用中提供的函数bash从c++代码运行命令。我的问题不是关于实现,而是与我的问题相关的一件事,是我必须在一行上运行多个命令。systemcstdlibc++
例如,我运行包含在另一个目录中的 gnuplot 脚本。所以我的命令如下:
cd some/path; gnuplot -e gnuplot_file.gp; cd - > /dev/NULL
Run Code Online (Sandbox Code Playgroud)
cd由于个人原因,这两个命令都很重要。我也想“隐藏”输出/dev/NULL.
这是我的问题:我怎么知道gnuplot命令的退出状态?知道它是否失败就足够了。
我的问题是我目前获得了最后一个命令的退出状态,即使gnuplot失败也是如此。
我知道如果我使用&&而不是;,如果前一个命令失败并且退出状态将为假,则不会执行最后一个命令。但是我需要执行最后一个命令...
解决方法是什么?
我在我的树莓派上使用 RASPBIAN。我发现命令“apropos”是命令“wahtis”的符号链接。但是,当使用相同的参数时,这些命令的输出不匹配:
$ whatis delete
delete: nothing appropriate.
Run Code Online (Sandbox Code Playgroud)
但
$ apropos delete
argz_delete (3) - functions to handle an argz list
delete_module (2) - unload a kernel module
dphys-swapfile (8) - set up, mount/unmount, and delete an swap file
git-branch (1) - List, create, or delete branches
git-replace (1) - Create, list, delete refs to replace objects
git-symbolic-ref (1) - Read, modify and delete symbolic refs
git-tag (1) - Create, list, delete or verify a tag object signed
***output is …Run Code Online (Sandbox Code Playgroud) 我认为任何命令的参数位置都是不固定的。
例如,cp -r ./abc ./def并且cp ./abc ./def -r是相同的,grep -rnH hello .并且grep hello . -rnH是相同的......
但是,今天我在使用的时候ldd,发现我错了。因为ldd -r x.so和ldd x.so -r不一样。第二个命令给了我一个错误:
ldd: ./-r: No such file or directory
Run Code Online (Sandbox Code Playgroud)
为什么我们不能改变参数的位置ldd?
我在一份关于 Linux shell 命令的非官方文档中读到h:它与help和man命令一起提到,没有任何解释。所以我在我的 linux 终端上尝试了它,但它返回了一个“找不到命令”。我在互联网上搜索了一些东西,但没有发现任何有用的东西。有谁知道这个命令是否存在?如果是这样,它的语法是什么以及它是如何工作的?
我有一个上周未能完成的 shell 脚本;这是一个失败的“ cd”命令,如果失败则退出。
该脚本是bash用于配置新 Debian 安装的shell 脚本。这是完整的脚本:debianConfigAswome.sh。该脚本以 root 身份运行,因此它可以完全访问文件系统。
您能否列出脚本无法成功执行cd命令的所有原因以及如何避免错误?
是否有一个终端命令来删除包含给定文本的文件?
假设我有三个文件,其中一些包含文本“extract($_REQUEST)”:
file-1.php:此文件包含文本“extract($_REQUEST)”file-2.txt: 我不file-3.html:此文件包含文本“extract($_REQUEST)”我正在寻找的命令将删除文件:file-1.php和file-3.html.
更新:该文件仅当“extract($_REQUEST)”是文件中唯一的文本行时才应删除该文件。请参阅以下示例:
file-4.php:此文件JUST包含文本“提取物($ _ REQUEST)”file-5.php: 该文件包含文本“extract($_REQUEST)”和其他文本行然后命令将删除file-4.php并且不会删除file-5.php。
例如,inrm -r abc* "*"表示任何字符串。但是,如果我们使用它touch abc* abcd* abcde*(并且目录中没有任何以 abc 或 abcd 或 abcde 开头的文件)"*"意味着只是一个符号,并且abc* abcd* abcde*将创建文件。如果在那之后我们将使用touch -m ab*的文件的修改时间abc* abcd* abcde*将会改变。
为什么在某些情况下"*"意味着任何字符串,而在某些情况下它只是一个符号?计算机如何知道何时更改其含义?
我正在尝试运行:
$ nbtstat -a 192.168.183.147
bash: nbtstat: command not found
Run Code Online (Sandbox Code Playgroud)
和:
$ sudo nbtstat -a 192.168.183.147
bash: nbtstat: command not found
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我收到此错误消息?一次!我刚刚安装了 nbtstat 工具。
谢谢
当我第一次想向-h我的程序添加一个选项时,我偶然发现了一个-h已经在使用的错误:使用add_help=True,Python 会argparse自动为参数-h和--help.
但是对于大多数程序来说,同时使用-hand--help来显示帮助页面不是这样的,是吗?哪些流行的命令甚至有-h缩写--help?我查看了一些命令,通常它是--human-readable或其他与帮助无关的选项的缩写。使用-h您的帮助消息不工作,ls,cd,df和diff例如-短短的命令是我测试过,当然不是一个详尽的或代表名单,但很受欢迎的命令。
可能-h在历史上一直用作显示帮助页面的默认参数,--help后来才出现?man或info页面从哪里进入?
-h如果这是流行的默认设置,我不想通过使用帮助页面以外的其他内容来混淆用户。但是,就个人而言,我从未使用过-h并且一直在使用--help.
我遇到过符号链接指向其他符号链接的情况,导致我不得不运行多个 ls 命令来尝试跟踪基本文件的存储位置。例如,如果我想知道在 centos 上运行的 java 程序的位置,我通常从 /bin/java 开始,并且在找到实际文件的位置之前必须深入 3-4 个符号链接。
是否有一个简单的 clean 命令可以跟踪所有符号链接,直到找到一个真正的文件并给我基本文件的位置?