1

我正在尝试创建一个执行以下任务的 shell 脚本:

  1. 从 Linux Box A 连接到 Linux Box B
  2. 获取最新的 5 个 prop.jar 文件列表
  3. 将此列表以序列号 1 到 5 呈现给用户并要求用户输入
  4. 用户可以输入从 1 到 5 的任何数字。对于任何其他数字,应显示错误
  5. 一旦用户输入正确的数字,这个 jar 文件应该从 B 复制到 A

由于我是 shell 脚本的新手,所以我的速度有点慢。我学到的是:

  • 要从盒子 A 连接到盒子 B,我将使用 ssh
  • 我从我的 shell 脚本中运行了一个命令:ssh user@host find -name 'prop*.jar'这个命令给了我所需文件的列表
  • 但是,当我尝试命令时:

ssh user@host find -name 'prop*.jar' -printf '%C@ %p\n' | 排序-rn | 头 -n 5

   我收到错误- 查找:路径必须在表达式之前:%pn

我哪里错了。我用谷歌搜索并尝试了许多变体,但 shell 脚本仍然抛出这个错误。我不会询问其余步骤的答案,因为我还没有尝试过。但可以肯定的是,这一步已经消耗了我。

编辑: 我刚刚想出了如何从远程框 B 复制到框 A:

  • scp -o StrictHostKeyChecking=no [[user@]from-host:]source-file [[user@]to-host:][destination-file]

但原来的问题仍然存在....任何帮助:(

4

1 回答 1

0

“查找”方法可能有效;只是命令行使用错误-它缺少第一个谓词arg“-name”之前的目录路径。

你有过:

find -name 'prop*.jar' -printf '%C@ %p\n'

你需要:

find . -name 'prop*.jar' -printf '%C@ %p\n'

正如其他人在评论中指出的那样,您仍然可能需要双重转义所有内容。

于 2014-04-02T01:31:53.113 回答