繁体   English   中英

如何在包含正则表达式的命令中使用ssh?

[英]How to use ssh with command containing regex?

例如,我有一个目录:/ full / path / to / your / dir,其中包含以下文件:

$ls /full/path/to/your/dir 
/full/path/to/your/dir/test.1.log.gz
/full/path/to/your/dir/test.2.log.gz
/full/path/to/your/dir/test.3.log.gz

如果我直接在目标主机上运行cmd,它将打印结果而不会出现错误:

$ls /full/path/to/your/dir/test.!(3).log*
/full/path/to/your/dir/test.1.log.gz
/full/path/to/your/dir/test.2.log.gz

但如果我通过ssh在另一台主机上运行到目标主机执行,如:

$ssh myself@hostname "ls /full/path/to/your/dir/test.!(3).log*"
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `ls /full/path/to/your/dir/test.!(3).log*'

另外,我试过以下:

$ssh myself@hostname "ls /full/path/to/your/dir/test.'!(3)'.log*"
ls: /full/path/to/your/dir/test.!(3).log*:  No such file or directory

任何人都可以帮忙告诉如何更正cmd?

您正在尝试使用扩展模式匹配功能,必须首先启用此处此处,这可以通过shopt -s extglob启用

你能做的是:

ssh myself@hostname 'ls | grep -v test\.\(3\)\.log$'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM