我们在 app00、app01 等服务器上多次部署了一个应用程序。我需要将所有这些服务器中的单个日志文件复制到我的本地 mac 上,以便我可以执行一些 grepping 和剪切。
我使用 csshX 来查看此文件,但找不到 scp 的等效项。我基本上想要两件事:
我该怎么做呢?
替代标题:什么是符合 POSIX 的正则表达式中的“整理序列”或“整理元素”?
我在 POSIX 规范的第 9.3.5 节中找到了确切的技术定义,作为列表中的第 4 项,但我不太清楚。
我在网上搜索示例和解释,并没有完全空手而归,但绝对没有开悟。
我唯一得到的是,在某些情况下,您可以让您的正则表达式将多个字符视为单个字符,以便进行长度比较和确定“最长匹配”是什么(因为正则表达式是贪婪的并且返回最长的匹配)。
仅此而已吗?我很难看到它的用途,但我怀疑我的理解不完整。 正则表达式的“整理”实际上是什么? 以及如何[[.ch.]]在POSIX规范的例子,涉及到这个?
在 的底部man pcregrep,有一条消息:
SEE ALSO
pcrepattern(3), pcresyntax(3), pcretest(1).
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试查看时,man pcresyntax我得到:
$ man pcresyntax
No manual entry for pcresyntax
$ man 3 pcresyntax
No entry for pcresyntax in section 3 of the manual
$ man -k pcre
pcre-config (1) - program to return PCRE configuration
pcregrep (1) - a grep with Perl-compatible regular expressions
pcre_table (5) - format of Postfix PCRE tables
pcretest (1) - a program for testing Perl-compatible regular expressions
Run Code Online (Sandbox Code Playgroud)
我试过yum info pcresyntax,甚至 …
见下面的例子:
$ ls -1p
appledir/
applefile
orangedir/
orangefile
$ find . -type f -name apple\*
./applefile
$ find . -type f -name orange\*
./orangefile
$ find . -type f -name apple\* -o -name orange\*
./applefile
./orangedir
./orangefile
$ find . -type f \( -name apple\* -o -name orange\* \)
./applefile
./orangefile
$
Run Code Online (Sandbox Code Playgroud)
我惊讶地发现我需要括号才能按预期工作;显然,我还没有内化find评估其论点的优先规则。
我如何轻松预测何时需要以及何时不需要使用括号来明确地对find初选进行分组?
换句话说,我可以想象在给它的命令中find 插入括号的规则是什么,这将使我能够准确预测它将如何评估未分组的表达式?
有没有一种很好的干净的传统方法来做到这一点?
例如,如果某个目录中有任何“.gz”文件,我想解压缩它们。但如果没有,我不想看到任何错误。
如果我使用gzip -d /mydir/*.gz,我会收到错误消息:
gzip: /mydir/*.gz: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我先shopt -s nullglob然后gzip -d /mydir/*.gz,我会得到以下信息:
gzip: compressed data not read from a terminal. Use -f to force decompression.
For help, type: gzip -h
Run Code Online (Sandbox Code Playgroud)
我有一种我知道可行的方法,我将其作为答案发布。我想知道是否有更好/更清洁的方法。
POSIX 兼容性是一个奖励,但不是必需的。
真的,我只是混淆了几个术语,其中一些可能是同义词:
我想完全理解这些术语,我们将不胜感激。但是,我的直接问题是:
我喜欢在将多个文件列为 vim 命令的参数时获得的文件之间切换的方法。然而,有时我在编辑会话中,我意识到我也想编辑另一个文件,使用相同的宏、寄存器等,而不结束编辑会话。如何从 vim 中打开另一个文件,:n并:prev允许我在新文件之间切换?
如何打印$myvar填充以使其位于终端的中心,并且任一侧都=位于屏幕的边缘?
该站点上的许多答案和评论都提到通常应避免eval在 shell 脚本中使用。这些评论通常是针对初学者的。
我已经看到提到安全问题和健壮性,但很少有例子。
我已经明白命令是什么,以及如何使用它eval。但是,那里给出的答案仅简要提及使用eval. 值得注意的是,每个答案都指出这eval可能是一个主要的安全漏洞,但大多数只是将这一事实作为结束语而没有详细说明。这似乎值得进一步考虑,实际上是它自己的问题。
为什么是用eval一个坏主意?
当将它适当地使用?
是否有任何指导方针可以完全安全地使用它,或者它总是不可避免地存在安全漏洞?
编辑:这篇文章是我在发布这个问题时实际寻找的那种规范参考(答案)。任何滥用的人eval都可以指向此参考。
I know the -v switch can be used to awk on the command line to set the value for a variable.
Is there any way to set values for awk associative array elements on the command line?
Something like:
awk -v myarray[index]=value -v myarray["index two"]="value two" 'BEGIN {...}'
Run Code Online (Sandbox Code Playgroud) 我正在运行 Debian 8 x64 并且仍在学习它。我在 Debian 和 Ubuntu 系统上反复遇到的令人困惑的事情之一是似乎有两种运行和管理服务的方式:
servicesystemctl我已经通读了systemd (systemctl)上的 Debian 页面以及诸如systemd 如何使用 /etc/init.d 脚本之类的问题?
据我目前所知,如今许多 Linux 发行版,包括 Debian 和 Ubuntu,正在摆脱旧的 SysV(系统五)并采用systemd。
我可以看到 my/sbin/init是到/lib/systemd/systemd.
问题是:
service) 还在?service或我应该坚持使用systemctl?