小编Ste*_*ski的帖子

与正确的IPv6地址匹配的正则表达式

我在编写匹配有效IPv6地址的正则表达式时遇到问题,包括压缩形式的那些(::从每个字节对中省略或前导零).

有人可以建议一个符合要求的正则表达式吗?

我正在考虑扩展每个字节对,并将结果与​​更简单的正则表达式进行匹配.

regex networking ipv6

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

如何在颠覆中比较分支与主干?

在Subversion中,我使用trunk创建了一个分支svn copy.根据SVN 1.5手册,"这是"标记"存储库中的修订版的最简单方法 - 只需将该版本(通常是HEAD)复制到您的标记目录中."

svn copy file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl
Run Code Online (Sandbox Code Playgroud)

然后,我对stefanl分支进行了修改.我想将我的更改提交到主干,但在我这样做之前,我希望看到更改的差异.

如何将'stefanl'分支与'trunk'分支区分开来?我试过了svn diff,但它没有提供太多信息:

% svn diff file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
   Reverse-merged /trunk:r1699-1870
Run Code Online (Sandbox Code Playgroud)

svn

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

我可以授予对带有前缀外卡的数据库的访问权限吗?

我可以GRANT ALL PRIVILEGES ON a*.* TO 'my_user'@'%' WITH GRANT OPTION;吗?

我只希望用户只能访问以"my_prefix_"开头的所有数据库,但不能访问"mysql".

mysql

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

如何将Perl单行转换为完整脚本?

我在网上发现了很多Perl单行.有时我想将这些单行转换成脚本,否则我会忘记单行的语法.

例如,我正在使用以下命令(来自nagios.com):

tail -f /var/log/nagios/nagios.log | perl -pe 's/(\d+)/localtime($1)/e'
Run Code Online (Sandbox Code Playgroud)

我要用这样的东西替换它:

tail -f /var/log/nagios/nagios.log | ~/bin/nagiostime.pl
Run Code Online (Sandbox Code Playgroud)

但是,我无法找出将这些内容快速抛入脚本的最佳方法.有没有人能够快速将这些单行内容放入Bash或Perl脚本中?

perl command-line

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

将STDOUT和STDERR写入日志文件,也将STDERR写入屏幕

我想运行几个命令,并将所有输出捕获到日志文件.我还想将任何错误打印到屏幕上(或者可选地将输出邮寄给某人).

这是一个例子.以下命令将运行三个命令,并将所有输出(STDOUT和STDERR)写入单个日志文件中.

{ command1 && command2 && command3 ; } > logfile.log 2>&1
Run Code Online (Sandbox Code Playgroud)

这是我想要对这些命令的输出做的事情:

  • 所有命令的STDERR和STDOUT都会转到日志文件中,以防我以后需要它 - 除非有问题,否则我通常不会查看.
  • 将STDERR打印到屏幕(或者可选地,管道到/ bin/mail),以便任何错误突出并且不会被忽略.
  • 如果返回代码仍然可用,那将是很好的,这样我就可以做一些错误处理.如果出现错误,也许我想发送电子邮件,如下所示:

    {command1 && command2 && command3; }> logfile.log 2>&1 || mailx -s"有一个错误"stefanl@example.org

我遇到的问题是STDERR在I/O重定向期间丢失了上下文.'2>&1'会将STDERR转换为STDOUT,因此如果我执行2> error.log则无法查看错误

这里有几个多汁的例子.让我假装我正在运行一些熟悉的构建命令,但我不希望整个构建因为一个错误而停止,所以我使用'--keep-going'标志.

{ ./configure && make --keep-going && make install ; } > build.log 2>&1
Run Code Online (Sandbox Code Playgroud)

或者,这是一个简单的(也许是草率的)构建和部署脚本,它将在发生错误时继续运行.

{ ./configure && make --keep-going && make install && rsync -av --keep-going /foo devhost:/foo} > build-and-deploy.log 2>&1
Run Code Online (Sandbox Code Playgroud)

我认为我想要的是某种Bash I/O重定向,但我无法解决这个问题.

unix bash shell

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

Bourne shell:强制STDOUT到STDERR

我正在创建一个Subversion post-commit钩子.我需要强制将一个命令的输出强制转换为STDERR,这样后提交挂钩会将消息封送回客户端.

如何强制STDOUT到STDERR?

在此简化示例中,文件foo存在,但bar不存在.

# touch foo
# ls foo bar
ls: bar: No such file or directory
foo
Run Code Online (Sandbox Code Playgroud)

我想将STDOUT发送给STDERR.我以为我可以这样做>&2,但它似乎没有起作用.

我期待以下示例将STDOUT重定向到STDERR,这/tmp/test将包含命令的输出和错误.但相反,似乎STDOUT永远不会重定向到STDERR,因此/tmp/test只包含命令的错误.

# ls foo bar >&2 2>/tmp/test
foo
# cat /tmp/test
ls: bar: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

我在CentOS,Ubuntu,FreeBSD和MacOSX上尝试了上面的例子.

shell sh

3
推荐指数
1
解决办法
2320
查看次数

标签 统计

shell ×2

bash ×1

command-line ×1

ipv6 ×1

mysql ×1

networking ×1

perl ×1

regex ×1

sh ×1

svn ×1

unix ×1