虽然我几乎可以肯定这已被覆盖,但我似乎无法找到任何具体的内容.当我继续学习bash的旅程时,我一直在找到我感到困惑的部分,为什么事情会像他们那样发生.
在字符串中搜索和替换或仅匹配子字符串很可能是编写脚本时首先要做的事情之一.但是,尝试坚持使用单一语言或一组工具很难在bash中完成,因为您可以通过多种方式解决大多数问题.我正尽力用bash保持尽可能低的水平.我遇到了一个障碍,我需要有人向我解释.
在bash中使用匹配进行子字符串搜索会根据我使用的正则表达式给出不同的结果,我不知道为什么.
#!/bin/bash
Stext="Hallo World"
echo `expr "$Stext" : '^\(.[a-z]*\)'` # Hallo
echo `expr "$Stext" : '.*World'` # 11
Run Code Online (Sandbox Code Playgroud)
我认为,虽然两者都在搜索一个单词,但它们都没有返回它们找到的内容.为什么?
现在在你想到之前,"这已经完成了"请继续阅读.
像大多数尝试执行查找bash脚本的人一样,你最终会将脚本硬编码为单行命令,但最终会在接下来的几个月/几年内编辑这个内容,所以你希望最后你做得对第一次.
我现在正在编写一个小备份程序来备份目录并需要找到它们,而不是需要排除的Directorie列表.说起来容易做起来难.让我开始吧:
#!/bin/bash
BasePath="/home/adesso/baldar"
declare -a Iggy
Iggy=( "/cgi-bin"
"/tmp"
"/test"
"/html"
"/icons" )
IggySubdomains=$(printf ",%s" "${Iggy[@]}")
IggySubdomains=${IggySubdomains:1}
echo $IggySubdomains
exit 0
Run Code Online (Sandbox Code Playgroud)
现在在这结束时你得到/ cgi-bin,/ tmp,/ test,/ html,/ icons 这证明了这个概念有效,但是现在为了更进一步,我需要使用find来搜索BasePath并搜索所有子目录只有一个级别,并排除数组中的子目录列表...
如果我手动输入,它将是:
find /var/www/* \( -path '*/cgi-bin' -o -path '*/tmp' -o -path '*/test' -o -path '*/html' -o -path '*/icons' \) -prune -type d
Run Code Online (Sandbox Code Playgroud)
我是否应该想循环到每个子目录并做同样的事情......我希望你明白我的观点.
所以我想要做的似乎是可能的,但我有一点问题,printf",%s"不喜欢我使用所有这些find -path或-o选项.这是否意味着我必须再次使用eval?
我试图在这里使用bash的功能,而不是一些for循环.任何建设性的意见将不胜感激.
我遇到了一个我似乎无法解释的 CSR 生成问题,并且想知道是否有人可以帮助我执行命令,或者告诉我我正在生成什么。
我认为我正在生成 PEM 格式的 CRT 证书,但似乎我的密钥不是 PEM 格式!?
这就是我所做的,以及我得到的。我创建了一个 CSR:
openssl req -nodes -new -newkey rsa:2048 -sha256 -out test.csr
这会生成 2 个文件: privkey.pem和test.csr
现在,当我尝试更新某些服务器时,他们抱怨我的私钥不是 PEM 格式。nginx 和 apache 似乎对我的密钥很满意。
当我使用以下方法转换密钥时:
openssl rsa -in privkey.pem -out privkey.rsa.pem
有用 !?!
vimdiff 直观地显示了文件中的差异,可以看到不仅标题不同,而且内容也发生了变化(前 4 个字符之后)
因此我的问题
即使我指定不在创建行中使用 DER,密钥是否以 DER-PEM 格式创建?