我倾向于在经常使用的文件和文件夹前面加上“重音符号”字符(非移位波浪号、反勾号或普通的旧口音,whathaveyou..),因为它很容易理解,让我来看看按字母顺序排序,同时让我选择在顶部显示一些项目。它运行良好,除非我通过 CLI 或 SSH/SCP 访问这些文件。
如果我尝试运行命令,调用未转义的文件?它让我进入一个交互式会话......例如?
# scp -r dns.local:/`Downloads/CrazyRussianCars/ ~/
?
>
Run Code Online (Sandbox Code Playgroud)
然而,如果我尝试合乎逻辑的解决方案?
# scp -r dns.local:/\`Downloads/CrazyRussianCars/ ~/
?
bash: -c: line 0: unexpected EOF while looking for matching ``'
bash: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
我知道“新”规则是使用像export NOW=$(date)vs export NOW=
`date`这样的语法 (实际上,我什至用 SE MD 语法编写后者...),但这与ENV脚本或任何脚本无关。 ..
注意: 这是一个 Mac OS X 环境,但也就是说,GUI 在日常处理这个字符时从来没有遇到过问题,通常,如果终端中出现语法问题,Apple在禁用 GUI 中的行为方面做得非常好......不确定这是否是一个错误,或者处理此类路径的技术是否只是晦涩难懂......但到目前为止,我一直无法找到方式“逃避它”?
我们在传递查询字符串时遇到了 Apache mod_rewrite 行为的一个奇怪问题(也许是一个错误?)。
为了重现,我们使用默认的 Apache 配置设置了一个干净的 Ubuntu (oneiric) 安装。我们启用了 mod_rewrite,并且在默认站点配置中,我们添加了以下内容:
RewriteEngine on
RewriteRule ^/(.*)$ /r/$1 [R]
Run Code Online (Sandbox Code Playgroud)
为了测试,我们使用 curl:
curl -I 'http://[ubuntu-machine]/a/b%20c?a%20b'
Run Code Online (Sandbox Code Playgroud)
相关输出是:
HTTP/1.1 302 Found
Server: Apache/2.2.20 (Ubuntu)
Location: http://[ubuntu-machine]/r/a/b%20c?a%2520b
Run Code Online (Sandbox Code Playgroud)
如您所见,查询字符串被双重转义,这是错误的。有谁知道我们如何解决这个问题?我们尝试了几件事:
/的a和b部分之间被转义。手动取消转义查询字符串。
RewriteCond %{QUERY_STRING} .*
RewriteMap unescape int:unescape
RewriteRule ^(.*)$ $1?${unescape:%{QUERY_STRING}}
Run Code Online (Sandbox Code Playgroud)
然而,这意味着我们无法区分查询字符串中的an&和 an 转义&符。
更新:
此错误报告描述了相同的问题。第一条评论链接到一个明显解决问题的提交,但正如 Pieter 在下面所说的,它似乎并没有真正修复。
我正在寻找字面上具有大于字符(“>”)后跟空格后跟反斜杠字符(“\”)的行,即具有以下内容的行:> \
我认为转义会允许这样做,并且对于比它更大的:
$ ack-grep "\> "
返回包含“>”的行。
但是当我也尝试逃避反斜杠时,我得到:
$ ack-grep "\> \\"
ack-grep: 无效的正则表达式 '\> \':
正则表达式 m/\> / 中的尾随 \
我的单元文件看起来像这样(已经\x20像文档所说的那样尝试转义空格):
[Unit]
Description=My Service
[Service]
Type=simple
WorkingDirectory=/home/cobra/my\x20service/
ExecStart=/home/cobra/my\x20service/start.sh
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
但是当尝试启动它时,它失败并显示以下消息:
Failed at step CHDIR spawning /home/cobra/my service/start.sh: No such file or directory
myservice.service: main process exited, code=exited, status=200/CHDIR
Run Code Online (Sandbox Code Playgroud)
给出从此错误消息stat返回的路径:
File: ‘/home/cobra/my service/start.sh’
Size: 280 Blocks: 8 IO Block: 4096 regular file
Device: 903h/2307d Inode: 4718912 Links: 1
Access: (0754/-rwxr-xr--) Uid: ( 1000/ cobra) Gid: ( 1000/ cobra)
Access: 2015-05-24 22:42:12.702657594 +0200
Modify: 2015-03-27 22:28:05.682531000 +0100
Change: 2015-05-24 22:40:58.830298787 +0200
Birth: -
Run Code Online (Sandbox Code Playgroud)
我无法从文件名中删除空格,因为我尝试运行的服务出于某种原因需要它们。
我哪里错了?
我希望 rsyslog 以 JSON 格式编写日志消息,这需要在字符串周围使用双引号 (")。
问题是有时值本身包含双引号,并且需要转义这些值 - 但我不知道如何做到这一点。
目前我的 rsyslog.conf 包含我使用的这种格式(有点简化):
$template JsonFormat,"{\"msg\":\"%msg%\",\"app-name\":\"%app-name%\"}\n",sql
Run Code Online (Sandbox Code Playgroud)
但是当一个包含双引号的 msg 到达时,JSON 就会被破坏,例如:
user pid=21214 uid=0 auid=4294967295 msg='PAM setcred:
user="oracle" exe="/bin/su" (hostname=?, addr=?, terminal=?
result=Success)'
Run Code Online (Sandbox Code Playgroud)
变成:
{"msg":"user pid=21214 uid=0 auid=4294967295 msg='PAM setcred:
user="oracle" exe="/bin/su" (hostname=?, addr=?, terminal=?
result=Success)'","app-name":"user"}
Run Code Online (Sandbox Code Playgroud)
但我需要它成为:
{"msg":"user pid=21214 uid=0 auid=4294967295 msg='PAM setcred:
user=\"oracle\" exe=\"/bin/su\" (hostname=?, addr=?, terminal=?
result=Success)'","app-name":"user"}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为 PHP 应用程序定义一些环境变量,但其中一个变量包含“$”符号。当我使用 测试配置文件时nginx -t,我收到一条错误消息,告诉我变量不存在。好像把“$”后面的文字解释为变量名,当然没有定义。
也许我没有在正确的地方搜索,但我找不到有关如何转义“$”字符的信息。这可能吗?怎么做?
更新:我尝试在 d3ag0s 的评论之后将值括在单引号和双引号之间,但我收到了相同的错误消息。
我正在尝试使用解释器运行 shell 片段bash。使用该-c标志允许我直接向命令行提供命令,而无需写入文件。这是我的使用所必需的。
工作示例:
$ bash -c 'free -m'
Run Code Online (Sandbox Code Playgroud)
问题是我想要运行的实际 shell 片段中有单引号。
find / -type f -size +50M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
Run Code Online (Sandbox Code Playgroud)
我认为简单地转义引号就可以了:
$ bash -c 'find / -type f -size +50M -exec ls -lh {} \; | awk \'{ print $9 ": " $5 }\''
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。它不执行该命令。
此外,同样的问题,我需要能够从命令行执行 Node.js,而不写入文件。
$ node -e 'console.log("hello");'
Run Code Online (Sandbox Code Playgroud)
上面的方法有效,但是:
$ node -e 'console.log('hello');'
and
$ node -e 'console.log(\'hello\');'
Run Code Online (Sandbox Code Playgroud)
两者都打破。
有想法吗?谢谢。
在 SSH 终端上,有一个命令接管终端窗口,它说我可以按 Esc 键结束它。
我的 SSH 终端不处理转义键。Ctrl我可以在其位置使用的转义序列(+something)是什么。(或者有没有)
我可以断开 SSH 连接并再次连接,但我想我会继续检查是否有转义键的转义序列。这甚至会起作用吗?
我有以下路径:
“d:\workspace\Server 主干 - CI\make\make & publish.bat”
但是,当我尝试从 cmd shell 执行此操作时,出现错误:
'd:\workspace\Server' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我究竟做错了什么?有没有办法正确地逃离这些空间?
我有一个 mysqldump 文件,我想在其中替换以下文本<a href="/tag/,<a href="http://www.mydomain.com/tag/但找不到正确转义所有特殊字符的方法。
我正在使用以下命令(+ 一些其他变体),
cat wordpress_posts.sql | sed 's%/<a href="\/\tag\/\/<a href="\http:/\/\www.mydomain.com/\tag/\/%g' > wordpress_posts_new.sql
但它不起作用。
有人可以帮忙吗?
更新 1:结果是 mysqldump 中的源字符串不是<a href="/tag/但<a href=\"/tag/(注意等号后面的额外反斜杠)
这是 SQL 文件的一行的 pastebin,其中包含我要替换的字符串:http://pastebin .com/8G5mcxpJ
我尝试了 sed 命令的所有 3 个建议版本,但没有一个会替换上面的字符串<a href=\"http://www.mydomain.com/tag/
(是的,我在等号后添加了反斜杠)