我想在目录中的所有JavaScript文件中grep函数调用'init()'.我如何使用grep执行此操作?
特别是,我如何逃避括号,()?
试图采取这种进一步的一步,这怎么可能工作在一个标准的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) 尝试使用带有该行的bash脚本中的sed更改文本文件中的值,
sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp
Run Code Online (Sandbox Code Playgroud)
这将是一个for循环.不知道为什么它不起作用.有什么建议?
我很好奇,为什么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) 尝试用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标志有什么作用?
我需要将这些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) 我写了一个小程序,从中获取一些输入参数*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)
......正如所希望的那样.
所以,我的问题是:
""是字符串和''单个字符.那么为什么我在使用时会得到所需的结果'',而不是在""我应该使用时(根据我的理解)?我的代码的相关部分:
// 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*缓冲区中并附加一个缓冲区 …
我经常在我的提交中使用反引号字符.我也经常使用git commit -m
当我运行这样的命令
git commit -m "add `foo`"
Run Code Online (Sandbox Code Playgroud)
Bash试图执行foo.
我可以使用反斜杠\来逃避反击,但我希望有一个更好的解决方案,以避免一直逃避反击.
我只是想知道如何在单引号内回显变量(我使用单引号,因为字符串中有引号).
echo 'test text "here_is_some_test_text_$counter" "output"' >> ${FILE}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
我有以下bash脚本,对于找到的每个图像重复.它需要迭代所有html,css和js文件,并替换该文件中所有出现的图像.
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:无法读取:没有这样的文件或目录但是我已经有了引号{} …