command-line 相关问题

命令行是一个给命令解释器的字符串,告诉它要采取的操作,例如运行程序或复制文件。解释器使用转义和替换处理命令行。

如何显示以 RGB 十六进制值序列表示的颜色?

我有一系列 6 位十六进制值,表示 RGB 格式的颜色,例如FF0000 表示红色,FFFF00 表示黄色。这些值由空格分隔。 我在某个学期正在参加 shell 会议...

回答 1 投票 0

如何使用 dotnet test 命令行运行单个 xunit C# 测试

背景:我正在尝试运行 C# 单元测试(测试使用 Xunit Framework),我的要求是运行单个单元测试而不是整个 dll 中的所有测试。 我尝试过的事情:我尝试过一些

回答 3 投票 0

色彩管理器。从命令行创建设备。对象创建但消失了

我正在尝试从命令行为 ColorManager 创建一个显示对象(我没有,因为没有任何程序/守护进程为此运行)。我已经尝试了所有我知道的命令: dbus-发送 --syst...

回答 1 投票 0

如何在 mac 终端上将单个包合并为一个元包?

我有多个包文件,是使用 pkgbuild 创建的 pkgbuild --root /path/folder1 --install-location /Folder1 ~/pkg1.pkg pkgbuild --root /path/folder2 --install-location /Folder2 ~/pkg2....

回答 1 投票 0

使用 -File 运行 pwsh.exe 永远不会返回

我创建了简单的 Test.ps1 脚本,如下所示: echo $org = Get-VBOOrganization -Name "OrgName.onmicrosoft.com" >> Test.ps1 echo $org.Id.ToString() >> Test.ps1 然后我运行这个脚本...

回答 1 投票 0

使“ls”命令将“a”排序在“B”之前(与a->b->A->B)

我正在尝试找到一种方法以不区分大小写的方式打印 ls 命令的结果。 目前 ls 命令的结果是: 苹果 男生 图表 码头 苹果 男孩们 图表 码头 我什么...

回答 7 投票 0

如何杀死 Visual Studio 中预构建步骤中可能不存在的进程?

问题是如果这个进程不存在,构建就会失败。我尝试写这样的东西 任务列表 /nh /fi "imagename eq XDesProc.exe" |查找/i“XDesProc.exe”&&( TASKKILL /F /IM “XDesPr...

回答 2 投票 0

不使用 _cplusplus def 编译 C 文件

我正在尝试编译一个包含 jni.h 的 C 文件。 C 代码是我的 Java 调用 C 方法的包装器。 我尝试在我的机器上编译的代码示例收到了 j...

回答 2 投票 0

touch 命令不起作用,我应该使用什么来代替? [重复]

我尝试使用 VS Code 中的终端创建一个空文件,但命令行显示错误,提示该命令无法识别。我不明白出了什么问题? 这是我的错误...

回答 2 投票 0

GDALWARP如何输出ISEA(二十面体斯奈德等积)投影栅格?

使用 gdalwarp 生成 ISEA“二十面体斯奈德等面积”GEOTIFF/光栅。 使用 PROJ/GDAL 无法生成二十面体投影吗? 制作 ISEA“二十面体斯奈德等于...

回答 1 投票 0

定时器命令在 HEXCHAT 中如何工作

有一个命令我无法使用... 有人知道正确的语法吗? 用法:TIMER [-引用句柄 < num >] [-重复 < num >] < seconds> < command> 计时器 [-安静] -删除...

回答 3 投票 0

是否可以在命令行中将代码通过管道传输到 R 或 Rscript?

例如,test.R是一行文件: $ 猫测试.R # print('你好,世界!') 我们可以通过 Rscript test.R 或 R CMD BATCH test.R 运行此文件。然而,是否可以指示R执行代码...

回答 2 投票 0

Bash 和带空格的文件名

以下是一个简单的 Bash 命令行: grep -li '正则表达式' “带空格的文件名” “文件名” 没问题。另外,以下工作也很好: grep -li '正则表达式' $( 以下是一个简单的 Bash 命令行: grep -li 'regex' "filename with spaces" "filename" 没问题。另外,以下工作也很好: grep -li 'regex' $(<listOfFiles.txt) 其中 listOfFiles.txt 包含要 grep 的文件名列表,其中一个 每行文件名。 当 listOfFiles.txt 包含以下文件名时会出现问题 嵌入空间。在我尝试过的所有情况下(见下文),Bash 都会将 文件名中存在空格,例如 listOfFiles.txt 中的一行 包含类似 ./this is a file.xml 的名称最终会尝试运行 grep 每一块(./this、is、a 和 file.xml)。 我以为我是一个相对高级的 Bash 用户,但我找不到 简单的魔法咒语就能让它发挥作用。这是我拥有的东西 试过了。 grep -li 'regex' `cat listOfFiles.txt` 如上所述失败了(我真的没想到这会起作用),所以我 我想我应该在每个文件名周围加上引号: grep -li 'regex' `sed -e 's/.*/"&"/' listOfFiles.txt` Bash 将引号解释为文件名的一部分,并给出“No such 文件或目录”对于每个文件(并且 still 将文件名与 空白) for i in $(<listOfFiles.txt); do grep -li 'regex' "$i"; done 对于最初的尝试来说,这失败了(也就是说,它的行为就像 引号被忽略)并且速度非常慢,因为它必须启动一个“grep” 处理每个文件,而不是在一次调用中处理所有文件。 以下方法有效,但需要一些仔细的双重转义,如果 正则表达式包含 shell 元字符: eval grep -li 'regex' `sed -e 's/.*/"&"/' listOfFiles.txt` 这是构建命令行的唯一方法吗? 正确处理带空格的文件名吗? 试试这个: (IFS=$'\n'; grep -li 'regex' $(<listOfFiles.txt)) IFS 是内部字段分隔符。将其设置为 $'\n' 告诉 Bash 使用换行符来分隔文件名。它的默认值为 $' \t\n',可以使用 cat -etv <<<"$IFS" 打印。 将脚本括在括号中会启动一个子 shell,以便只有括号内的命令才会受到自定义 IFS 值的影响。 cat listOfFiles.txt |tr '\n' '\0' |xargs -0 grep -li 'regex' xargs 上的 -0 选项告诉 xargs 使用空字符而不是空格作为文件名终止符。 tr 命令将传入的换行符转换为空字符。 这满足了OP关于grep不能被多次调用的要求。 根据我的经验,对于大量文件,避免多次调用 grep 可以显着提高性能。 此方案还避免了 OP 原始方法中的错误,因为他的方案将在 listOfFiles.txt 包含许多超出命令缓冲区大小的文件时中断。 xargs 了解最大命令大小,并将多次调用 grep 以避免该问题。 使用 xargs 和 grep 的一个相关问题是,当使用多个文件调用时,grep 会在输出中添加文件名前缀。 由于 xargs 使用多个文件调用 grep,因此将收到带有文件名前缀的输出,但对于 listOfFiles.txt 中只有一个文件的情况或最后一次调用包含一个文件名的多次调用的情况则不会。 要获得一致的输出,请将 /dev/null 添加到 grep 命令中: cat listOfFiles.txt |tr '\n' '\0' |xargs -0 grep -i 'regex' /dev/null 请注意,这对于 OP 来说不是问题,因为他在 grep 上使用了 -l 选项;但这对其他人来说可能是个问题。 这有效: while read file; do grep -li dtw "$file"; done < listOfFiles.txt 在 Bash 4 中,您还可以使用内置的 mapfile 函数来设置包含每一行的数组并迭代该数组: $ tree . ├── a │ ├── a 1 │ └── a 2 ├── b │ ├── b 1 │ └── b 2 └── c ├── c 1 └── c 2 3 directories, 6 files $ mapfile -t files < <(find -type f) $ for file in "${files[@]}"; do > echo "file: $file" > done file: ./a/a 2 file: ./a/a 1 file: ./b/b 2 file: ./b/b 1 file: ./c/c 2 file: ./c/c 1 虽然它可能会过度匹配,但这是我最喜欢的解决方案: grep -i 'regex' $(cat listOfFiles.txt | sed -e "s/ /?/g") 请注意,如果您以某种方式在具有 Windows 行结尾的文件中得到了一个列表,\r\n,上面关于输入文件分隔符 $IFS(并引用参数)的注释都不起作用;因此,请确保行结尾正确\n(我使用scite来显示行结尾,并轻松地将它们从一种更改为另一种)。 另外,cat通过管道传输到while file read ...似乎可以工作(显然不需要设置分隔符): cat <(echo -e "AA AA\nBB BB") | while read file; do echo $file; done ...虽然对我来说,通过文件名中带有空格的目录进行“grep”更相关: grep -rlI 'search' "My Dir"/ | while read file; do echo $file; grep 'search\|else' "$ix"; done 当你的mapfile有问题时,jfgiraud的解决方案可以稍微修改一下: 要从任何源设置一个每行生成一个文件名的数组变量,请使用: IFS=$' ' avar=( $(ls -1) ) 或者 IFS=$' ' avar =( $( < listOfFiles.txt) ) ETC。 然后在参数列表中使用变量 $avar 作为 "${avar[@]}" 要查看正确的参数解析,请尝试: printf“%s " "${avar[@]}" 特别是,对于给定的问题,它将被解读为: IFS=$' ' 文件 =( $( < listOfFiles.txt) ) ; grep 'regex' -- "${files[@]}" 注: 如果 $avar 中的元素计数超过参数计数系统限制,请使用重复的 bash“子字符串扩展”,例如“${avar[@]:偏移:长度}” 最后一个 grep 选项 -- 当文件列表可能包含连字符作为第一个字母的名称时很有用。 Windows 行结尾 ' ' 可以通过消除 ' 来正确处理 ' 就在生成器中,例如 $( tr -d ' '

回答 7 投票 0

如何比较并仅显示不同文件的文件名?

我希望运行一个Linux命令,该命令将递归比较两个目录并仅输出不同的文件名。这包括一个目录中存在的所有内容,但不...

回答 7 投票 0

奇怪的子进程。Popen 管道问题

如果我运行以下代码,我可以通过带有 llama 模型的终端进行聊天,没有任何问题: 进程 = 子进程.Popen( [ “llama-cli”、“-m”、MODEL_FILE...

回答 1 投票 0

通过命令行 (-r) 运行脚本时 After Effects 崩溃,但在界面上运行良好

我在 After Effects 中运行命令行脚本时遇到了问题,确实需要一些帮助。 这是我正在使用的命令: “C:/Program Files/Adobe/Adobe After Effects 2024/Sup...

回答 1 投票 0

从 Python 调用可执行文件中的函数

我需要使用 pyinstaller 创建一个包含许多功能的可执行文件。如何使用 Python 中的参数调用这些函数?我当前的方法是使用基于可选的条件

回答 1 投票 0

在 C# 程序集中嵌入 XML 文件 - 命令行

在 C# 可执行文件中嵌入 XML 文件的常用方法是将其添加到 Visual Studio 中的项目中,然后将其“构建操作”属性更改为“嵌入资源”。 这对我们来说非常有效...

回答 2 投票 0

如何在 Mac OS X 中创建我自己的“shell”命令行程序

我想知道如何使用 Swift 和 Xcode 创建自己的命令行或 shell 程序,如“cat”、“git”等? 例如: rod -a“你好世界!” 杆--版本 rod /list -e “再见世界!”

回答 2 投票 0

bash:BASH_XTRACEFD:5:跟踪文件描述符的值无效

我想做与 shell 相同的事情 - 从脚本外部抑制 bash 执行跟踪(设置 -x) - Unix & Linux Stack Exchange 的一个。 当我进行 Bash 调试时,有时会...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.