相关疑难解决方法(0)

如何正确转义Makefile的数据?

我正在config.mk使用一个将由Makefile使用的bash脚本动态生成.该文件构造为:

cat > config.mk <<CFG
SOMEVAR := $value_from_bash1
ANOTHER := $value_from_bash2
CFG
Run Code Online (Sandbox Code Playgroud)

如何确保生成的文件确实包含内容$value_from_bash*,而不是扩展/解释的内容?我可能需要逃避$$$\\\,但是否有其他字符需要进行转义?也许有一个我没有听说过的特殊字面作业?

太空似乎也很麻烦:

$ ls -1
a b
a
$ cat Makefile
f := a b
default_target:
    echo "$(firstword $(wildcard ${f}))"
$ make
a
Run Code Online (Sandbox Code Playgroud)

如果我使用f := a\ b它的工作原理(使用引号f := 'a b'也不起作用,makefile只会将其视为常规字符)

bash makefile escaping

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

如何使用echo编写非ASCII字符?

如何使用echo 编写非ASCII字符?是否有转义序列,例如\012或类似的东西?

我想使用以下方法将ASCII字符附加到文件:

echo ?? >> file
Run Code Online (Sandbox Code Playgroud)

linux bash ascii echo non-ascii-characters

30
推荐指数
4
解决办法
5万
查看次数

如何在Bash/Grep中删除单引号?

我想用grep搜索一个如下所示的字符串:

something ~* 'bla'
Run Code Online (Sandbox Code Playgroud)

我试过这个,但是shell删除了单引号argh ..

grep -i '"something ~* '[:alnum:]'"' /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

什么是正确的搜索?

linux bash grep escaping

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

如何在ssh/remote bash命令中转义单引号字符?

我正在构建一小组脚本来远程启动,停止和检查进程的状态.在stop这些脚本应该寻找一个过程,并杀死它.因此,我做:

ssh deploy@hera 'kill -9 `ps -ef | grep MapReduceNode | grep -v "grep" | awk -F " " '{print $2}' | head -n 1`'
Run Code Online (Sandbox Code Playgroud)

这里的问题是awk标记化步骤需要单引号,并且这些单引号与用于通过ssh执行远程命令的单引号冲突.这些单引号如何被转义?

ssh bash quoting

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

如何在设置别名时转义单引号

想要创建此命令的别名

find . -name '*.sh' -exec chmod a+x '{}' \;
Run Code Online (Sandbox Code Playgroud)

并且在设置别名时我无法转义单引号

alias mx='find . -name '*.sh' -exec chmod a+x '{}' \;'
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

bash

17
推荐指数
3
解决办法
7321
查看次数

zsh或bash是否有引用英文文本的引号?

如果我使用单引号,带撇号("不要")的单词很难逃脱:

'Don'"'"'t do that'
Run Code Online (Sandbox Code Playgroud)

如果我使用双引号,美元符号和惊叹号将其绊倒:

"It cost like \$1000\!"
Run Code Online (Sandbox Code Playgroud)

我可以使用另一种引用吗?

编辑:我还应该补充一点,我想直接将此字符串作为命令行参数传递,而不是将其存储在变量中.为此,我尝试使用DigitalRoss的解决方案,

$ echo "$(cat << \EOF 
Don't $worry be "happy".
EOF)"
Run Code Online (Sandbox Code Playgroud)

但得到

dquote cmdsubst> 
Run Code Online (Sandbox Code Playgroud)

点击后输入:/.所以在这一点上,ZyX的建议setopt rcquotes看起来是最方便的.

bash quotes zsh escaping

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

合并具有数字排序的pdf文件

我正在尝试编写一个bash脚本,将目录的所有pdf文件合并为一个pdf文件.该命令pdfunite *.pdf output.pdf成功实现了此功能,但它按正常顺序合并输入文档:

1.pdf
10.pdf
11.pdf
2.pdf
3.pdf
4.pdf
5.pdf
6.pdf
7.pdf
8.pdf
9.pdf
Run Code Online (Sandbox Code Playgroud)

虽然我希望文档以数字顺序合并:

1.pdf
2.pdf
3.pdf
4.pdf
5.pdf
6.pdf
7.pdf
8.pdf
9.pdf
10.pdf
11.pdf
Run Code Online (Sandbox Code Playgroud)

我猜命令混合ls -vsort -npdfunite会做的伎俩,但我不知道如何将它们结合起来.关于如何将pdf文件与数字排序合并的任何想法

linux pdf sorting bash numeric

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

在 bigquery 的 bq 命令行工具中转义查询的引号字符

我也尝试使用 bq 命令行自动生成新的每日表

bq query \
  --destination_table=<destination> \
  --allow_large_results \
  --noflatten_results \
  '<query>'
Run Code Online (Sandbox Code Playgroud)

下面给出了哪里。问题在于sql查询中存在一堆单引号和双引号,并且bq命令行工具也是使用单引号来划分要执行的查询。

所以我知道问题是我必须转义引号,但我不知道该怎么做。我尝试将查询中的单引号替换为“\'”(不带双引号),但这没有帮助,而且似乎是合乎逻辑的做法。我认为有一些明显我没有做的事情,所以希望有人可以帮助我,而不需要做很多工作。

SELECT
  time,
  userId,
  deviceId,
  systemName,
  LEFT(systemVersion,3) AS systemVersionMajor,
  systemVersion AS systemVersionMinor,
  deviceModel,
  appVersion,
  country,
  city,
  firstRun,
  priorTimeSpentInApp,
  priorSessions,
  priorEvents,
  event_name,
  event_info,
  event_time,
  event_value,
  MAX(CASE WHEN user_attribute.Name = 'Gen_Total_Sessions' THEN FLOAT(user_attribute.Value) END) AS Gen_Total_Sessions.attr,
  MAX(CASE WHEN user_attribute.Name = 'Gen_Last_Achievement' THEN STRING(user_attribute.Value) END) AS Gen_Last_Achievement.attr,
  MAX(CASE WHEN event_parameters.Name = 'Gamemode' THEN STRING(event_parameters.Value) END) AS Gamemode.param,
  MAX(CASE WHEN event_parameters.Name = 'Player_Level' THEN FLOAT(event_parameters.Value) END) AS Player_Level.param,

FROM
  TABLE_QUERY([projectId:dataSet], …
Run Code Online (Sandbox Code Playgroud)

escaping google-bigquery

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

如何转义`jq`中的单引号

我正在尝试使用预期输出来格式化 json 字符串,jq如下所示:

[
  {
    "command": [
      "printf 'this is a text'"
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

但是,我无法让它适用于单引号('),例如$ jq -n '[{"command": ["printf 'this is a text'"]}]'给我一个编译错误。

我还考虑过转义所有双引号,例如jq -n "[{\"command\": [\"printf 'this is a text'\"]}]",这很好,但是 json 字符串是从函数传入的,我可以\"先替换所有双引号,然后运行 ​​jq 命令,但这不是很优雅。

有没有更好的方法来处理 json 字符串中的单引号?

shell formatting json quotation-marks jq

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

Git中的特殊角色可能吗?

我很高兴我在rails代码中修复了这个愚蠢的错误,我很乐意在终端输入以下内容:

git add .
git commit -am "Finally fixed that difficult bug!"
Run Code Online (Sandbox Code Playgroud)

只是发现git不喜欢"!".有谁知道我可以将它纳入我的提交消息的方式?

git

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