相关疑难解决方法(0)

如何在grep中转义括号

我想在目录中的所有JavaScript文件中grep函数调用'init()'.我如何使用grep执行此操作?

特别是,我如何逃避括号,()

grep escaping

57
推荐指数
2
解决办法
6万
查看次数

通过命令行在git提交消息中使用撇号(单引号)?

试图采取这种进一步的一步,这怎么可能工作在一个标准的bash shell:

git commit -m 'cracked enigma's code'
Run Code Online (Sandbox Code Playgroud)

这可以简单地用反斜杠转义完成,如下所示:

git commit -m 'cracked enigma\'s code'
Run Code Online (Sandbox Code Playgroud)

此外,如何使用双引号?还通过反斜杠逃避?那会是最好的方式吗?有没有好的替代方法?

git commit -m 'cracked the "real" enigma's code'
Run Code Online (Sandbox Code Playgroud)

git bash escaping

54
推荐指数
2
解决办法
2万
查看次数

用bash变量替换sed

尝试使用带有该行的bash脚本中的sed更改文本文件中的值,

sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp
Run Code Online (Sandbox Code Playgroud)

这将是一个for循环.不知道为什么它不起作用.有什么建议?

bash sed substitution

52
推荐指数
3
解决办法
6万
查看次数

为什么sed需要3个反斜杠才能获得常规反斜杠?

我很好奇,为什么sed \只需要识别一个?我明白它需要2,但我不知道.

编辑:这是我的Windows计算机上的一个例子,使用Cygwin:

$ echo "sample_input\whatever" | sed "s/\\\/\//"
sample_input/whatever
Run Code Online (Sandbox Code Playgroud)

如果我不添加3个反斜杠,我会得到一个

sed: -e expression #1, char 7: unterminated s' command
Run Code Online (Sandbox Code Playgroud)

regex sed

42
推荐指数
3
解决办法
6万
查看次数

什么sudo -H做什么?

尝试用pip安装virtualenv之后

$ pip install virtualenv
Run Code Online (Sandbox Code Playgroud)

我得到了一个允许拒绝错误

IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py'
Run Code Online (Sandbox Code Playgroud)

所以我用sudo来安装virtualenv

$ sudo pip install virtualenv
Run Code Online (Sandbox Code Playgroud)

但随后出现了警告:

目录'/ Users/petertao/Library/Caches/pip/http'或其父目录不归当前用户所有,并且已禁用缓存.请检查该目录的权限和所有者.如果用sudo执行pip,你可能需要sudo的-H标志.

目录'/ Users/petertao/Library/Caches/pip'或其父目录不归当前用户所有,并且已禁用缓存轮.检查该目录的权限和所有者.如果用sudo执行pip,你可能需要sudo的-H标志.

sudo的-H标志有什么作用?

python terminal sudo pip virtualenv

42
推荐指数
1
解决办法
2万
查看次数

使用Bash变量构建JSON字符串

我需要将这些bash变量读入我的JSON字符串,我不熟悉bash.任何帮助表示赞赏.

#!/bin/sh

BUCKET_NAME=testbucket
OBJECT_NAME=testworkflow-2.0.1.jar
TARGET_LOCATION=/opt/test/testworkflow-2.0.1.jar

JSON_STRING='{"bucketname":"$BUCKET_NAME"","objectname":"$OBJECT_NAME","targetlocation":"$TARGET_LOCATION"}'


echo $JSON_STRING 
Run Code Online (Sandbox Code Playgroud)

bash json quoting

35
推荐指数
8
解决办法
3万
查看次数

传递包含"!!!!"的字符串时argv的奇怪行为

我写了一个小程序,从中获取一些输入参数*argv[]并打印它们.几乎在所有用例中,我的代码都运行得很好.只有在我想要作为参数传递的字符串末尾使用多个感叹号时才会出现问题...

这有效:

./program -m "Hello, world!"
Run Code Online (Sandbox Code Playgroud)

这不起作用:

./program -m "Hello, world!!!!"
Run Code Online (Sandbox Code Playgroud)

^^如果我这样做,程序输出要么是该字符串的两倍,要么是我在./program之前输入的命令.

但是,我绝对不明白:以下,奇怪的是,它的工作原理:

./program -m 'Hello, world!!!!'
Run Code Online (Sandbox Code Playgroud)

^^输出正是......

Hello, world!!!!
Run Code Online (Sandbox Code Playgroud)

......正如所希​​望的那样.

所以,我的问题是:

  • 为什么在字符串中使用多个感叹号时会出现这种奇怪的行为?
  • 据我所知,在C语言中,你使用的""是字符串和''单个字符.那么为什么我在使用时会得到所需的结果'',而不是在""我应该使用时(根据我的理解)?
  • 我的代码中是否有错误或者我需要更改哪些内容才能输入任何字符串(无论是否,使用了什么,以及使用了多少个标点符号)并准确打印出该字符串?

我的代码的相关部分:

// this is a simplified example that, in essence, does the same 
// as my (significantly longer) code
int main(int argc, char* argv[]) {
    char *msg = (char *)calloc(1024, sizeof(char));

    printf("%s", strcat(msg, argv[2])); // argv[1] is "-m"

    free(msg);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试先将内容复制argv[2]char*缓冲区中并附加一个缓冲区 …

c bash quotes argv

31
推荐指数
3
解决办法
2507
查看次数

忽略bash反引号执行而不转义git commit中的`字符

我经常在我的提交中使用反引号字符.我也经常使用git commit -m

当我运行这样的命令

git commit -m "add `foo`"
Run Code Online (Sandbox Code Playgroud)

Bash试图执行foo.

我可以使用反斜杠\来逃避反击,但我希望有一个更好的解决方案,以避免一直逃避反击.

git bash

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

如何在单引号字符串中使用变量?

我只是想知道如何在单引号内回显变量(我使用单引号,因为字符串中有引号).

     echo 'test text "here_is_some_test_text_$counter" "output"' >> ${FILE}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激

string bash shell echo

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

sed给出:sed:无法读取:没有这样的文件或目录

我有以下bash脚本,对于找到的每个图像重复.它需要迭代所有html,cssjs文件,并替换该文件中所有出现的图像.

 for image in app/www/images-theme-dark/*.png
    do
        echo "installing icon" $image

        # extract filename from iconpath
        iconfile=$(basename $image)
        iconPath="images/"$(basename $image)

        # replace paths in all files containing icon paths
        find app/www -type f \( -name "*.html" -or -name "*.css" -or -name "*.js" \
                            -or -name "*.appcache" \)  \
            -exec sed -i '' -e 's|$iconPath|images-theme-dark/$iconfile|g' "{}" \;

    done
Run Code Online (Sandbox Code Playgroud)

但是当我运行脚本时sed给出:

sed: can't read : No such file or directory

在StackOverflow上我发现sed:无法读取:没有这样的文件或目录但是我已经有了引号{} …

bash sed quoting gnu-sed

24
推荐指数
3
解决办法
3万
查看次数

标签 统计

bash ×7

sed ×3

escaping ×2

git ×2

quoting ×2

argv ×1

c ×1

echo ×1

gnu-sed ×1

grep ×1

json ×1

pip ×1

python ×1

quotes ×1

regex ×1

shell ×1

string ×1

substitution ×1

sudo ×1

terminal ×1

virtualenv ×1