shell脚本查找5个最新的.jar文件,将它们呈现给用户,使用ssh进行输入和复制



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

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

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

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

ssh user@host查找 -name 'prop*.jar' -printf '%C@ %p' |排序 -RN |头 -n 5

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

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

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

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

但最初的问题仍然存在。有什么帮助:(

"find"方法本可以奏效; 只是命令行用法是错误的 - 它缺少第一个谓词arg"-name"之前的目录路径。

您有:

find -name 'prop*.jar' -printf '%C@ %pn'

您需要:

find . -name 'prop*.jar' -printf '%C@ %pn'

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

最新更新