标签: wildcard-expansion

C 主要参数

我写了一个必须显示主要参数的代码,但是当我编译它并输入“*”时,程序显示了我的文件结构。cmd 中的命令如下所示:program.exe 1 2 3 *

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const* argv[]) {
    for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果是:

program
1
2
3
program.c
program.exe
10-03-20
11-02-20
Run Code Online (Sandbox Code Playgroud)

我的问题:是否可以强制程序打印“*”而不是列出文件。

c parameters program-entry-point mingw wildcard-expansion

9
推荐指数
1
解决办法
145
查看次数

延迟bash中的通配符扩展,同时引用特殊字符

我写了一个bash脚本,以后需要做点什么.它被称为这样的东西:

later mv *.log /somewhere/else
Run Code Online (Sandbox Code Playgroud)

但是,当*.log调用时,这会在调用时扩展,并且脚本被调用就像我写的那样

later mv 1.log 2.log 3.log /somewhere/else
Run Code Online (Sandbox Code Playgroud)

我试图让我的脚本稍后扩展通配符.我试着这样称呼它

later mv '*.log' /somewhere/else
Run Code Online (Sandbox Code Playgroud)

而且\*,这些都导致通配符永远不会扩展.

如何在命令行中展开通配符?是否有一种方法可以在调用脚本时阻止扩展,即在输入原始参数时获取原始参数?

这是我的脚本的一部分,准备以后的调用:

tmpfile=$(mktemp)

### Get a quoted commandline
line=
while (( "$#" > 0 )); do
        line="$line\"$1\" "
        shift
done

### Prepare a script to be run
echo '#!/bin/bash' > "$tmpfile"
echo "cd $(pwd)" >> "$tmpfile"
echo "trap 'rm \"$tmpfile\"' EXIT" >> "$tmpfile"
echo "$line" >> "$tmpfile"
chmod 777 "$tmpfile"
Run Code Online (Sandbox Code Playgroud)

请注意,我必须引用命令行,因为我的一些文件和文件夹的名称中有空格; 如果我删除引号位,即使没有通配符的位也会停止工作.

bash wildcard-expansion

4
推荐指数
2
解决办法
1888
查看次数

/**和/*在Grunt中的目录导航方面有何不同?

这对你们来说非常简单,但我找不到这个问题的确定/正式答案.

假设我们在目录A中.然后,

"A/*"可能意味着:直接在A内的每个文件和文件夹.

"A/**"则可能意味着:A中的每个文件和文件夹,以及直接位于A内的每个子项内的每个文件和文件夹.(基本上,/*运算符的扩展遍历根文件夹的更深层) ?又名"/**"="/*/*")

我的"直接内部"术语可能是错误的.可能更好地说"直接孩子"或其他什么,但你明白了.

那么,"A/**/*"是什么意思?它等于"A/*/*/*"吗?

虽然这看起来很基本,但是当我没有运营商的正式定义时,它相当混乱.

我目前正在使用Javascript并尝试修改Gruntfile.但我想这些运营商可能出现在任何情况下.

directory wildcard-expansion gruntjs

4
推荐指数
1
解决办法
741
查看次数

停止将命令行参数中的通配符扩展为Java

我的程序必须监视与掩码匹配的文件.文件夹名称和掩码通过命令行参数传递.但是在我使用之前,面具会被第一场比赛取代!

双引号也没有效果,也没有其他符号.我尝试使用\'保护输入.然而,这个符号将被添加到args中,这是我不想要的.知道怎么解决它?

public static void main(String[] args) throws IOException {
    File dir = new File(args[0]);
    String mask = args[1];
    System.out.println(dir.getAbsolutePath());
    System.out.println(mask);
    String regex = args[2];
    System.out.println(regex);
}
Run Code Online (Sandbox Code Playgroud)

正则表达式args[2]也替换为文件夹中的某些文件.

Input: "E:\Programming\Java\Task7" *.??? ...
Ouput: E:\Programming\Java\Task7 .git Task7.iml

Input: "E:\Programming\Java\Task7" *.????* [a-zA-Z]
Output: E:\Programming\Java\Task7 .idea [a-zA-Z]

Input: "E:\Programming\Java\Task7" '.???' ...
Output: E:\Programming\Java\Task7 '.???' ...

Input: "E:\Programming\Java\Task7" \\'.???'\\ ...
Output: E:\Programming\Java\Task7 \'.???'\ ...
Run Code Online (Sandbox Code Playgroud)

我知道使用引号或反斜杠并不是一个坏主意,但我认为存在更好的方法.

java shell cmd wildcard-expansion

3
推荐指数
1
解决办法
1263
查看次数

snakemake配置参数值是否可以插入/扩展{<name>}值的字符串?

有没有办法在.yaml文件中定义snakemake配置字符串,以便它可以包含{wildcard}和{param}值,并且当在shell命令中使用该字符串时,{<name>}值将替换为"<name>"的实际值?

例如,假设您希望配置字符串定义要作为参数传递给程序的字符串格式:

RG:"ID:{ID} REP:{REP}"

其中上面是.yaml文件,ID和REP是通配符,shell命令会将展开的字符串作为参数传递给程序.

wildcard-expansion parameter-expansion snakemake

1
推荐指数
1
解决办法
1323
查看次数