我正在尝试创建一个执行以下任务的 shell 脚本:
- 从 Linux Box
- A 连接到 Linux Box B
- 获取最新 5 个道具.jar文件的列表
- 将此列表显示给序列号为 1 到 5 的用户,并要求用户输入
- 用户可以输入从1到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'
正如其他人在评论中指出的那样,您仍然可能需要双重逃避所有内容。