红联Linux门户
Linux帮助

向远程 Shell 传递通配符

发布时间:2006-10-30 10:18:54来源:红联作者:莫奕
假设您需要列出远程 home 目录中所有的 C 源文件。在本地的情况下,您可能会输入像 ls -l *.c 这样的命令,所以您可以在 ssh 中尝试该方法:
可能会出现两种情况:如果在本地计算机的当前工作目录中不存在任何 C 文件,那么 Shell 将返回 zsh: no matches found: *.c;或者,如果当前工作目录中存在一些 C 文件,而它们在远程计算机的 home 目录中却不存在,那么远程计算机的 Shell 可能会返回 ls: whosit.c: No such file or directory。您是不是被弄糊涂了?
问题在于,在发送 ssh 命令之前,本地 Shell 将首先展开 通配符 *。而您所希望的是,在远程系统中展开这个 *。
要实现这一点,您必须阻止本地 Shell 对通配符进行解释(前面曾出现过一次这样的情况)。您可以将 * 放到单引号中,或使用反斜杠 (\) 对星号进行转义。这样一来,会将星号作为常规字符传递到远程 Shell,并在远程计算机的上下文中对其进行解释。
这里有两种不同的方法,可以根据实际情况选择使用合适的方法
文章评论

共有 0 条评论